C语言结构体数组赋值问题

#include<stdio.h>
#define N 10
struct student
{char num[6];
char name[8];
float score[3];
float avr;
}stu[N];

void main()
{int i,j;
for(i=0;i<N;i++)
{printf("input scores of student %d:\n",i+1);
printf("No.:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{printf("score %d:",j+1);
scanf("%f",&stu[i].score[j]);
}
}

没办法完全赋值,两个for循环都无法赋值,请大家帮忙看看.
问题补充:运行不了,我记得只有链表才要申请空间,数组不需要吧,况且我定义的是全局变量,应该不需要再定义啊,我把float 该为int,就可以执行了,为什么

?#include<stdio.h>
#define N 5
struct student
{char num[6];
char name[8];
int score[3];
float avr;
}stu[N];

void main()
{int i,j;
for(i=0;i<N;i++)
{printf("input scores of student %d:\n",i+1);
printf("No.:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
getchar();
for(j=0;j<3;j++)
{printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);
}
}

}
for( j = 0; j < 3; j++ ) {
printf( "score %d: ", j+1 );
scanf("%f",&stu[i].score[j]);
这一段无法执行

楼主,你的程序没什么问题啊,能运行的,也不存在你说的无法赋值的情况,你能不能描述清楚一点。

我下面给出的程序是可以运行的,你那句
scanf("%f",&stu[i].score[j]); 我也没改过,在TC和Pelles C上都试过了,没有问题啊。你用的什么编译器,把它报高的错误信息复制贴出来我看看。

#include<stdio.h>

#define N 3

struct student {
char num[6];
char name[8];
float score[3];
float avr;
} stu[N];

int
main(void)
{
int i, j;
for ( i = 0; i < N; i++ ) {
printf( "input scores of student %d:\n", i+1 );
printf( "No.: " );
scanf( "%s", stu[i].num );
stu[i].num[5] = '\0';
printf( "name: " );
scanf( "%s", stu[i].name );
stu[i].name[7] = '\0';
for( j = 0; j < 3; j++ ) {
printf( "score %d: ", j+1 );
scanf("%f",&stu[i].score[j]);
}
}
printf( "The info of students\n" );
printf( "StuNo.\tName\tScore1\tScore2\tScore3\n" );
for ( i = 0; i < N; i++ ) {
printf( "%s\t", stu[i].num );
printf( "%s", stu[i].name );
for ( j = 0; j < 3; j++ )
printf( "\t%.2f", stu[i].score[j] );
putchar( '\n' );
}

return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-01-05
把%f换成%lf看看
第2个回答  2007-01-05
#define N 10
这个最好别用宏定义啊,可以直接赋值啊!
一般是PI 就赋值啊,N直接写成10就可以了啊!
相似回答