#include"stdio.h"
struct student
{
int num;
char name;
int grade;
}s[2];
int main()
{
int i;
s[1]={"1001","zx"};
s[2]={"1002","xx"};
for(i=0;i<3;i++)
scanf("%d",s[i].grade);
}
第一个:结构体定义与申明建议不要写一起。
第二个:结构体的初始化,注意类型。int num类型初始化成字符串,char name初始化成字符串。
第三个:数组的下标从0开始引用。
第四个:主函数没有返回或调用exit(0)
第五个:struct结构初始化错误;
第六个:scanf,可变参数要传地址
正确的写法如下:
不能这样赋值。
你可以
#include"stdio.h"另外 注意只有2个元素。
追问为什么不可以这样赋值
追答规定
本回答被提问者采纳你新建了s[2],然后这两个数组元素应该是s[0]和s[1]啊,不是s[1]和s[2]。
后面for循环y也应该是i < 2。
看了楼下回答我想说说我的想法:
首先《代码简洁之道》推荐的写法是把结构体的定义与声明放在一起写,因为这样能迅速定位结构体成员的元素;其次,主函数不是一定要写return 0;的,即使不写,程序会自动返回0给操作系统,只有主函数可以这样,写上return 0;只是为了让代码格式统一;最后,由于C语言里,int main()表示对参数形式默认(可以是Void,也可以是int argc, char * argv[]),而且学习面向对象编程语言之后,你会发现对参数默认更好,所以建议还是写int main()。
你的代码应该是:
#include <stdio.h>其中,只要读入成功就会打印“Succeeded.”,就不用for循环检查元素了。
本回答被网友采纳