输入n个学生的姓名和百分制成绩,分段统计学生的成绩。 输入格式: 输入在第一行中给出正整数N(1≤n≤100)。随后N行,每行给出一位学生的姓名和成绩,中间以空格分隔。 输出格式: 在一行中顺序输出成绩为80-100分、60-79分、0-59分的学生人数,中间以空格分隔。 输入样例: 5 huanglan 83 wanghai 76 shenqiang 50 zhangfeng 95 zhangmeng 60 输出样例: 2 2 1 #include<stdio.h> #define MAXN 100 struct student{ char name[20]; int score; }; void cnt_score( struct student *p, int n ); int main() { int i, n; struct student stu[MAXN]; scanf("%d", &n); for(i = 0; i < n; i++){ scanf("%s%d", stu[i].name, &stu[i].score); } cnt_score(stu, n); return 0; } void cnt_score(struct student *p, int n) { int cnt_a = 0, cnt_p = 0, cnt_f = 0; while ( p <= q ){ if ( ) cnt_a++; else if ( ) cnt_p++; else cnt_f++; p++; } printf("%d %d %d\n", cnt_a, cnt_p, cnt_f); }
时间: 2024-01-14 19:02:19 浏览: 70
这是一道C语言的统计成绩题目,可以用一个结构体数组来存储学生的姓名和成绩,然后通过循环遍历数组来统计成绩分段的人数。具体实现可以参考以下代码:
```c
#include<stdio.h>
#define MAXN 100
struct student{
char name[20];
int score;
};
void cnt_score(struct student *p, int n);
int main() {
int i, n;
struct student stu[MAXN];
scanf("%d", &n);
for(i = 0; i < n; i++){
scanf("%s%d", stu[i].name, &stu[i].score);
}
cnt_score(stu, n);
return 0;
}
void cnt_score(struct student *p, int n) {
int cnt_a = 0, cnt_p = 0, cnt_f = 0;
while (p < &p[n]) {
if (p->score >= 80 && p->score <= 100) cnt_a++;
else if (p->score >= 60 && p->score <= 79) cnt_p++;
else cnt_f++;
p++;
}
printf("%d %d %d\n", cnt_a, cnt_p, cnt_f);
}
```
其中,cnt_score函数中的p指向结构体数组的首地址,&p[n]指向结构体数组的末地址,通过遍历数组,统计成绩在不同分段的学生人数。输出结果为80-100分段的人数、60-79分段的人数、0-59分段的人数。
阅读全文