中国女排的艰苦训练:结构体指针传递,问题望帮忙

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 02:19:31
#include<stdio.h>
#include<malloc.h>
struct chengji
{
int cj;
char dj;
};
void dengji(struct chengji *p,int num);
void main()
{
int renshu,i;
struct chengji *nanzu;
//struct chengji *nvzu;
printf("请输入男组人数:");
scanf("%d",&renshu);
nanzu=(struct chengji*)malloc(renshu*sizeof(struct chengji));
printf("请输入男组成绩:\n");
for(i=0;i<renshu;i++)
{
printf("%d号",i+1);
scanf("%d",&(*(nanzu+i)).cj);
}
printf("以下是男组的成绩等级:\n");
dengji(nanzu,renshu);
for(i=0;i<renshu;i++)
{
printf("%d号:%c \n",i+1,(*(nanzu+i)).dj);
}
}
void dengji(struct chengji *p,int num)
{
int i;
int temp;
for(i=0;i<num;i++)
{
temp=(*(P+i)).cj/10;
switch (temp)
{
case 10:
case 9:
(*(P+i)).dj='A';
break;
case 8:
(*(P+i)).dj='B';
break;
case 7:
(*(P+i)).dj='C';
break;
case 6:
(*(P+i)).dj='D';
break
default:
(*(P+i)).dj='E';
break;
}
}
}
编译过不去 ,我也看不太懂E问,应该是说函数内部的‘P’未声明不是合法标签

你函数声明上是小写 p,里面是大写 P
倒数第二个 break 后面缺分号。

另外 (*(p + i)).dj = 'E' 可以写为:

(p + i) -> dj = 'E';

这样清晰得多。

老大,给出错误提示?是编译通不过?还是输出不正确?