为什么数不出语文最高分学生名字
程序代码:
// 2014.12.19.10.52.cpp : 定义控制台应用程序的入口点。 // // 2014.12.18.12.23.cpp : 定义控制台应用程序的入口点。 //当不能进入循环,就逐步检查变量,或输入printf输出变量的值 #include "stdafx.h" #include"string.h" int _tmain(int argc, _TCHAR* argv[]) { printf("欢迎来到学生管理系统"); struct STUDENT //将这个当做一种类型 { char name[50]; int stu[100];//学生人数100 char stun[100][30];//学生姓名 int stuk[4][100];//学生四门功课成绩 }p1; int i=0; int n=0; while(true) { printf("\n请输入要查询的内容"); gets(p1.name);//输入输出结构名+点+结构成员 if (strcmp(p1.name,"input")==0) { while(i<100) { printf("请输入%d学生姓名",i+1); //scanf("%s",p1.stun[i]);用这个会出错,直接跳过这一行 gets(p1.stun[i]); if(strcmp(p1.stun[i]," ")==0) break; printf("输入成绩"); scanf("%d,%d,%d,%d,",&p1.stuk[0][i],&p1.stuk[1][i],&p1.stuk[2][i],&p1.stuk[3][i]); //scanf("\n第%d个学生的语文成绩%d,数学成绩%d,英语成绩%d,计算机成绩%d",&p1.stun[i],&stuk[0][i],&stuk[1][i],&stuk[2][i],&stuk[3][i]); i++; getchar();//接收(消化掉)上一次回车 printf("\n"); } } else if(strcmp(p1.name,"avg")==0) { double sum1=0,sum2=0,sum3=0,sum4=0;//求平均分double就好比较精确,输出符号是g for(n=0;n<i;n++) { sum1=sum1+p1.stuk[0][n]; sum2=sum2+p1.stuk[1][n]; sum3=sum3+p1.stuk[2][n]; sum4=sum4+p1.stuk[3][n]; } printf("语文平均分%g,数学平均分%g,英语平均分%g,计算机平均分%g",sum1/i,sum2/i,sum3/i,sum4/i); } else if(strcmp(p1.name,"list")==0) { printf("%d",n); for(n=0;n<i;n++) { printf("\n第%d个学生的语文成绩%d,数学成绩%d,英语成绩%d,计算机成绩%d",n,p1.stuk[0][n],p1.stuk[1][n],p1.stuk[2][n],p1.stuk[3][n]); } } else if(strcmp(p1.name,"maxmin")==0) { int x; x=0; for(n=0;n<i;n++) { printf("%s",p1.stun[n]);//<font color="#ff0000">a为什么这里却可以输出学生名字</font> x=p1.stuk[0][n]; printf("\n%d\n",x); if(x<p1.stuk[0][i]) x=p1.stuk[0][i]; } printf("\n%d",i); puts(p1.stun[n]);<font color="#ff0000">//1为什么不能输出语文最高分的学生姓</font>名 printf("%s",p1.stun[n]);<font color="#ff0000">//2为什么不能输出语文最高分的学生姓</font>名 printf("\n语文最高分%d,姓名%s",x,p1.stun[n]);<font color="#ff0000">//3为什么不能输出语文最高分的学生姓</font>名 printf("%s",p1.stun[n]);<font color="#ff0000">//4为什么不能输出语文最高分的学生姓</font>名 } else { printf("帮助,input是输入,avg是求平均分,list是列出学生成绩"); } } return 0; }
复制代码printf放在a上面可以输出学生名字,怎么下面放在1,2,3,4不能输出学生名字