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

#include<stdio.h>#defineN10structstudent{charnum[6];charname[8];floatscore[3];floatav... #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]);
}
}

}
展开
 我来答
无敌还痛快的大熊猫7433
2007-01-04 · 超过48用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:146万
展开全部
你没有申请struct的空间,只是声明了啊,在main里加入:
student stu[10]; 就OK了
怎么可能不需要啊,你说链表中需要,那是肯定的
像这样,简单点说就是你把student看成是跟int,float,double一样的基本类型,这样你就会处理了,你认为int stu[10];这样的东西都不需要申请空间吗?如果不申请,那好比这样:
int *a;//这里只有个指针,并没有实际的空间
a=new int(10);这样才做了申请空间的动作;
以上2个语句何以:
int a=10;//这样便达到了上边2条语句的效果

但有一点不同就是new分配的是堆空间,这跟直接int i=10;不一样!
但效果是一样的!
如果是C语言的全局变量,这就不需要申请空间,全局变量生命周期在整个程序开始到结束!
fengjian_net
2007-01-04 · TA获得超过2864个赞
知道大有可为答主
回答量:1799
采纳率:50%
帮助的人:2504万
展开全部
上面程序是正确的只不过在主程序后面确少},主函数void main函数最好改为int main(),以便和标准一致。
stu数组为全局变量,不需要在main函数中定义一个局部同名变量,如:
student stu[N];

也许你没有编译,那么又怎么能接受输入?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ProgramStudy
2007-01-04 · 超过27用户采纳过TA的回答
知道答主
回答量:120
采纳率:0%
帮助的人:0
展开全部
你的程序只声明了结构体类型;
你要在main里定义一个结构体类型的变量,如楼上所说,student stu[N] 就可以了,以达到在内存为你声明的结构体开辟空间的目的,这样你才能赋值;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
guangliangxing
2007-01-04 · TA获得超过104个赞
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:116万
展开全部
void main()
{int i,j;
student stu[N];
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]);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式