6-12 按等級統計學生成績 (20分)
本題要求實現一個根據學生成績設置其等級,並統計不及格人數的簡單函數。
函數接口定義:
int set_grade( struct student *p, int n );
其中p
是指向學生信息的結構體數組的指針,該結構體的定義為:
struct student{ int num; char name[20]; int score; char grade; };
n
是數組元素個數。學號num
、姓名name
和成績score
均是已經存儲好的。set_grade
函數需要根據學生的成績score
設置其等級grade
。等級設置:85-100為A,70-84為B,60-69為C,0-59為D。同時,set_grade
還需要返回不及格的人數。
裁判測試程序樣例:
#include <stdio.h> #define MAXN 10 struct student{ int num; char name[20]; int score; char grade; }; int set_grade( struct student *p, int n ); int main() { struct student stu[MAXN], *ptr; int n, i, count; ptr = stu; scanf("%d\n", &n); for(i = 0; i < n; i++){ scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score); } count = set_grade(ptr, n); printf("The count for failed (<60): %d\n", count); printf("The grades:\n"); for(i = 0; i < n; i++) printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade); return 0; } /* 你的代碼將被嵌在這里 */
輸入樣例:
10
31001 annie 85
31002 bonny 75
31003 carol 70
31004 dan 84
31005 susan 90
31006 paul 69
31007 pam 60
31008 apple 50
31009 nancy 100
31010 bob 78
輸出樣例:
The count for failed (<60): 1
The grades:
31001 annie A
31002 bonny B
31003 carol B
31004 dan B
31005 susan A
31006 paul C
31007 pam C
31008 apple D
31009 nancy A
31010 bob B
int set_grade( struct student *p, int n )
{
int i;
int count=0;
for(i=0;i<n;i++)
{
if(p[i].score>=85&&p[i].score<=100)
p[i].grade='A';
else
if(p[i].score>=70&&p[i].score<=84)
p[i].grade='B';
else
if(p[i].score>=60&&p[i].score<=69)
p[i].grade='C';
else
{
p[i].grade='D';
count++;
}
}
return count;
}