不能输出字符,

#include<stdio.h>
struct student
{
int num;
char name[4000];
float score;
};
void main()
{
struct student stu[3];
int i,j,b;
loop: for(i=0;i<3;i++)
{
printf("请依次输入学生的学号,姓名,数学成绩:\n");
scanf("%d%s%f",&stu[i].num,&stu[i].name,&stu[i].score);
}
printf("学号 姓名 数学成绩\n");

i=0;
for( j=1;j<3;j++)
{

if(stu[i].score<stu[j].score)
{
strcpy(stu[i].name,stu[j].name);//不能输出字符(姓名),其他都没问题
stu[i].num=stu[j].num;
stu[i].score=stu[j].score;
}
}
printf("%d %s %f\n",stu[i].num,stu[j].name,stu[i].score);
goto loop;
}

你的输入 char name[4000]不能当作字符串进行每个字符的输入。应该用for循环。请参考。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-02
关于字符串数组:只能对元素赋值,不能对数组赋值。
stu[i].name是一个数组的名字,不是元素,不能被赋值。没有值,当然不能输出。
第2个回答  推荐于2016-03-16
#include<stdio.h>
#include<string.h> //strcpy 头文件
struct student
{
int num;
char name[4000];
float score;
};
void main()
{
struct student stu[3];
int i,j;
loop: for(i=0;i<3;i++)
{
printf("请依次输入学生的学号,姓名,数学成绩:\n");
scanf("%d%s%f",&stu[i].num,&stu[i].name,&stu[i].score);
}
printf("学号 姓名 数学成绩\n");

i=0;
for( j=1;j<3;j++)
{

if(stu[i].score<stu[j].score)
{
strcpy(stu[i].name,stu[j].name);//不能输出字符(姓名),其他都没问题
stu[i].num=stu[j].num;
stu[i].score=stu[j].score;
}
}
printf("%d %s %f\n",stu[i].num,stu[i].name,stu[i].score); //j改为 i
goto loop;
}本回答被提问者采纳