鱼C论坛

 找回密码
 立即注册
查看: 1857|回复: 1

[已解决]C语言问题!!!求助!!!

[复制链接]
发表于 2020-3-24 16:04:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <stdio.h>
  2. struct student
  3. {
  4.         int num;
  5.         char name[20];
  6.         float score1;
  7.         float score2;
  8.         float score3;
  9.         float aver;
  10. };
  11. void Find(struct student myClass[5],int *high,float *aver);
  12. int main(void)
  13. {
  14.         int high;  /* high记录平均分最高的学生的序号 */
  15. int i,aver=0;
  16. struct student myClass[5];
  17. printf("Please input students  info:Num Name score1 score2 score3\n");
  18. for(i=0;i<5;i++)
  19. {
  20.         scanf("%d %s %d %d %d",&myClass[i].num,myClass[i].name,&myClass[i].score1,&myClass[i].score2,&myClass[i].score3);
  21. }
  22. Find(myClass,&high,&aver);
  23.         printf("\nThe Highest is %s(%d)\nscore1=%.2f  score2=%.2f  score3=%.2f  aver=%.2f\n",
  24.                 myClass[high].name, myClass[high].num,
  25.                 myClass[high].score1, myClass[high].score2, myClass[high].score3, myClass[high].aver);

  26.         return 0;
  27. }

  28. void Find(struct student myClass[5],int *high,float *aver)
  29. {
  30.         float sum=0;
  31.         int i;
  32.         for(i=0;i<5;i++)
  33.         {
  34.                 sum=sum+myClass[i].score1+myClass[i].score2+myClass[i].score3;
  35.                 if((sum/6.0)>sum)
  36.                 {
  37.                         *aver=(float)(sum/6);
  38.                         *high=i;
  39.                 }
  40.         }
  41. }
复制代码
代码如上,问题如下:
有五个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入五个学生的数据,并计算每个学生的平均成绩,显示最高平均分的学生的信息(用结构体编程),有没有大佬告诉我这段代码到底错哪了?程序始终运行不起来

最佳答案
2020-3-24 16:08:39
  1. #include <stdio.h>
  2. struct Student
  3. {
  4.   int num;
  5.   char name[20];
  6.   float score[3];
  7.   float aver;
  8. };//这里要分号的  把这个结构体放到main函数之前
  9. int main()
  10. {
  11. void input(Student stu[]);//这3行放到结构体Student后面  且可以不加关键词struct
  12. Student max(Student stu[]);
  13. void print(Student stu);
  14. Student stu[5],*p=stu;//这里可以不要strcut
  15. input(p);
  16. print(max(p));
  17. return 0;
  18. }
  19. void input(Student stu[])//可以不加关键词struct
  20. {
  21. int i,k;
  22. printf("请输入学生姓名和学号,三门课成绩\n");
  23. for(i=0;i<5;i++)
  24. {
  25.   scanf("%s",stu[i].name);//用scanf更好  不然每次输入完姓名后就要按回车键
  26.   scanf("%d",&stu[i].num);
  27. for(k=0;k<3;k++)
  28. {
  29.   scanf("%f",&stu[i].score[k]);//要加取地址符号
  30. }
  31. stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
  32. }
  33. }
  34. Student max(Student stu[])
  35. {
  36. int i,m;
  37. for(i=0;i<5;i++)
  38. {
  39.   if(stu[i].aver>stu[m].aver)
  40.   {
  41.    m=i;
  42.   }
  43. }
  44. printf("\n成绩最高的学生是:\n");
  45. printf("平均成绩:%6.2f\n",stu[m].aver);//平均成绩在输出函数中是输不出的因为输出函数中没有m的值
  46. return stu[m];
  47. }
  48. void print( Student stu)
  49. {
  50. 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]);
  51. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-24 16:08:39 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>
  2. struct Student
  3. {
  4.   int num;
  5.   char name[20];
  6.   float score[3];
  7.   float aver;
  8. };//这里要分号的  把这个结构体放到main函数之前
  9. int main()
  10. {
  11. void input(Student stu[]);//这3行放到结构体Student后面  且可以不加关键词struct
  12. Student max(Student stu[]);
  13. void print(Student stu);
  14. Student stu[5],*p=stu;//这里可以不要strcut
  15. input(p);
  16. print(max(p));
  17. return 0;
  18. }
  19. void input(Student stu[])//可以不加关键词struct
  20. {
  21. int i,k;
  22. printf("请输入学生姓名和学号,三门课成绩\n");
  23. for(i=0;i<5;i++)
  24. {
  25.   scanf("%s",stu[i].name);//用scanf更好  不然每次输入完姓名后就要按回车键
  26.   scanf("%d",&stu[i].num);
  27. for(k=0;k<3;k++)
  28. {
  29.   scanf("%f",&stu[i].score[k]);//要加取地址符号
  30. }
  31. stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
  32. }
  33. }
  34. Student max(Student stu[])
  35. {
  36. int i,m;
  37. for(i=0;i<5;i++)
  38. {
  39.   if(stu[i].aver>stu[m].aver)
  40.   {
  41.    m=i;
  42.   }
  43. }
  44. printf("\n成绩最高的学生是:\n");
  45. printf("平均成绩:%6.2f\n",stu[m].aver);//平均成绩在输出函数中是输不出的因为输出函数中没有m的值
  46. return stu[m];
  47. }
  48. void print( Student stu)
  49. {
  50. 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]);
  51. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 21:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表