0037 使用结构体数组存放三个学生的学号、姓名、性别和 三门单科成绩,输出总分最高的学生以及有一科或一科以上不及格的学生的各项数据。
问题描述:
使用结构体数组存放三个学生的学号、姓名、性别和 三门单科成绩,输出总分最高的学生以及有一科或一科以上不及格的学生的各项数据。
代码展示:
1 #include2 struct Student{ 3 int stuNo; //学号 4 char name[20]; //姓名 5 int gender; //性别:0表示男,1表示女 6 int grade[3]; //三科成绩 7 int total; //总分 8 }Stu[3]; 9 int main(){ 10 int i,j; 11 int total; 12 int max = 0; 13 for(i=0; i<3; i++){ //输入学生信息 14 total = 0; 15 printf("请分别输入第%d个学生的信息(学号,姓名,性别,语文成绩,数学成绩,英语成绩):", i+1); 16 scanf("%d %s %d %d %d %d",&Stu[i].stuNo, &Stu[i].name, &Stu[i].gender, &Stu[i].grade[0], &Stu[i].grade[1], &Stu[i].grade[2]); 17 for(j=0; j<3; j++){ 18 total += Stu[i].grade[j]; 19 } 20 Stu[i].total = total; 21 } 22 for(i=1; i<3; i++){ //查找总分最高学生 23 if(Stu[i].total > Stu[max].total){ 24 max = i; 25 } 26 } 27 printf("总分最高的学生的信息如下:\n"); 28 printf("学号:%d,姓名:%s, 性别:%d, 语文成绩:%d, 数学成绩:%d, 英语成绩:%d, 总分:%d\n",Stu[max].stuNo, Stu[max].name, Stu[max].grade, Stu[max].grade[0], Stu[max].grade[1], Stu[max].grade[2], Stu[max].total); 29 for(i=0; i<3; i++){ //查找不及格学生信息 30 for(j=0; j<3; j++){ 31 if(Stu[i].grade[j]<60){ 32 printf("挂科的学生信息:\n"); 33 printf("学号:%d,姓名:%s, 性别:%d, 语文成绩:%d, 数学成绩:%d, 英语成绩:%d, 总分:%d\n",Stu[i].stuNo, Stu[i].name, Stu[i].grade, Stu[i].grade[0], Stu[i].grade[1], Stu[i].grade[2], Stu[i].total); 34 break; 35 } 36 } 37 } 38 return 0; 39 }
运行截图: