C语言几道题目!!!!!!!最好说明下选择原因 谢谢

一 下面定义结构变量的语句中错误的是
A struct student{ int num; char name[20];} s;
B struct { int num; char name[20];} s;
C struct student { int num; char name[20];}; struct student s;
D struct student { int num; char name[20];}; student s;

二 如果 有定义语句:
struct {
int x,y;} s[2] = { {1,3},{2,7} };
则语句: printf("%d\n", s[0].y/s[1].x);的输出结果为
A 0 B 1 C 2 D 3

三 根据下面的定义,能打印出字母M的语句是
struct person{
char name[10];
int age;} c[10]= { "John",17,"Paul",19,"Mary",18,"Adam",16};
A printf("%c", c[3].name); B printf("%c", c[3].name[1]);
C printf("%c", c[2].name[0]); D printf("%c", c[2].name[1]);

四 设有如下定义,则对data中的a成员的正确引用是
struct sk{ int a; float b;} data, *p=&data;
A (*p).data.a B (*p).a C p->data.a D p.data.a

五 对于一下结构定义,(*p)->str++中的++加在
struct { int len; char *str;} *p;
A 指针str 上 B 指针 p上 C str 所指向的内容上 D 语法错误

最好说明下选择原因 谢谢了

1 D
构造类型为struct student 不是struct
2 B
s[0].y= 3 s[1].x= 2
3 C
c[2] 表示存的是"Mary",18," 注意区分
4 B
声明了一 个是struct sk结构体变量data,一个是结构体指针*p
p=&data说明指针p指向了data变量,此时*p和data用时是同一个内存空间,所以(*p).a等同于
data.a,另一种写法p->a。
5 D
->为指向运算符
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-13

    D struct student s要写完整

    B  3/2

    C  第二个结构体数组元素的第一个字符(元素)

    B  等于p->a

    A  ++的主体是str

本回答被提问者和网友采纳