《C语言程序设计:结构体和共用体单元测试与答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计:结构体和共用体单元测试与答案.docx(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、单项选择题1、下面关于结构体数组的论述,错误的选项是()。A.结构体数组的每一个元素都具有相同的数据类型B.结构体数组的名字相当于数组首元素的地址C.对结构体数组的引用,可以通过下标来引用D.结构体数组的名字是一个变量正确答案:D解析:D、在定义的时候,所有的数组名都是地址常量2、有如下定义:struct stu(int num;char name10;struct stu boy8;以下说法错误的选项是()。A. boy是数组的名字一个数组元素有两个结构体成员B. struct是结构体类型名D.上述代码包含了结构体类型的定义和结构体数组的定义正确答案:C解析:C、struct是定义结构体
2、的关键字3、有如下定义:struct person(char name;int age;structpersonclass 10 = John,17, “Paul,19, Mary”, 18, Adam,16;根据上述定义,能输出字母M的语句是()。A. printf (%cn, class 3. namel);printf (%cn, class 2. name 1);C.printf (%cn, class2. name0);D.printf (%cn, class3. name);正确答案:c解析:c、M是数组的第三个元素name域的首字母,数组下标从0开始,所以是 class2. na
3、me0_4、有如下定义:struct stu(char name10;int age;);struct stu boy10;下面相关赋值语句正确的选项是()。A.strcpy (boy0. name, TonT);B.boy. name10二Tom;B. boy. name = Tom;D.boy0. name0二Tom;正确答案:A解析:A、boy. name 10 , boy. name因为boy是数组,所以对于boy 的引用都是错误的,boy0.name0这种引用是正确的,但是这里只 能赋值为一个字符,而不能是字符串5、设有以下说明语句,那么下面表达中正确的选项是() typedef s
4、truct int n;char ch8;PER;A. PER是结构体类型名PER是结构体变量名B. typedef struct是结构体类型struct是结构体类型名正确答案:A6、以下表达式的结果是4的是()int main() static int a3 3 = 1, 2, 3,4, 5, 6, 7, 8, 9);int *pa2 = a0, al, a2;int *p=aO;return 0;A. *a2*alB. *(* (a+1) +1)*(*(a+2)+2)正确答案:B7、以下程序的输出结果是()。ttinclude struct st(int x;int *y;*P;int d
5、t4 = 10, 20, 30, 40);struct st aa4 = 50, &dt 0, 60, &dt 1, 70, &dt 2, 80, &dt 3;main ()p=aa;printf(%d ,+p-x);printf (,z%d ,(+p)-x);printf(dn,+(* (p-y);A. 50 60 21B.60 70 31C. 10 20 2051 60 21正确答案:D解析:D、p=aa, p-x的值为50,所以自增1后为51, (+p)后, p指向这时的p-x的值为60, (p-向值为&dt 1, * (p-y) 值为所以自增后为218、以下对C语言共用体类型数据的正确
6、表达是A. 一个共用体变量中可以同时存放其所有成员B.共用体类型定义中不能出现结构体类型的成员C.可以对共用体变量名直接赋值D. 一个共用体变量中不能同时存放其所有成员正确答案:D9、有如下代码:struct stu int num;char name10;):struct stu boy, *p;p=&boy;如果在横线上填入一条赋值语句,实现将结构体变量boy的成员num 赋值为100的功能,那么以下不能实现此功能的语句是()。A. (*p). num =100;boy. num = 100;B. *(p-num)=100;D.p-num =100;正确答案:c解析:C、p-nuni不是地
7、址值,也不是指针变量,所以不用用*10、有以下程序#includestruct S int a, b; data2 = 10, 100, 20, 200);main() struct S p=datal;printf (%dn,+ (p. a);程序运行后的输出结果是( )o10A. 2120B. 11正确答案:B11、以下程序的正确运行结果为:ttinclude main () union short int a2;long b;char c4;s;s. a0=0x39;s. al=0x38;printf (/z%lx %cn,s. b, s. c0);A. 38398B.3800399C.39003839D. 393838正确答案:B12、有以下程序:ttinclude #include void fun(int *s, int p23)(*s=pl 1;)main () int a2 3 = 1,3, 5, 7, 9,11),*P;p= (int *)malloc(sizeof(int);fun (&p, a);printf(%dn, *p);程序的运行结果是:A. 117C. 9D. 1正确答案:C
限制150内