等級別に学生の成績を集計する

2831 ワード

この問題では、学生の成績に基づいて等級を設定し、不合格者数を統計する簡単な関数を実現する必要があります.
関数インタフェースの定義:
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 
#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); 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
", count); printf("The grades:
"); for(i = 0; i < n; i++) printf("%d %s %c
", 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
: 400ms
: 64MB
: 16KB
int set_grade( struct student *p, int n ){
	int count = 0, i;
	for(i = 0;i		if(p->score<60){
			p->grade = 'D';
			count++;
		}
		else if((p->score<70)&&(p->score>=60)){
			p->grade = 'C';
		}
		else if((p->score<85)&&(p->score>=70)){
			p->grade = 'B';
		}
		else{
			p->grade = 'A';
		}
	}
	return count;
}