为什么数不出语文最高分学生名字
程序代码:// 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不能输出学生名字






