//为什么输出时候性别输出的时候,会出现第三个打印输出显示不出来? #include"stdio.h" #define M 6 #define N 4 typedef struct{ char num[11]; char name[10]; char sex[3]; float score[M]; float total; }student; int main() { student sw[N]; int i,j; printf("输入学生的学号(依次输入)\n"); for(i=0;i<3;i++) { gets(sw[i].num); } printf("学号输入完成!请输入姓名\n"); for(i=0;i<3;i++) { gets(sw[i].name); } printf("姓名输入完成!请输入性别(F or M)\n"); for(i=0;i<3;i++) { gets(sw[i].sex); } printf("%s,%s,%s\n",sw[0].sex,sw[1].sex,sw[2].sex); printf("性别输入完成!请分别输入分数\n"); for(i=0;i<3;i++) { for(j=0;j<=5;j++) { scanf("%f",&sw[i].score[j]); } printf("第%d名学生的成绩全部输入完成,NEXT\n",i+1); } printf("三名学生的全部信息输入完成!\n"); for(i=0;i<3;i++) { for(j=0;j<6;j++) { sw[i].total+=sw[i].score[j]; } } for(i=0;i<N-2;i++) { for(j=0;j<N-2-i;j++) { if(sw[j].total<sw[j+1].total) { sw[3]=sw[j]; sw[j]=sw[j+1]; sw[j+1]=sw[3]; } } } printf("\n\t\t|--------------------------------------"); printf("-----------------------------------------|\n"); printf("\t\t|名次| 学 号 | 姓 名 |性 别| c 程 "); printf("| 体育 |英 语 |高 数|近代史| 导论 | 总分 |\n"); for(i=0;i<3;i++) { printf("\t\t|%4d|%10s|%7s ",i+1,sw[i].num,sw[i].name);//名词,学号 ,姓名 if(sw[i].sex[0]=='W'||sw[i].sex[0]=='w') {printf("| 男 ");} //性别 else if(sw[i].sex[0]=='F'||sw[i].sex[0]=='f') {printf("| 女 ");}//性别 else {printf("| ");} //性别 for(j=0;j<6;j++) { printf("|%6.1f",sw[i].score[j]);//各科成绩 } printf("|%6.1f|\n",sw[i].total);//总分 printf("\t\t|--------------------------------------"); printf("-----------------------------------------|\n"); } return 0; }
慕粉1600176492