以上是我的代码有些混乱,是错的,我的思路是设置两个数组对应各等级和各等级人数,用指针指向存储各等级人数的数组,但是不清楚怎么在函数里面循环增加各等级人数
定义结构体,输入十个学生信息,需要实现统计各等级人数,输出全部学生信息和统计结果、平均成绩
以上是我的代码有些混乱,是错的,我的思路是设置两个数组对应各等级和各等级人数,用指针指向存储各等级人数的数组,但是不清楚怎么在函数里面循环增加各等级人数
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- CSDN专家-天际的海浪 2021-12-20 15:17关注
count数组元素应该初始赋值为0
count[5] = {0}struct Student SetGrade(struct Student *p,int *d,double *q) //q是指针前面要加* SetGrade(s,count,&auer);//调用时auer前面要加&
你题目的解答代码如下:
#include <stdio.h> #define N 10 struct Student { int num; char name[20]; int score; char grade; }; int main() { int i, count[5] = {0}; char g[5] = {'A', 'B', 'C', 'D', 'E'}; double auer; struct Student s[N]; struct Student SetGrade(struct Student * p, int *d, double *q); //q是指针前面要加* printf("请输入%d个学生的学号、姓名和成绩:\n", N); for (i = 0; i < N; i++) { printf("No%d:", i + 1); scanf("%d%s%d", &s[i].num, s[i].name, &s[i].score); } SetGrade(s, count, &auer); //调用时auer前面要加& for (i = 0; i < N; i++) printf("%4d%10s%6d%6c\n", s[i].num, s[i].name, s[i].score, s[i].grade); printf("各等级人数为:\n"); for (i = 0; i < 5; i++) printf("%c:%d\n", g[i], count[i]); printf("平均成绩为%.2f\n", auer); return 0; } struct Student SetGrade(struct Student *p, int *d, double *q) //q是指针前面要加* { int i, sum = 0; for (i = 0; i < N; i++, p++) { if (p->score >= 90) { p->grade = 'A'; (*d)++; //*d要加括号先计算 } else if (p->score >= 80) { p->grade = 'B'; (*(d + 1))++; } else if (p->score >= 70) { p->grade = 'C'; (*(d + 2))++; } else if (p->score >= 60) { p->grade = 'D'; (*(d + 3))++; } else { p->grade = 'E'; (*(d + 4))++; } sum += p->score;//p已经++了,不用p+i } *q = 1.0 * sum / N; }
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 关于#python#的问题:我知道这个问题对你们来说肯定so easy
- ¥15 wpf datagrid如何实现多层表头
- ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
- ¥20 网站后台使用极速模式非常的卡
- ¥20 Keil uVision5创建project没反应
- ¥15 mmseqs内存报错
- ¥15 vika文档如何与obsidian同步
- ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
- ¥15 陆空双模式无人机飞控设置
- ¥15 sentaurus lithography