c语言的问题,为什么没有输出的时候第一个学生还没完就出错了,最好也求大神解释下这个程序的意思,谢谢

# include <stdio.h>
# include <malloc.h>
struct student
{
int age;//年龄

float score;//分数
char name[100];//名字
};
int main(void)
{
int leng,i;
struct student*p;

printf("请输入学生的个数:\n");
printf("leng = ");
scanf("%d",&leng);
p=(struct student *)malloc(leng*sizeof(struct student));
for(i=0;i<leng;++i)
{
printf("请输入第%d个学生的信息:\n",i+1);
printf("age = ");
scanf("%d",&p[i].age);

printf("name = ");
scanf("%s",p[i].name); //name是数组名,本身就已经是数组首元素的地址, 所以pArr[i].name 不能改成 &pArr[i].name

printf("score = ");
scanf("%f",&p[i].score);
}
//输出
/* for (i=0; i<leng; ++i)
{
printf("第%d个学生的信息是:\n", i+1);
printf("age = %d\n", p[i].age);
printf("name = %s\n", p[i].name);
printf("score = %f\n", p[i].score);

printf("\n");
}
*/
return 0;
}
//

第1个回答  2014-10-08
浮点库不会自动装载,需要显式使用浮点才行
把float a改为
float a=1.0;
初始化一下就好了。

这不是bug,设计时故意这样的,因为这样可以省装载一些库(以前内存很小,省装载很重要),很少有程序一个浮点数不用,就直接scanf的,所以也不会有问题

这也是我查的,已验证。另外,不初始化的话,你把你注释的打印放开,一样可以。本回答被提问者和网友采纳
第2个回答  2014-10-08

我这边运行没错

追问

你用的编译器是什么?

追答

vc6.0

第3个回答  2014-10-08
程序本身没有错误
你试试看其他编译器,我这路可以运行

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网