c语言结构体共用体选择题新

合集下载

C语言练习题1

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是指向结点的指针域,)请填空。

结构体和共用体习题

结构体和共用体习题

习题六1、从下列四个选项中选择一个正确得填入括号中。

(1)在说明一个结构体变量时系统分配给它得存储空间就是( D)。

A该结构体中第一个成员所需存储空间B该结构体中最后一个成员所需存储空间C该结构体中占用最大存储空间得成员所需存储空间D该结构体中所有成员所需存储空间得总与(2)在说明一个共用体变量时系统分配给它得存储空间就是(D )。

A该共用体中第一个成员所需存储空间B该共用体中最后一个成员所需存储空间C该共用体中占用最大存储空间得成员所需存储空间D该共用体中所有成员所需存储空间得总与(3)共用体类型在任何给定时刻, ( B)。

A所有成员一直驻留在内存中B只有一个成员驻留在内存中C部分成员驻留在内存中D没有成员驻留在内存中(4)以下定义结构体类型得变量st1,其中不正确得就是(A )A typedef stuct student{int num;int age;}STD;STD st1;B struct student{int num,age;}st1;C struct{int num;float age;}st1;D struct student{int num;int age;};struct student st1;(5)已知职工记录描述为:struct workers{int no;char name[20];char sex;struct{int day;int month;int year;}birth;};struct workers w;设变量w中得”生日”应就是”1993年10月25日”,下列对”生日”得正确赋值方式就是( C)。

A day=25; month=10; year=1993;B w、day=25w、month=10; w、year=1993;C w、birth、day=25; w、birth、month=10; w、birth、year=1993;D birth、day=25; birth、month=10; birth、year=1993;(6)设有如下定义:struct sk{int a;float b;}data,*p;若有p=&data;则对data中得a成员得正确引用就是( B)。

国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷14

国家二级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语言(结构体与共用体)习题与答案

C语言(结构体与共用体)习题与答案
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
{
int b,a=28;
char s[10],*p;
p=s;
do{
b=a%16;
if(b<10)
*p=b+48;
else
*p=b+55;
p++;
a=a/5;
}while(a>0);
*p='\0';
puts(s);
}
A.C51
B.10
C.2
D.\0
正确答案:A
12、下面程序的运行结果是()。
#include<stdio.h>
}
A.18
B.19
C.20
D.17
正确答案:B
14、下面判断正确的是()。
A.char c[4]="abc",d[4]="abc";等价于char c[4]=d[4]="abc" ;
B.char பைடு நூலகம்a="china";等价于char *a; *a="china";
C.char str[10]={"china"};等价于char str[10]; str={"china";}

C语言各章节单元测试题及答案——结构体与共用体

C语言各章节单元测试题及答案——结构体与共用体

第9章结构体与共用体9.1典型考试题剖析9.1.1选择题【例1】若指针p已经正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是。

A) p=2*(int *)malloc(sizeof(int)); B) p=(int*)malloc(2*sizeof(int));C) p=(int *)malloc(2*2); D) p=(int*)calloc(2,sizeof(int));✧考点:动态存储分配函数。

✧分析:根据动态存储分配函数malloc和calloc的函数原型可以知道,calloc函数的调用形式为:void * calloc(unsigned n,unsigned size);表示在动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配域起始地址的指针,因此答案D是正确的。

malloc函数的调用形式为:void * malloc(unsigned int size);表示是在内存的动态存储区分配一个长度为size的连续空间,并返回一个指向分配域起始地址的指针,答案B和C中malloc的参数分别为:2*(sizeof(int))和2*2,都是整型数,因此调用形式正确。

答案A中(int *)malloc(sizeof(int))的返回值为一个地址值,将地址的值乘以2是没有意义的。

✧答案:A【例2】若有以下说明和定义:struct test{ int m1; char m2; float m3;union uu{ char u1[5]; int u2[2]; }ua;}myaa;则sizeof(struct test)的值是。

A) 12 B) 16 C) 14 D) 9✧考点:结构体类型和共用体类型所占内存的字节数。

✧分析:sizeof(struct test)的功能是求结构体类型test所占用的内存字节数。

它应该等于结构体每个成员所占的字节数之和。

m1为int型,占2字节,m2为char型,占1字节,m3为float型,占4字节,接下来是一个共用体类型uu,共用体所占的字节数应该等于成员中最长者所占的字节数,u1占5字节,u2占4字节,那么该共用体类型应该占用5字节,所以2+1+4+5=12。

第十章结构体与共用体

第十章结构体与共用体

试题汇编之:结构体与共用体一.选择题1.共用体定义为“union data{char ch;int x;}a;”下列语句正确的是。

A:a.ch=‟x‟;a=10; B:a a=‟x‟,10;C:a.x=10;a.ch=‟x‟; D:a=‟x‟;2.共用体定义为“union data{char ch;int x;}a;”下列语句不正确的是。

A:a={…x‟,10}; B:a.x=10;a.x++;C:a.ch=‟x‟;a.ch++; D:a.x=10;a.ch=‟x‟;3.对于:struct node{double x;char c;}*p;下列哪个赋值是错的。

A:p->x=2B:p.x=2.0 C.p->c=2 D.(*p).c=‟a‟4.对于以下结构定义:struct{int len;char *str;}*p;(*p)->str++中的++加在。

A:指针str上B:指针p上. C.str所指的内容上 D:表达式语法有错5.对如下定义:struct{char a1;int a2;}xx; union{char a1;int a2;int a3;}yy;如果sizeof(xx)的值为3,则sizeof(yy)的值应为:A:2 B:4 C:5 D:定义有错6.以下结构体变量定义语句中错误的是。

A.struct staffer{ long int code; float salary;} one;B.struct staffer{ long int code; float salary;} staffer one;C.typedef struct { long int code ; float salary;} STAFFER;D.struct { long int code; float salary; }one;-7.形如上题中定义的结构体变量,下列对此变量的输入形式中正确的是。

C语言 选择题库第10章 结构体与共用体

C语言 选择题库第10章 结构体与共用体

第10章结构体与共用体1.以下叙述中错误的是()。

A) 可以通过typedef增加新的类型B) 可以用typedef将已存在的类型用一个新的名字来代表C) 用typedef定义新的类型名后,原有类型名仍有效D) 用typedef可以为各种类型起别名,但不能为变量起别名参考答案:A【解析】关键字typedef的作用只是将C语言中的已有的数据类型作了置换,并不是增加新的类型,所以A)错误。

2.以下关于typedef的叙述错误的是A) 用typedef可以增加新类型B) typedef只是将已存在的类型用一个新的名字来代表C) 用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名D) 用typedef为类型说明一个新名,通常可以增加程序的可读性参考答案:A【解析】typedef并不是增加了新类型,而是用一个新名字替代已存在的类型,不能为变量说明一个新名,使用typedef可以增强移植性。

所以A选项错误。

3.若有以下语句typedef struct S{ int g; char h; } T;以下叙述中正确的是A) 可用S定义结构体变量B) 可用T定义结构体变量C) S是struct 类型的变量D) T是struct S类型的变量参考答案:B【解析】本题考查typedef重新声明一种结构体类型,那么T为结构体类型,而不是结构体变量,所以B选项正确。

4.设有以下语句typedef struct TT{ char c; int a[4]; } CIN;则下面叙述中正确的是A) CIN是struct TT类型的变量B) TT是struct类型的变量C) 可以用TT定义结构体变量D) 可以用CIN定义结构体变量参考答案:D【解析】本题考查typedef重新声明一种结构体类型,其中CIN为结构体类型名,而不是结构体变量,所以D 选项正确。

5.以下叙述中错误的是A) 可以用typedef将已存在的类型用一个新的名字来代表B) 可以通过typedef增加新的类型C) 用typedef定义新的类型名后,原有类型名仍有效D) 用typedef可以为各种类型起别名,但不能为变量起别名参考答案:B【解析】本题考查typedef的用法,typedef并不是增加一种新的类型,而是对已存在的类型用一个新的名字来代表,所以B选项错误。

C语言结构体共用体选择题

C语言结构体共用体选择题

1、变量a所占的内存字节数是________。

(假设整型i n t为4字节)struct stu{ char name[20];long int n;int score[4];} a ;A) 28 B) 30C) 32 D) 46C2、下列程序的输出结果是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);}B3、有如下定义struct person{ char name[9]; int age;};struct person calss[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]);D4、以下程序的输出是________。

struct st{int x;int *y;} *p;int dt[4]={10,20,30,40};struct st aa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,dt[0],};main(){ p=aa;printf("%d\n",++(p->x));}A) 10 B) 11C) 51 D) 60C6、以下程序的输出结果是________。

9 结构体与共用体 答案

9 结构体与共用体 答案

9 结构体与共用体一、选择填空9.1 答案:C分析:在本题的说明中定义了一个名为wc的结构,它由两个成员组成:整型变量a和指针变量b。

在定义的同时说明了一个指向这一结构类型的指针变量p。

数组x0和x1都是含有两个整型元素的一维数组,并赋有初值。

x为一结构型数组,共有两个元素,每一个元素都具有struct wc型的结构(含有两个成员),并赋有初值。

执行p=x;语句后,p指向这一结构数组的首地址。

由于p指向了x数组的首地址,也就是x[0]的地址,所以答案A中的*p->b等价于*(x[0].b),其值为11(注意:运算符->优先于*);答案B中的p->a即是x[0].a,其值为100;答案C中的++p->a是找到p->a(其值为100),再将此值自增1,取增加1以后的值,故为101;答案D是先将指针p增1,指向x数组的第二个元素x[1],即(p++)->a在此等价于x[1].a,其值为300。

9.2 答案:D分析:本题中的初始数据的构成情况与上题相同。

如前所述,答案A的值为11;答案B的值与上题的答案D相同,为300;答案C是先取内容,后自增1,等价于*p->b, p++,故其值也为11;而答案D是p先自增1,指向x[1],后取值,等价于++p, *p->b,所以其值为31。

9.3 答案:D分析:关键字typedef是利用已定义的类型标识符来定义新的类型标识符。

它并不产生新的数据类型。

其一般形式为:typedef 类型名标识符;题中的long int就是一个已存在的类型名,而新定义的类型名BIGGY就代表着long int 这个类型标识符。

9.4 答案:D分析:由于本题中定义了一个名为st的结构,它由两个成员组成:一个是整型变量n;一个是指向自身结构的指针变量next。

接着又定义了具有这一类型的一维数组a和指针变量p。

a数组含有3个元素并赋有初值。

p指向a数组的第一个元素。

c语言9结构体与共用体

c语言9结构体与共用体

c语言9结构体与共用体九、结构体与共用体(一) 选择题1、C语言结构体类型变量在程序执行期间_________。

A.所有成员一直驻留在内存中B.只有一个成员驻留在内存中C.部分成员驻留在内存中D.没有成员驻留在内存中2、下面程序的运行结果是_________。

main(){struct cmplx{ int x;int y;}cnum[2]={1,3,2,7};printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);}A.0 B.1 C.3 D.63、设有如下定义:struct sk{int n;float x;}data ,*p;若要使p指向data中的n域,正确的赋值语句是_________。

A.p=&data.nB.*p=data.n;C.p=(struct sk *)&data.nD.p=(struct sk *)data.n4、以下对结构体变量stu1中成员age的非法引用是_________。

struct student{int age;int num;}stu1,*p;p=&stu1A.stu1.ageB.student.ageC.p->ageD.(*p).age5、下面对typedef的叙述中不正确的是_________。

A.用typedef可以定义各种类型名,但不能用来定义变量B.用typedef可以增加新类型C.用typedef只是将已存在的类型用一个新的标识符来代表D.使用typedef有利于程序的通用和移植6、以下scanf函数调用语句中对结构体变量成员的不正确引用是_________。

struct pupil{char name[20];int age;int sex;}pup[5],*p;p=pup;A.scanf("%s",pup[0].name);B.scanf("%d",&pup[0].age);C.scanf("%d",&(p->sex));D.scanf("%d",p->age);7、若有以下说明和定义union dt{int a;char b;double c;}data;以下叙述中错误的是_________。

C语言第七章选择题

C语言第七章选择题

C 语言选择) 8 713.设有如下定义: struct st {int a; float b;} st1, *pst; 若有 pst=&st1;,则对 st1 中的 a 域的正确引用是 A) (*pst).st1.a B) (*pst).a C) pst->st1.a D) pst.st1.a 714.若有以下定义: struct stru {int a; long b; char c[6];} sampl; 则以下赋值正确的是 A) sampl.c= "abcd"; B) strcpy(sampl.c, "abcd"); C) sampl->c= "abcd"; D) 以上均不正确 715.以下程序的输出结果是 main() {struct stru{int a; long b; char c[6]; }; printf("%d\n", sizeof(struct stru)); } A) 2 B) 4 C) 6 D) 12 716.以下程序的输出结果是 main() {struct cmplx{int x; int y;} cnum[2]={1,3,2,7}; printf("%d\n", cnum[0].y/cnum[0].x*cnum[1].x); }
C 语言选择题库
汕头大学许创编辑
结点插入到链表末尾的语句组是 data next data next ┌──┬───┐ ┌──┬───┐ head│ E │ +→│ F │ NULL│ └──┴───┘ └──┴───┘ ↑p A) s->next=NULL; p=p->next; p->next=s; B) p=p->next; s->next=p->next; p->next=s; C) p=p->next; s->next=p; p->next=s; D) p=(*p).next; (*s).next=(*p).next; (*p).next=s; 723.以下程序的输出结果是 #include int a[3][3]={1, 2, 3, 4, 5, 6, 7, 8, 9}, *p; main( ) {p=(int*)malloc(sizeof(int)); f(p, a); printf("%d\n", *p); } f(int *s, int p[ ][3]) {*s=p[1][1];} A) 1 B) 4 C) 7 D) 5

国家二级C语言(结构体和共用体、文件)机试模拟试卷3(题后含答案及解析)

国家二级C语言(结构体和共用体、文件)机试模拟试卷3(题后含答案及解析)

国家二级C语言(结构体和共用体、文件)机试模拟试卷3(题后含答案及解析)题型有:1. 选择题选择题1.若有语句typedef struet S{int g;char h;}T;,则下列叙述中正确的是( )。

A.可用S定义结构体变量B.可用T定义结构体变量C.S是struet类型的变量D.T是struet S类型的变量正确答案:B解析:本题考查typedef重新声明一种结构体类型。

那么T为结构体类型,而不是结构体变量,所以B选项正确。

知识模块:结构体和共用体2.设有语句typedef struet TT{char c;int a[4];}CIN;,则下列叙述中正确的是( )。

A.CIN是struet TT类型的变量B.TT是struet类型的变量C.可以用TT定义结构体变量D.可以用CIN定义结构体变量正确答案:D解析:本题考查typedef重新声明一种结构体类型。

其中CIN为结构体类型名,而不是结构体变量,所以D选项正确。

知识模块:结构体和共用体3.下列叙述中错误的是( )。

A.可以用typedef将已存在的类型用一个新的名字来代表B.可以通过typedef增加新的类型C.用typedef定义新的类型名后,原有类型名仍有效D.用typedef可以为各种类型起别名,但不能为变量起别名正确答案:B解析:本题考查typedef的用法。

typedef并不是增加一种新的类型,而是对已存在的类型用一个新的名字来代表,所以B选项错误。

知识模块:结构体和共用体4.有以下程序:#include<stdio.h>main( ){struet STU{char name[9];char sex;double score[2];};struet STU a={“Zhao”,’m’,85.0,90,0},b={“Qian”,’f’,95.0,92.0};b=a;prinff(“%s,%c,%2.0f,%2.0f\n”,b.name,b.sex,b.score[0],b.score[1]);}程序的运行结果是( )。

国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试

国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试

国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷1(题后含答案及解析)题型有:1. 选择题选择题1.若定义:int array[9],*p=array;并在以后的语句中未改变p的值,不能表示array[1]地址的是( )。

A.p+1B.array++C.array+1D.++p正确答案:B解析:本题选项C)中array++是先取array的值,后自增,所以是错误的。

知识模块:编译预处理和指针2.在说明语句”int*f( );”中,标识符f代表的是( )。

A.一个用于指向函数的指针变量B.一个返回值为指针类型的函数名C.一个用于指向一维数组的行指针D.一个用于指向整型数据的指针变量正确答案:B解析:本题主要考查指针函数和函数指针,本题申是指针函数,即f指向一个返回值为指针的函数。

知识模块:编译预处理和指针3.不合法的main(、)函数命令行参数表示形式是( )。

A.main(int a,char*c[])B.main(int argv,char*argc[])C.main(int arc,char*arv[][])D.main(int argc,char*argv[])正确答案:C解析:C语言中规定:在main( )函数中使用命令行参数时,第二个参数应该为字符型指针数组或字符型二级指针。

知识模块:编译预处理和指针4.有函数如下:char fun(char*p) { return p;} 该函数的返回值是( )。

A.无确切的值B.形参p自身的地址值C.形参p中存放的地址值D.一个临时存储单元的地址正确答案:C解析:本题中p是一个字符型的指针,p是一个地址,因此返回的是形参p 中地址值。

知识模块:编译预处理和指针5.下列程序的输出结果是( )。

struct U {int x,y,z;};main( ) { struct U s[2]={{1,2,3},{4,5,6));int t;t=s[0].x+s[1].y;printf(“%d\n”,t);}A.5B.6C.7D.8正确答案:B解析:本题中的”struct U”结构含有3个数值域,并定义了一个结构数组S,计算s[0]的x域与s[1]的y域之和,故s[0].x+s[1].y=1+5=6,答案为B)。

国家二级C语言(结构体、共用体、位运算及文件操作)机试模拟试

国家二级C语言(结构体、共用体、位运算及文件操作)机试模拟试

国家二级C语言(结构体、共用体、位运算及文件操作)机试模拟试卷6(题后含答案及解析)题型有:1. 选择题选择题1.以下结构体类型说明和变量定义中正确的是A.typedef struct{int n;char c;}REC;REC t1,t2;B.struct REC;{int n;char c;};REC t1,t2;C.typedef struct REC;{int n=0;char c=‘A’;}t1,t2;D.struct{int n;char c;)REC;REC t1,t2;正确答案:A解析:定义结构体类型的一般形式为:struct结构体名{成员列表}:struct 结构体名后不能加“;”号,所以选项B)、C)错误,选项D)中定义无名称的结构体类型同时定义结构体变量形式应为“stract t1,t2;”。

选项A)为用户自定义类型,其为正确的定义形式。

知识模块:结构体、共用体、位运算及文件操作2.若有定义typedef char T[10];T*a;上述定义中a的类型与下面选项中完全相同的是A.char(*a)[10];B.char*a;C.char a[10];D.char*a[10];正确答案:D解析:题目中利用typedef定义了字符数组类型T,而后定义了该类型的指针a,因此a为指针数组。

知识模块:结构体、共用体、位运算及文件操作3.以下叙述中错误的是A.typedef的作用是用一个新的标识符来代表已存在的类型名B.typedef说明的新类型名必须使用大写字母,否则会出编译错误C.可以用typedef说明的新类型名来定义变量D.用typedef可以说明一种新的类型名正确答案:B解析:typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原来类型名依然有效。

为了便于识别,一般习惯将新的类型名用大写字母表示。

知识模块:结构体、共用体、位运算及文件操作4.有以下程序#include<stdio.h>typedef struct{int b,p;}A;void f(A c)/*注意:c是结构变量名*/{int j;c.b+=1;c.p+=2;}main( ){i;A a={1,2};f(a);printf(“%d,%d\n”,a.b,a.p);}程序运行后的输出结果是A.2,4B.1,2C.1,4D.2,3正确答案:B解析:在C语言中,数据只能从实参单向传递给形参,称为“按值”传递。

编程选择题40道:C语言结构体与联合体:数据组织与管理.Tex

编程选择题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. 为了使结构体的定义更复杂。

结构体、共用体

结构体、共用体

结构体,公用体一、选择题:(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;述中正确的是()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、变量a所占的内存字节数是________。

(假设整型i n t为4字节)struct stu
{ char name[20];
long int n;
int score[4];
} a ;
A) 28 B) 30
C) 32 D) 46
C
2、下列程序的输出结果是
A)5 B)6 C)7 D)8
struct 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);
}
B
3、有如下定义
struct person{ char name[9]; int age;};
struct person calss[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、以下程序的输出是________。

struct st
{int x;int *y;} *p;
int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,dt[0],}; main()
{ p=aa;
printf("%d\n",++(p->x));
}
A) 10 B) 11
C) 51 D) 60
C
6、以下程序的输出结果是________。

struct HAR
{ int x,y; struct HAR *p; } h[2];
main()
{ int h[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) 12 B) 23
C) 14 D) 32
D
7、下面程序的输出是________。

main()
{
struct cmplx { int x; int y; } cnum[2]={1,3,2,7}; printf("%d\n",cnum[0].y /cnum[0].x * cnum[1].x); }
A) 0 B) 1
C) 3 D) 6
D
8、设有变量定义
struct stu
{int age;
int num;
}std,*p=&std;
能正确引用结构体变量std中成员age的表达式是
A) std->age B) *std->age
C) * D) (*p).age
D
9、设有定义语句
"struct {int x;int y;}d[2]={{1,3},{2,7}};",则printf("%d\n",d[0].y/d[0].x*d[1].x);的输出结果是
A) 0 B) 1
C) 3 D) 6
D
11、若有如下定义,则对data中的a成员的正确引用是
struct sk {int a;float b;}data,*p=&data;
A) (*p). B) (*p).a
C) p-> D) 、若有以下说明和定义语句,则变量w在内存中所占的字节数是
union aa {float x;float y;char c[6];};
struct st {union aa v;float w[5];double ave;}w;
A) 42 B) 34
C) 30 D) 26
B
15、变量a所占的内存字节数是
union U
{char st[4];
int i;
long l;
};
struct A
{int c;
union U u;
}a;
A) 4 B) 5
C) 6 D) 8
D
16、执行下面的程序后,输出的结果是struct 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);
}
A) 5 B) 6
C) 7 D) 8
C
18、下面程序的输出结果是
typedef union
{long x[2];
int y[4];
char z[8];
}MYTYPE;
MYTYPE them;
main()
{printf("%d\n",sizeof(them));}
A) 32 B) 16
C) 8 D) 24
C
19、若有以下的说明:
struct person
{char name[20];
int age;
char sex;
}a={"li ning",20,'m'},*p=&a;
则对字符串li ning的引用方式不可以的是A) (*p).name B)
C) D) p->name
B。

相关文档
最新文档