资源描述:
《c语言结构体单元练习》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、1.有以下定义和语句:structstudent{intage;intnum;};structstudentstu[3]={{1001,20},{1002,19},{1003,21}};main(){structstudent*p;p=stu;……}则以下不正确的引用是。A)(p++)->numB)p++C)(*p).numD)p=&stu.age2.有以下结构体定义:structexample{intx;inty;}v1;则正确的引用或定义是。A)example.x=10B)examplev2;v2.x=10;C)structv
2、2;v2.x=10;D)structexamplev2={10};3.对于如下结构体定义,若对变量person的出生年份进行赋值,正确的赋值是。structdate{intyear,month,day;};structworklist{charname[20];charsex;structdatebirth;}person;A)year=1976B)birth.year=1976C)person.birth.year=1976D)person.year=19764.根据下述定义,可以输出字符'A'的语句是。structperson
3、{charname[11];struct{charname[11];intage;}other[10];};structpersonman[10]={{"Jone",{"Paul",20}},{"Paul",{"Mary",18}},{"Mary",{"Adam",23}},{"Adam",{"Jone",22}}};A)printf("%c",man[2].other[0].name[0]);B)printf("%c",other[0].name[0]);C)printf("%c",man[2].(*other[0]));D)p
4、rintf("%c",man[3].name);5.若有以下程序段:structst{intn;structst*next;};structsta[3]={5,&a[1],7,&a[2],9,' '},*p=a;则值为6的表达式为。A)p++->nB)p->n++C)(*p).n++D)++p->n6.对于以下定义,不正确的叙述是。uniondata{inti;charc;floatf;}a,b;A)变量a所占的内存长度等于成员f的长度B)变量a的地址和它的各成员地址都是相同的C)不能对变量a赋初值D)可以在定义的时候对a初始化
5、7.下述程序运行结果为。#includestructst{intn;int*m;}*p;voidmain(){intd[5]={10,20,30,40,50};structstarr[5]={100,d,200,d+1,300,d+2,400,d+3,500,d+4};p=arr;printf("%dt",++p->n);printf("%dt",(++p)->n);printf("%d",++(*p->m));}A)10120021B)1012030C)20010121D)101101108、以下程序的
6、运行结构是。#includemain(){union{longa;intb;charc;}m;printf("%d",sizeof(m));}A)2B)4C)6D)79.若要利用下面的程序段使指针变量p指向一个存储整型变量的存储单元,则在空格中应填入的内容是。int*p;p=malloc(sizeof(int));A)intB)int*C)(*int)D)(int*)10、执行下述语句后的结果是。enumweekday{sun,mon=3,tue,wed,thu};enumweekdayday;day=wed
7、;printf("%d",day);A)5B)3C)4D)编译时出错11、下面程序的输出结果是。main(){enumabc{green=3,red};char*clr[]={"red","blue","yellow","black","white","green"};printf("%sand",clr[green]);printf("%s",clr[red]);}12、已知指针变量head指向单链表表头,下面程序用来统计链表中各个结点的数据项之和,请填空。structlink{intdata;structlink*next
8、;};main(){intk;structlink*head;k=sum(head);printf("%d",k);}sum(【1】){structlink*p;ints;s=head->data;p=head->next;while(p){s