一个关于输入的问题
#include <stdio.h>
#define N 2
struct student
{ char num[6];
char name[8];
float score[3];
}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]);
}
}
printf( " No. name score1 score2 score3\n ");
for(i=0;i <N;i++)
{ printf( "%5d%10s ",stu[i].num,stu[i].name);
for(j=0;j <3;j++)
printf( "%9.2f ",stu[i].score[j]);
}
}
这个程序怎么不能输入分数?输完name后回车程序就退出了
[解决办法]
scanf( "%f ",&stu[i].score[j]);
========================================
在TC下面scanf不支持输入float型数值...改成%d就可以了
[解决办法]
scanf( "%f ",&stu[i].score[j]);
问题好象在这里
&的优先级高,结合顺序从右到左
.的优先级底,结合顺序从左到右
结果就是(&stu[i]).score[j]);
如果写成 ",&(stu[i].score[j]); 应该就对了
[解决办法]
ms没有问题的...
难道是浮点数没连接上?
[解决办法]
我运行你的程序了,正常...输完名字可以输成绩,只不过printf( "%5d%10s ",stu[i].num,stu[i].name)这里的%5d被我改了%5s,不知道你那问题在哪,我是在VC++ 2005上运行的
[解决办法]
应该是编译器的问题...
比如不支持这么输入...
[解决办法]
请问你用的什么编译器?
是tc的话经常出现这样的问题
你可以查找这个上面的一个回帖,对这个问题有解释和解决的方法
在前面加个double x
告诉编译器要将float 连接上