我有一项任务是输入一些学生的一些信息并以报告的形式导出
#include <stdio.h>
#define MAX 1000
typedef struct
{
char id[6];
char name[80];
float grade;
char classassessment;
} exam;
void clear_buffer()
{
int ch;
while ((ch = getchar()) != '\n' && ch != EOF)
;
}
char assess(float a)
{
if (9 <= a && a <= 10)
return 'A';
else if (8 <= a && a < 9)
return 'B';
else if (6.5 <= a && a < 8)
return 'C';
else
return 'D';
}
int main()
{
char result[MAX];
exam student[MAX];
int n, i=0;
printf("The number of students: ");
scanf("%d", &n);
clear_buffer();
for (i = 0; i < n; i++)
{
printf("Enter student %d ID: ", i + 1);
scanf("%s", student[i].id);
clear_buffer();
printf("Enter this student name: ");
gets(student[i].name);
printf("Enter this student's grade: ");
scanf("%f", &student[i].grade);
clear_buffer();
result[i] = assess(student[i].grade);
}
for(i=0; i<n; i++)
{
printf("%d\t%s\t\t\t%s\t\t%c\n", i+1, student[i].id, student[i].name, result[i]);
}
return 0;
}
编译后,您可以看到student[i].id
同时具有ID和名称,而student[i].name
仍具有刚刚输入的学生的姓名。我无法解释为什么会出现此错误。