输入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-03-24 22:41:32 浏览: 88
这是一道关于数组和结构体的 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;
struct student *q = p + n;
while ( p < q ){
if ( p->score >= 80 ) cnt_a++;
else if ( p->score >= 60 ) cnt_p++;
else cnt_f++;
p++;
}
printf("%d %d %d\n", cnt_a, cnt_p, cnt_f);
}
```
在程序中,首先定义了一个结构体 `student`,包括了学生姓名和成绩两个变量。然后通过数组存储了所有学生的信息。接着调用 `cnt_score()` 函数,对学生的成绩进行分段统计。在函数中,使用指针 `p` 遍历学生数组,根据学生的成绩判断其分数段,最后输出结果。注意在函数中还定义了一个指针 `q`,指向数组末尾,这样可以方便地遍历整个数组。
阅读全文