|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- struct student
- {
- int num;
- char name[20];
- float score1;
- float score2;
- float score3;
- float aver;
- };
- void Find(struct student myClass[5],int *high,float *aver);
- int main(void)
- {
- int high; /* high记录平均分最高的学生的序号 */
- int i,aver=0;
- struct student myClass[5];
- printf("Please input students info:Num Name score1 score2 score3\n");
- for(i=0;i<5;i++)
- {
- scanf("%d %s %d %d %d",&myClass[i].num,myClass[i].name,&myClass[i].score1,&myClass[i].score2,&myClass[i].score3);
- }
- Find(myClass,&high,&aver);
- printf("\nThe Highest is %s(%d)\nscore1=%.2f score2=%.2f score3=%.2f aver=%.2f\n",
- myClass[high].name, myClass[high].num,
- myClass[high].score1, myClass[high].score2, myClass[high].score3, myClass[high].aver);
- return 0;
- }
- void Find(struct student myClass[5],int *high,float *aver)
- {
- float sum=0;
- int i;
- for(i=0;i<5;i++)
- {
- sum=sum+myClass[i].score1+myClass[i].score2+myClass[i].score3;
- if((sum/6.0)>sum)
- {
- *aver=(float)(sum/6);
- *high=i;
- }
- }
- }
复制代码 代码如上,问题如下:
有五个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入五个学生的数据,并计算每个学生的平均成绩,显示最高平均分的学生的信息(用结构体编程),有没有大佬告诉我这段代码到底错哪了?程序始终运行不起来
- #include <stdio.h>
- struct Student
- {
- int num;
- char name[20];
- float score[3];
- float aver;
- };//这里要分号的 把这个结构体放到main函数之前
- int main()
- {
- void input(Student stu[]);//这3行放到结构体Student后面 且可以不加关键词struct
- Student max(Student stu[]);
- void print(Student stu);
- Student stu[5],*p=stu;//这里可以不要strcut
- input(p);
- print(max(p));
- return 0;
- }
- void input(Student stu[])//可以不加关键词struct
- {
- int i,k;
- printf("请输入学生姓名和学号,三门课成绩\n");
- for(i=0;i<5;i++)
- {
- scanf("%s",stu[i].name);//用scanf更好 不然每次输入完姓名后就要按回车键
- scanf("%d",&stu[i].num);
- for(k=0;k<3;k++)
- {
- scanf("%f",&stu[i].score[k]);//要加取地址符号
- }
- stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
- }
- }
- Student max(Student stu[])
- {
- int i,m;
- for(i=0;i<5;i++)
- {
- if(stu[i].aver>stu[m].aver)
- {
- m=i;
- }
- }
- printf("\n成绩最高的学生是:\n");
- printf("平均成绩:%6.2f\n",stu[m].aver);//平均成绩在输出函数中是输不出的因为输出函数中没有m的值
- return stu[m];
- }
- void print( Student stu)
- {
- printf("学号:%d\n姓名:%s\n三门课成绩:%5.1f%5.1f%5.1f\n",stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2]);
- }
复制代码
|
|