C语言结构体共用体选择题新
C语言练习题1

C语言练习题1第八章结构体与共用体1练习题一、c语言基础知识1.1选择题1.以下不是c语言的特点的就是(b)。
a.语言简洁紧凑b.能够编制出功能复杂的程序c.c语言可以直接对硬件操作d.c 语言移植性好2.以下字符序列中,不容用做c语言标识符的就是(b)。
a.abc123b.no.1c._123_d._ok3.正确的c语言标识符是(a)。
a._buy_2b.2_buyc.?_buyd.buy?4.恳请挑选出可以用做c语言用户标识符的一组标识符(b)。
a.voidb.a3_b3c.ford.2adefine_123-abcdowordifcasesizeof5.以下符号中,不属于转义字符的就是(b)。
a.\\\\b.\\0xaac.\\td.\\06.不属于c语言关键字的是(d)。
a.intb.breakc.whiled.character7.就是c语言提供更多的合法关键字的就是(b)。
a.floatb.signedc.integerd.char8.以下不能定义为用户标示符的是(d)。
a.一个主程序和若干子程序共同组成b.一个或多个函数共同组成c.若干过程共同组成d.若干子程序共同组成10.c语言程序的基本单位是(c)。
a.程序行b.语句c.函数d.字符20.下列变量定义中合法的是aa.short_a=1-.le-1;b.doubleb=1+5e2.5;c.longdo=0xfdal;d.float2_and=1-e-3;9xn21.与数学式子对应的c语言表达式是(c)。
2x?1a.9*x^n/(2*x-1)b.9*x**n/(2*x-1)c.9*pow(x,n)*(1/(2*x-1))d.9*pow(n,x)/(2*x-1)第八章结构体与共用体222.若存有代数式3ab,则不正确的c语言表达式是(c)。
cda.a/c/d*b*3b.3*a*b/c/dc.3*a*b/c*dd.a*b/d/c*323.已知各变量的类型说明如下:intm=8,n,a,b;unsignedlongw=10;doublex=3.14,y=0.12;则以下符合c语言语法的表达式是(a)。
结构体与共用体相关题目练习

结构体与共用体1.说明一个结构体变量时系统分配给它的内存是A)各成员所需要内存量的总和 B)结构体中第一个成员所需内存量C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量2.C语言结构体类型变量在程序执行期间A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中C)部分成员驻留在在内存中 D)没有成员驻留在内存中3.设有以下说明语句struct stu { int a ; float b ; } stutype ;则下面的叙述不正确的是A) struct 是结构体类型的关键字 B) struct stu 是用户定义的结构体类型C) stutype 是用户定义的结构体类型名 D) a和b都是结构体成员名4.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【】。
struct stud { char num[6]; int s[4]; double ave; } a,*p;5.程序中有下面的说明和定义struct abc { int x;char y;}struct abc s1,s2;则会发生的情况是A)编译出错B)程序将顺利编译、连接、执行C)能顺利通过编译、连接、但不能执行 D)能顺利通过编译、但连接出错6.有如下定义struct person { char name[9]; int age;};struct person class[10]={ " Johu", 17,"Paul", 19,"Mary", 18,"Adam", 16};根据上述定义,能输出字母M的语句是A) prinft(" %c\n",class[3].name); B) printf(" %c\n",class[3].name[1]);C) prinft(" %c\n",class[2].name[1]); D) printf(" %c\n",class[2].name[0]);7.下面程序的输出是A)0 B)1 C)3 D)6main(){ struct cmplx { int x; int y;} cnum[2]={1,3,2,7};printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);}8.下列程序的输出结果是A)5 B)6 C)7 D)8struct abc { int a, b, c; };main(){ struct abc s[2]={{1,2,3},{4,5,6}};int t;t=s[0].a+s[1].b;printf("%d \n",t);}9.有以下程序struct stu{ int num;char name[10];int age;};void fun(struct stu *p){ printf("%s\n" ,(*p).name); }main(){ struct stu students[3]={{9801,"Zhang",20} ,{9802,"Wang", 19} , {9803,"Zhao",18} };fun(students+2);}输出结果是A)Zhang B)Zhao C)Wang D)1810.设有如下定义:struct sk {int a ;float b ;}data ,*p ;若有p=&data ;,则对data中的a域的正确引用是A)(*p).data.a B)(*p).a C)p->data.a D)p.data.a11.下面程序的输出结果为int dt[4]={10 ,20 ,30 ,40} ;struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3] } ;main(){ p=aa ;printf("%d\n" , ++p->x );printf("%d\n" ,(++p)->x);printf("%d\n" , ++( *p->y));}A)10 B)50 C)51 D)6020 60 60 7020 21 21 3112.为了建立如图所示的存储结构(即每个结点含两个域, data 是数据域,next是指向结点的指针域,)请填空。
结构体、共用体

结构体,公用体一、选择题:(20题)1.本题序号:552当说明一个结构体变量时系统分配给它的内存是A 各成员所需内存量的总和;B 结构体中第一个成员所需的内存量;C 成员中内存量最大者所需的容量;D 结构体中最后一个成员所需的内存量;参考答案 A2.本题序号:554当说明一个共用体变量时系统分配给它的内存是A 各成员所需内存量的总和;B 第一个成员所需的内存量;C 成员中内存量最大者所需的容量;D 最后一个成员所需的内存量;参考答案 C3.本题序号:555下面对共用体类型的叙述描述正确的是A 可以对共用体变量名直接赋值;B 一个共用体变量中可以同时存放其所有成员;C 一个共用体变量中不可以同时存放其所有成员;D 共用体类型定义中不能出现结构体类型的成员;参考答案 B4.本题序号:639设有以下说明语句typedef struct{ int n;char ch[8];}PER;则下面叙述中正确的是A PER 是结构体变量名B PER是结构体类型名C typedef struct 是结构体类型D struct 是结构体类型名参考答案B5.本题序号:748设有如下说明typedef struct ST{long a;int b;char c[2];} NEW;则下面叙述中正确的是()。
A 以上的说明形式非法B ST是一个结构体类型C NEW是一个结构体类型D NEW是一个结构体变量参考答案 C6.本题序号:756以下对结构体类型变量td的定义中,错误的是A typedef struct aa{int n;float m;}AA;AA td;B struct aa{int n;float m;} ;struct aa td;C struct{int n;float m;}aa;struct aa td;D struct{int n;float m;}td;参考答案C7.本题序号:774有以下程序段typedef struct NODE{ int num; struct NODE *next;} OLD;述中正确的是()。
编程选择题40道:C语言结构体与联合体:数据组织与管理.Tex

1.在C语言中,结构体(struct)能够存储不同类型的数据。
以下哪种说法是正确的关于结构体成员变量的访问?o A. 结构体成员变量只能在定义结构体的函数中访问。
o B. 结构体成员变量的访问必须通过指向结构体的指针。
o C. 结构体成员变量不能被直接初始化。
o D. 结构体成员变量可以通过结构体变量名直接访问。
答案:D解析:结构体成员变量可以直接通过结构体变量名访问,无需指针,选项A和B错误。
C语言支持在定义结构体时直接初始化成员变量,因此选项C也错误。
2.C语言中的联合体(union)与结构体(struct)有何不同?o A. 联合体和结构体都共享相同的内存空间。
o B. 联合体允许成员变量共享同一段内存空间,而结构体的成员变量各自占用独特内存空间。
o C. 联合体的成员变量不能有相同的类型。
o D. 联合体不能在函数间传递。
答案:B解析:联合体的特性是所有成员共享同一段内存空间,而结构体的成员各自有自己的内存空间。
3.下面的代码片段中,结构体Person定义了一个成员变量name和一个成员函数printName。
在C语言中,这段代码的语法是否正确?o B. 错误,C语言的结构体不能定义成员函数。
o C. 错误,printName函数的定义中缺少返回类型。
o D. 错误,printName函数定义需要在结构体定义外部。
答案:B解析:C语言的结构体不具备成员函数,不能在结构体内直接定义函数。
4.如果一个结构体包含多个成员,结构体的大小如何确定?o A. 结构体的大小是其所有成员大小的总和。
o B. 结构体的大小是其最长成员的大小。
o C. 结构体的大小是其所有成员大小的总和,加上成员间可能的填充大小,以满足对齐要求。
o D. 结构体的大小是所有成员中最大小别的成员乘以成员数量。
答案:C解析:结构体的大小是成员变量大小的总和加上为了内存对齐而添加的填充大小。
5.在C语言中,使用typedef struct的目的何在?o A. 为了使结构体的定义更复杂。
C语言(结构体与共用体)习题与答案

{ for ( ; *s==*t; s++, t++ )
if (!*s) return 0 ;
return (*t-*s) ;
}
B.int strcmp2(char *s,char *t)
{ for ( ; *s++=*t++; )
if (!*s) return 0 ;
1、指针的含义是()。
A.名
B.一个标志
C.地址
D.值
正确答案:C
2、若已定义a为int型变量,则下面的语句中正确的是()。
A.int *p=*a;
B.int *p=&a;
C.int *p=a;
D.int p=&a;
正确答案:B
3、若有定义:int x,*p;则以下正确的赋值表达式是()。
A.*p=&x
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("%4d,%4d,%4d\n",a,b,c);
}
A.5,-2,-7
B.5,2,3
C.-5,-12,7
D.-5,-12,-7
正确答案:D
11、以下程序运行的结果是()。
#include<stdio.h>
void main()
D.char *s="china";等价于char *s; s="china" ;
正确答案:D
15、函数strcmp(char *s,char *t)功能是()。
结构体与公用体 习题十及参考答案

住址、入学成绩)的信息。请在输入10名教师和学生的信息后, 按姓名进行排序,最后按排序后的顺序进行输出,对于教师要输 出姓名、单位、住址和职称,对学生要输出姓名、班级、住址和 入学成绩。请编程实现。
国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷14

国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷14(总分:56.00,做题时间:90分钟)一、选择题(总题数:28,分数:56.00)1.有以下程序 #include main() { int a=5,b=1,t; t=(a<(分数:2.00)A.11B.6C.21 √D.1解析:解析:本题考查位操作运算符。
“<<”是左移运算符,左移一位相当于乘2,“|”是按位或运算符。
5序移两位相当于乘4,得到20,20的二进制数是00010100,和00000001进行按位或操作得到00010101,即十进制的21。
2.若变量已正确定义,则以下语句的输出结果是 s=32; s^=32; printf("%d",s);(分数:2.00)A.-1B.1C.32D.0 √解析:解析:“按位异或”运算的规则是:参与运算的两个运算数中相对应的二制位上,若数相同,则该位的结果为0;若数不同,则该位的结果为1。
因为语句“s=32;s^=32;”相当于s与自身做按位异或运算,所以其结果等于0。
3.若有以下程序 main(){int c; c=10^5; printf("%d\n",c); } 则程序的输出结果是(分数:2.00)A.15 √B.10000C.5D.105解析:解析:按位异或(^)的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为0;若数不同,该位的结果为1。
整数10和5的二进制编码分别为1010和0101,异或结果为1111,其十进制数据位15。
4.若有以下程序 main(){int c; C=1315; printf("%d\n",c); } 则程序的输出结果是(分数:2.00)A.15B.18C.13 √D.5解析:解析:按位或(|)的运算规则是:参加运算的两个运算数中,只要两个相应的二进制位中一个为1,则该位的运算结果即为1:只有当两个相应位的数都为0时,该位的运算结果才为0。
国家二级C语言(结构体和共用体、文件)机试模拟试卷2

国家二级C语言(结构体和共用体、文件)机试模拟试卷2(总分:52.00,做题时间:90分钟)一、选择题(总题数:26,分数:52.00)1.若有语句typedef struet S{int g;char h;}T;,则下列叙述中正确的是( )。
(分数:2.00)A.可用S定义结构体变量B.可用T定义结构体变量√C.S是struct类型的变量D.T是struet S类型的变量解析:解析:本题考查typedef重新声明一种结构体类型。
那么T为结构体类型,而不是结构体变量,所以B选项正确。
2.设有语句typedef struet TT{char c;int a[4];}CIN;,则下列叙述中正确的是( )。
(分数:2.00)A.CIN是struet TT类型的变量B.,IT是struct类型的变量C.可以用TT定义结构体变量D.可以用CIN定义结构体变量√解析:解析:本题考查typedef重新声明一种结构体类型。
其中CIN为结构体类型名,而不是结构体变量,所以D选项正确。
3.下列叙述中错误的是( )。
(分数:2.00)A.可以用typedef将已存在的类型用一个新的名字来代表B.可以通过typedef增加新的类型√C.用typedef定义新的类型名后,原有类型名仍有效D.用typedef可以为各种类型起别名,但不能为变量起别名解析:解析:本题考查typedef的用法。
typedef并不是增加一种新的类型,而是对已存在的类型用一个新的名字来代表,所以B选项错误。
4.有以下程序:#include<stdio.h>main(){struet STU{char name[9];char sex:double score[2];};struct STU a={"Zhao",'m',85.0,90.0},b={"Qian",'f',95.0,92.0};b=a;printf("%s,%c,%2.0f,%2.0f\n",b.name,b.sex,b.score[0],b.score[1]);}程序的运行结果是( )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、变量 a 所占的内存字节数是。
(假设整型int 为 4 字节)
structstu
{charname[20];
longintn;
intscore[4];
}a;
A)28B)30
C)32D)46
C
2、下列程序的输出结果是
A)5B)6 C)7D)8 structabc
{inta,b,c;};
main()
{structabcs[2]={{1,2,3},{4,5,6}};intt; t=s[0].a+s[1].b;
printf("%d\n",t);
}
B
3、有如下定义
structperson{charname[9];intage;}; structpersoncalss[4]={"Johu",17,
"Paul",19,
"Mary",18,
"Adam",16,};
根据以上定义,能输出字母M 的语句是________ 。
A)printf("%c\n",class[3].name);
B)printf("%c\n",class[3].name[1]);
C)printf("%c\n",class[2].name[1]);
D)printf("%c\n",class[2].name[0]);
D
4、以下程序的输出是________ 。
structst
{intx;int*y;}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,dt[0],}; main()
{p=aa;
printf("%d\n",++(p->x));
}
A)10B)11
C)51D)60
C
6、以下程序的输出结果是________ 。
structHAR
{intx,y;structHAR*p;}h[2];
main()
{inth[0].x=1;h[0].y=2;
h[1].x=3;h[1].y=4;
h[0].p=&h[1];h[1].p=h;
printf("%d%d\n",(h[0].p)->x,(h[1].p )->y);}
A)12B)23
C)14D)32
D
7、下面程序的输出是________ 。
main()
{
structcmplx{intx;inty;}cnum[2]={1,3,2,7};
printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);
}
A)0B)1
C)3D)6
D
8、设有变量定义
structstu
{intage;
intnum;
}std ,*p=&std ;
能正确引用结构体变量std中成员age的表达式是
A)std->ageB)*std->age
C)*(*p).age
D
9、设有定义语句
"struct{intx ;inty;}d[2]={{1 ,3} ,{2,7}} ;",
则printf("%d\n" ,d[0].y/d[0].x*d[1].x) ;的输出结果是
A)0B)1
C)3D)6
D
11、若有如下定义,则对data中的a成员的正确引用是
structsk{inta;floatb;}data,*p=&data;
A)(*p).(*p).a
C)p->、若有以下说明和定义语句,则变量w在内存中所占的字节数是unionaa{floatx;floaty;charc[6];};structst{unionaav;
floatw[5] ;doubleave;}w;
A)42B)34
C)30D)26
B
15、变量 a 所占的内存字节数是unionU
{charst[4] ;
inti;longl;};structA {intc ;unionUu;}a;
A)4B)5
C)6D)8
D
16、执行下面的程序后,输出的结果是structabc
{inta ,b,c;}
main()
{structabcs[2]={{1 ,2,3} ,{4 ,5,6}} ;intt ;
t=s[0].a+s[1].b;printf("%d\n" ,t);
}
A)5B)6
C)7D)8
C
18、下面程序的输出结果是typedefunion
{longx[2] ;inty[4] ;charz[8];}MYTYPE ;MYTYPEthem ;main() {printf("%d\n" ,sizeof(them));}
A)32B)16
C)8D)24
C
19、若有以下的说明:structperson
{charname[20];
intage;charsex;
}a={"lining" ,20,'m'} ,*p=&a;
则对字符串lining 的引用方式不可以的是
A)(*p).nameB)
C)p->name
B。