5NYouGuo 发表于 2022-11-28 21:09

谭浩强C语言程序设计(第4四5五版)第9.5题

本帖最后由 5NYouGuo 于 2022-12-10 23:08 编辑

题干:有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。
说明:编译器:notepad++ 5.1.7(大一新生,刚学不是特别熟练,所以代码有啰嗦的地方或者有错误的请自行改正,当然我特别欢迎你评论出我有待提高的地方。)
#include <stdio.h>
struct student
{
      char id;
      char name;
      float yw,math,eng,sum,aver;
}s;
int main()
{
// 算个人的总、平均成绩
      int i;
      for(i = 0;i<10;i++)
      {
                struct student *p;
                p = &s;
                printf("学号、姓名、语数外(以空格分开):");
                scanf("%s %s %f %f %f",s.id,(*p).name,&s.yw,&s.math,&s.eng);
                s.sum = s.yw + s.math + s.eng;
                s.aver = (s.sum) / 3.0;
                printf("学号%s、姓名%s、语数外%.1f\t%.1f\t%.1f总分%.1f平均分%.2f\n",s.id,(*p).name,p->yw,s.math,s.eng,s.sum,s.aver);
                printf("\n");
      }
// 总平均成绩
      float average,sum;
      sum=0;
      for(i=0;i<10;i++)
      {
                sum += s.yw + s.math + s.eng ;
      }
      average = sum / 10.0;
      printf("总平均成绩为:%.3f\n",average);
// 最高平均分
      int j=0;
      for(i=0;i<10;i++)
      {
                if(s.aver>s.aver)
                {
                        j=i;
                }
      }
      printf("最高平均分为:%.2f,学号:%s,姓名:%s,语数外分别:%.1f\t%.1f\t%.1f\t\n",s.aver,s.id,s.name,s.yw,s.math,s.eng);
}

fififi 发表于 2022-11-29 10:42

不错,比我大一时候强多了

看床走不动路 发表于 2022-11-29 10:57

有没有可能三个循环可以合并成一个{:301_1007:}

Aookoo 发表于 2022-11-29 11:21

比我大一厉害{:1_893:}

cloud2010 发表于 2022-11-29 13:00


谭浩强,久远的回忆

vfa 发表于 2022-11-29 14:19

有输入模块,需要对输入项的格式做格式报错判断吧。不然程序直接报错退出了。

5NYouGuo 发表于 2022-11-30 19:23

看床走不动路 发表于 2022-11-29 10:57
有没有可能三个循环可以合并成一个

还不太了解{:1_924:}没认真听课,经常摸鱼... ...

5NYouGuo 发表于 2022-11-30 19:25

vfa 发表于 2022-11-29 14:19
有输入模块,需要对输入项的格式做格式报错判断吧。不然程序直接报错退出了。

还不会了呵呵呵{:1_924:}

5NYouGuo 发表于 2022-11-30 19:33

fififi 发表于 2022-11-29 10:42
不错,比我大一时候强多了

参考了csdn的一篇文章,你过誉了{:1_893:}
页: [1]
查看完整版本: 谭浩强C语言程序设计(第4四5五版)第9.5题