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]);
}
}
} 展开
#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]);
}
}
} 展开
4个回答
展开全部
你没有申请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语言的全局变量,这就不需要申请空间,全局变量生命周期在整个程序开始到结束!
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语言的全局变量,这就不需要申请空间,全局变量生命周期在整个程序开始到结束!
展开全部
上面程序是正确的只不过在主程序后面确少},主函数void main函数最好改为int main(),以便和标准一致。
stu数组为全局变量,不需要在main函数中定义一个局部同名变量,如:
student stu[N];
也许你没有编译,那么又怎么能接受输入?
stu数组为全局变量,不需要在main函数中定义一个局部同名变量,如:
student stu[N];
也许你没有编译,那么又怎么能接受输入?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的程序只声明了结构体类型;
你要在main里定义一个结构体类型的变量,如楼上所说,student stu[N] 就可以了,以达到在内存为你声明的结构体开辟空间的目的,这样你才能赋值;
你要在main里定义一个结构体类型的变量,如楼上所说,student stu[N] 就可以了,以达到在内存为你声明的结构体开辟空间的目的,这样你才能赋值;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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]);
}
}
{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]);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询