1、国家二级( C语言)章节练习试卷 8及答案与解析 1 有以下说明和定义语句 struct student int age; char num8; ; struct student stu3=20,“200401“, 21,“200402“, 109,“200403“; struct student*p=stu;以下选项中引用结构体变量成员的表达式错误的是 _。 ( A) (p+)- num ( B) p- num ( C) *p.num ( D) stu0.age 2 设有 以下说明语句 struct num int a; float b; numl;则下面的叙述不正确的是 _。 ( A) s
2、truct是结构体类型的关键字 ( B) struct num是用户定义的结构体类型 ( C) numl是用户定义的结构体类型名 ( D) a和 b都是结构体成员名 3 已知学生记录描述为 struct student int no; char name20; char sex; struct int year; int month; int day; birth; ; struct student s;变量 s中的 “生日 ”应是 “1985年 4月 4日 ”,下列对 “生日 ”的正确赋值方式是 _。 ( A) year=1985; month=4; day=4; ( B) birth.ye
3、ar=1985; birth.month=4; birth.day=4; ( C) s.year=1985; s.month=4; s.day=4; ( D) s.birth.year=1985; s.birth.month=4; s.birth,day=4; 4 有以下程序 struct stu char num10; float score3; ; main() struct stu s3=“20021“,90,95,85, “20022“,95,80,75,“20023“,100,95,90, *p=s; int i; float sum=0; p+; for(i=0; i 3;i+)s
4、um=sum+p- scorei; printf(“%6.2fn“,sum); 程序运行后的输出结果是_。 ( A) 260 ( B) 270 ( C) 250 ( D) 285 5 有以下结构体说明和变量定义,如图所示,指针 p、 q、 r分别指向一个链表中的三个连续结点。 struct node int data; struct node*next; *p, *q,*r; 现要将 q和 r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是 _。 ( A) q- next=r- next; r- next=q; p- next=r; ( B) q- next=r- next;
5、p- next=r; r- next=q; ( C) p- next=r; q- next=r- next; r- next=q; ( D) r- next=q; q- next=r- next; p- next=r; 6 已知: union int i; char c; float a; st;则 sizeof(st)的值是_。 ( A) 4 ( B) 5 ( C) 6 ( D) 7 7 以下程序运行后的输出结果是 _。 void swap(int x,int y) int t; t=x; x=y; y=t; printf(“%d %d “, x, y); main() int a=3,b=
6、4; swap(a, b); printf(“%d %dn“,a,b); 8 以下程序运行后的输出结果是 _。 fun(int a) int b=0; static int c=3; b+: c+; return (a+b+c); main() int i, a=5; for (i=0; i 3; i+)pruntf(“%d%d“, i,fun(a); printf(“n“); 国家二级( C语言)章节练习试卷 8答案与解析 1 【正确答案】 C 2 【正确答案】 C 3 【正确答案】 D 4 【正确答案】 C 5 【正确答案】 D 6 【正确答案】 A 7 【正确答案】 4 3 3 4 8 【正确答案】 0 10 1 11 2 12