按等级统计学生成绩:输入10个学生的学号、姓名和成绩,输出学生的成绩和不及格人数。每个学生的记录包括学号、姓名、成绩和等级,要求定义和调用函数set_grade (),根据学生成绩设置其等级,并统计不及格人数,等级设置:85~100为A,70~84为B,60~69为C,0~59为D。试编写相应程序。
#include<stdio.h>
typedef struct record{
int number;
char name[10];
int score;
char grade;
}Record;
char set_grade(int score );
int main(void){
const int n=3;
Record rec[n];
int i,cnt=0;
/** 输入 */
for(i=0;i<n;i++){
printf("input the info of No.%d\n",i+1);
printf("number:");
scanf("%d",&rec[i].number);
printf("name:");
scanf("%s",&rec[i].name);
printf("score:");
scanf("%d",&rec[i].score);
if(rec[i].score<60)
cnt++;
rec[i].grade = set_grade(rec[i].score);
}
printf("the grade of the students is:\n");
for(i=0;i<n;i++){
printf("%c\n",rec[i].grade);
}
printf("the fail students have %d\n",cnt);
return 0;
}
char set_grade(int score ){
char grade;
if(score>=85 && score<=100){
grade = 'A';
}else if(score>=70 && score<=84){
grade = 'B';
}else if(score>=60 && score<=69){
grade = 'C';
}else{
grade = 'D';
}
return grade;
}
/*设置学生成绩等级并统计不及格人数(结构指针作为函数参数)*/ #include<stdio.h> #define N 10 struct student{ int num; char name[20]; int score; char grade; }; int set_grade(struct student *p); int main(void) { struct student stu[N], *ptr; int i, count; ptr = stu; printf("Input the student's number, name and score: \n"); for(i = 0; i < N; i++){ printf("No %d: ", i+1); /*提示输入第i个同学的信息*/ scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score); } count = set_grade(ptr); printf("The count (<60): %d\n", count); printf("The student grade:\n"); for(i = 0; i < N; i++) printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade); return 0; } int set_grade(struct student *p) { int i, n = 0; for(i = 0; i < N; i++, p++){ if(p->score >= 85) p->grade = 'A'; else if(p->score >= 70) p->grade = 'B'; else if(p->score >= 60) p->grade = 'C'; else{ p->grade = 'D'; n++; } } return n; }