统计计算学生成绩类问题汇总
2018-06-18 04:05:25来源:未知 阅读 ()
(注:暂时先记录这些问题,后期再持续更新)
1,输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计不及格成绩的学生人数。
int count,i,n; //count 为记录不及格成绩的个数 double grade,total; //grade 存放输入的成绩,total保存成绩之和 printf("Enter n:"); scanf("%d",&n); //输入学生人数n total = 0; count = 0; for(i=1;i<=n;i++){ printf("Enter grade #%d:",i); scanf("%lf",&grade); //输入第i个成绩 total = total + grade; if(grade<60){ //统计不及格的学生人数 count++; } } printf("Grade average = %.2f\n",total/n); printf("Number of failures = %d\n",count); return 0;
2,输入一批学生的成绩,以负数作为结束标志,计算平均成绩,并统计不及格人数。
int count,num; //count 为记录不及格成绩的个数;num 为记录输入的个数 double grade,total; //grade 存放输入的成绩,total保存成绩之和 num = 0; total = 0; count = 0; printf("Enter grades:"); scanf("%lf",&grade); while(grade>=0){ total = total+grade; //累加成绩 num++; //计数 if(grade<60) count++; scanf("%lf",&grade); //读入一个新数据,为下次循环做猪呢比 } if(num != 0){ printf("Grade average = %.2f\n",total/num); printf("Number of failures is %d\n",count); } else printf("Grade average is 0\n"); return 0;
3,从输入的n个成绩中选出最高分,用for语句实现。
int i,mark,max,n; printf("Enter n:"); scanf("%d",&n); //输入数据个数 printf("Enter %d marks:",n); scanf("%d",&mark); //读入第一个成绩 max = mark; for(i=1;i<n;i++){ scanf("%d",&mark); if(max<mark) max = mark; } printf("Max = %d\n",max); return 0;
注:若输入的一批以负数结束的成绩中选出最高分,可以用while语句实现。
4,输入n个学生的成绩信息,计算并输出每个学生的个人平均成绩(结构变量作为函数参数)。
struct student{ //学生信息结构定义 int num; //学号 char name[10]; //姓名 int computer,english,math; //三门课程成绩 double average; //个人平均成绩 }; double count_average(struct student s); //函数声明,计算个人平均成绩 int main(void) { int i,n; struct student s1; //定义结构变量 printf("Input n:"); scanf("%d",&n); printf("Input the student's number,name,course scores\n"); for(i=1;i<=n;i++){ printf("No.%d:",i); scanf("%d%s%d%d%d",&s1.num,&s1.name,&s1.math,&s1.english,&s1.computer); s1.average = count_average(s1); //函数调用,结构变量作为函数参数 printf("num:%d,name:%s,average:%.2lf\n",s1.num,s1.name,s1.average); } return 0; } double count_average(struct student s) { return (s.math + s.english + s.computer)/3.0; }
5,输入n(n<50)个学生的成绩信息,按照学生的个人平均成绩从高到低输出他们的信息。
struct student{ //学生信息结构定义 int num; //学号 char name[10]; //姓名 int computer,english,math; //三门课程成绩 double average; //个人平均成绩 }; int main(void) { int i,index,j,n; struct student students[50],temp; //定义结构数组 double count_average(struct student s); /* 输入*/ printf("Input n:"); scanf("%d",&n); for(i=0;i<n;i++){ printf("Input the info of No.%d:\n",i+1); printf("number:"); scanf("%d",&students[i].num); printf("name:"); scanf("%s",&students[i].name); printf("math.score:"); scanf("%s",&students[i].math); printf("english.score:"); scanf("%s",&students[i].english); printf("computer.score:"); scanf("%s",&students[i].computer); students[i].average = count_average(students[i]); } /* 结构数组排序,选择排序法*/ for(i=0;i<n-1;i++){ index = i; for(j=i+1;j<n;j++) if(students[j].average>students[index].average) //比较平均成绩 index = j; temp = students[index]; //交换数组元素 students[index] = students[i]; students[i] = temp; } /* 输出排序后的信息*/ printf("num\tname\taverage\n"); for(i=0;i<n;i++) printf("%d\t%s\t%.2lf\n",students[i].num,students[i].name,students[i].average); return 0; } double count_average(struct student s) { return (s.math + s.english + s.computer)/3.0; }
注:本题中,定义了结构数组students用于存储学生信息,先输入n个学生的基本信息,其中个人平均成绩的计算通过调用函数count_average()实现,然后使用选择排序法根据个人平均成绩从高到低对学生的信息排序,最后按顺序输出结构数组中的数据。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:1013. 识别三角形
下一篇:冒泡排序
- 学生信息管理系统.cpp(大二上) 2020-04-23
- L1-013 计算阶乘和 (10分) 2020-03-24
- L1-012 计算指数 (5分) 2020-03-24
- L1-004 计算摄氏温度 (5分) 2020-03-22
- 一本通1166 求f(x,n) 2020-01-31
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash