# 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;
}
//
把float a改为
float a=1.0;
初始化一下就好了。
这不是bug,设计时故意这样的,因为这样可以省装载一些库(以前内存很小,省装载很重要),很少有程序一个浮点数不用,就直接scanf的,所以也不会有问题
这也是我查的,已验证。另外,不初始化的话,你把你注释的打印放开,一样可以。本回答被提问者和网友采纳
我这边运行没错
追问你用的编译器是什么?
追答vc6.0
你试试看其他编译器,我这路可以运行