1.题目来源
作者: 张泳
单位: 浙江大学
时间限制: 400 ms
内存限制: 64 MB
代码长度限制: 16 KB
2.问题简述
本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。
函数接口定义:
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
还需要返回不及格的人数。
3.源代码
#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 i,count=0;
for(i=0;i<n;i++)
{
if(p[i].score>=0&&p[i].score<60)
{
count++; //记录不及格人数
p[i].grade='D';
}
else if(p[i].score>=60&&p[i].score<70)
p[i].grade='C';
else if(p[i].score>=70&&p[i].score<85)
p[i].grade='B';
else if(p[i].score>=85&&p[i].score<=100)
p[i].grade='A';
else
printf("input error!\n");
}
return count;
}
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;
}
4.运行截图