资源描述
福建省高等学校计算机等级考试(二级C语言)选择题试题库答案试题C1.在C语言源程序中,以下叙述正确的是()。A.main函数必须位于文件的开头B.每行只能写一条语句C.程序中的一个语句可以写成多行D.每个语句的最后必须有点号C2.关于C语言的源程序的叙述中,错误的是()。A.C语言的源程序由函数构成B.main函数可以书写在自定义函数之后C.必须包含有输入语句D.一行可以书写多个语句C3.关于C语言数据类型的叙述,正确的是()。A.枚举类型不是基本类型B.数组不是构造类型C.变量必须先定义后使用D.不允许使用空类型C4.C程序中main函数的位置()。A.必须在最开始B.必须在系统库函数后面C.可以在自定义函数后面D.必须在最后B5.C语言的函数体由()括起来。A.()B.)C.D./*/D6.关于C语言的叙述中,不正确的是()oA.C程序可由一个或多个函数组成B.C程序必须包含一个main()函数C.C程序的基本组成单位是函数D.注释说明只能位于一条语句的后面D7.以下叙述不正确的是()oA.C程序的执行总是从main函数开始B.一个C源程序必须包含一个main函数C.C语言程序的基本组成单位是函数D.在编译C程序源程序时,可发现注释中的拼写错误C8.结构化程序设计的三种基本结构是()。A.函数结构、分支结构、判断结构B.函数结构、嵌套结构、平行结构C.顺序结构、分支结构、循环结构D.分支结构、循环结构、嵌套结构C9.对于C语言源程序,以下叙述错误的是()。A.可以有空语句B.函数之间是平等的,在一个函数内部不能定义其它函数C.程序调试时如果没有提示错误,就能得到正确结果D.注释可以出现在语句的前面D10.下面关于C语言用户标识符的描述,正确的是()。A.不区分大小写B.用户标识符不能描述常量C.类型名也是用户标识符D.用户标识符可以作为变量名D11.以下()是正确的变量名。A.5fB.ifC.f.5D._f5D12.以下()是正确的常量。A.E-5B.1E5.1C.212,D.32766LD13.以下()是正确的变量名。A.a.beeB.-pllC.intD.p_HC14.以下()是正确的字符常量。单引号括起来 A.B/C/WD.n32anA15.以下()是不正确的字符串常量。双引号括起来A.!abc!B.n1242nC.n0nD.”B16.以下()是错误的整型常量。A.-OxcdfB.018 八进制数不能超过8C.OxeD.OilB17.以下()是正确的浮点数。A.e3/e前面必须有数字,指数必须为整数B.62C.2e4.5D.123A18.若有说明语句:charc95;则变量c包含()个字符。A.1 ddd:表示1到3位八进制数所代表的字符B.2 xhh表示1到2位十六进制数所代表的字符C.3D.语法错误A19.若有定义:inta=2;则正确的赋值表达式是()。A.a-=(a*3)B.double(-a)/(double)(-a)C.a*3D.a*4=3C20.语句x=(a=3,b=+a)运行后,x、a、b的值依次为()。A.3,3,4/逗号运算符及逗号表达式B.4,4,3C.4,4,4D.3,4,3B21.语句a=(3/4)+3%2;运行后,a的值为()。A.0B.1 注意除号/两边均为整型时,结果为整数(不含小数点)C.2D.3A22.char型变量存放的是()。考查变量类型A.ASCII代码值B.字符本身C.十进制代码值D.十六进制代码值C23.若有定义:intx,a;则语句x=(a=3,a+l);运行后,x、a的值依次为()。A.3,3 考查逗号表达式及逗号运算符B.4,4C.4,3D.3,4B24.若有定义:inta;则语句=(3*4)+2%3;运行后,a的值为()。A.12B.14C.11D.17A25.若有定义:inta,b;doublex,则以下不符合C语言语法的表达式是()。A.x%(-3)/%两侧均应为整型数据B.a+=-2C.a=b=2D.x=a+bB26.若有定义:intx=2,y=3;floati;,则以下符合C语言语法的表达式是()。A.x=x*3=2 x*3不是一个变量名B.x=(y=l)C.i=float(x)应改为 i=(float)xD.i%(-3)/%两侧均应为整型数据c27.设double型变量a,b,c,e均有值;对代数式(3ae)/(bc),不正确的C语言表达式是()。A.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*c/改为 3*a*e/b/cD.a*e/c/b*3B28.下面叙述正确的是()oA.2/3 与 2.0/3.0 等价B.(int)2.0/3 与 2/3 等价C.+5与6等价单独写+5是错误的,可以写成a=+5D/A与“A”等价A29.下面叙述中,错误的是()oA.其算术运算对象不包含函数B.%(模运算符)的运算对象只能为整型量C.算术运算符的结合方向是“自左至右”D.自加和自减运算符的结合方向是“自右至左”A30.下面叙述正确的是()。/+-只能用于变量,而不能用于常量或表达式A.强制类型转换运算的优先级高于算术运算B.若a和b是整型变量,(a+b)+是合法的C.是不合法的D/A+“B”是合法的B31.若有定义:int k,i=2,j=4;则表达式k=(+i)*(j-)的值是()。A.8B.12 注意前缀后缀的区别C.6D.9C32.设整型变量a为5,使b不为2的表达式是()。A.b=(+a)/3B.b=6-(a)C.b=a%2 结果为1D.b=a/2C33.若有定义:int a=l,b=2,c=3;则语句+a+b&+c;运行后b的值为()。A.1B.0C.2 注意运算的不完全性D.3B34.若有定义:int i,j;则表达式(i=2,j=5,i+,i+j+)的值是()。A.7B.8C.9D.10B35.若有定义:int a,b;则表达式(a=2,b=5,a*2,b+,a+b)的值是()。A.7B.8C.9D.10B36.若有定义:int m=5,n=3;则表达式(111+1,11+1,(-111)+(11-)的值是()。A.6B.7C.8D.9B37.已知inta;使用scanf()函数输入一个整数给变量a,正确的函数调用是()。A.scanf(n%dn,a);B.scanf(n%dn,&a);C.scanf(n%f;&a);D.scanf(n%lf&a);D38.已知double a;使用scanf()函数输入一个数值给变量a,正确的函数调用是()。A.scanf(n%ldn,&a);B.scanf(n%dn,&a);C.scanf(n%7.2f;&a);输入数据时不能规定精度D.scanf(n%lf&a);B39.已知char a;使用scanf()函数输入一个字符给变量a,不正确的函数调用是()。A.scanf(n%dn,&a);B.scanf(n%lf&a);字符型变量与整型等价,但不与浮点型等价C.scanf(n%cn,&a);D.scanf(n%un,&a);B40.putchar。函数的功能是向终端输出()。/char*strO;.;puts(strO);A.多个字符B.一个字符C.一个实型变量值D.一个整型变量表达式D41.getchar()函数的功能是从终端输入()。A.一个整型变量值B.一个实型变量值C.多个字符D.一个字符D42.若有定义:int x=1234,y=123,z=12;则语句 printf(n%4d+%3d+%2dn,x,y,z);运行后的 输出结果为()。A.123412312B.12341234123412341231231231212C.1234+1234+1234D.1234+123+12A43.已有如下定义和输入语句,int a;char cl,c2;scanf(n%d%c%cn,&a,&c 1,&c2);若要求a、cl、c2的值分别为10、A和B,正确的数据输入是()。A.10AB/输入数据时,遇空格、回车、TAB、及非法输入 或按规定的宽度结束B.10 A BC.10A BD.10 ABB44.已有如下定义和输入语句:int a,b;scanf(n%d,%dn,&a,&b);/“格式控制”字符串中除了格式说明还有其他字符,则输入 时应在相应位置输入若要求a、b的值分别为10和20,正确的数据输入是()。A.10 20B.10,20C.a=10,b=20D.10;20D45.以下程序的运行结果是()。void main()(int a=65;char c=A;printf(n%x,%dn,a,c);A.65,aB.41,aC.65,65D.41,65A46.下面叙述中,()不是结构化程序设计中的三种基本结构之一。A.数据结构B.选择结构C.循环结构D.顺序结构A47.下面叙述中,()不是结构化程序设计三种基本结构的共同特点。A.先判断后执行B.单入口,单出口C.程序中没有执行不到的语句D.无死循环A48.结构化程序设计不包括()。A.最优化B.自顶而下,逐步细化C.模块化设计D.结构化编码D49.以下运算符中优先级最高的是()。A.B.|C.&D.+初等运算符O 口 单目 算术关系逻辑(不含!)赋值逗号A50.若有定义:int x=3,y=4;则表达式!x|y的值为()。A.1B.0C.3D.4A51.若有定义:inti=7,j=8;则表达式i=j|ivj的值为()。A.1B.变量i的值C.0D.变量j的值C52.若希望当a的值为奇数时,表达式的值为慎”,a的值为偶数时,表达式的值为“假。则不能满足要求的表达式是()oA.a%2=lB.!(a%2=0)C.!(a%2)D.a%2D53.若有定义:intx=3,y=4,z=5;则值为0的表达式是()。A/x&yB.x=yC.x y+z&y-zD.!(xy)&!z|l)考查运算符优先级A54.若有定义:int a=5,b=2,c=l;则表达式a-bc b=c的值是()。A.0B.1C.2D.-1A55.已知double a=5.2;则正确的赋值表达式是()。A.a+=a-=(a=4)*(a=3)B.a=a*3=2C.a%3D.a=double(-3)A56.已知char a=R;则正确的赋值表达式是()。A.a=(a+)%4B.a+2=3C.a+=256-D.a=A078,A57.已知int a=R;则正确的表达式是()。A.a%10B.a=int(3e2)C.2*a=a+D.a=a+a=a+3 与C同属一类错误A58.设单精度型变量f、g的值均为2.0,使f为4.0的表达式是()。A.f=gB.f-=g+2C.#=g-6D.f7=g*10B59.若有定义:float x=3.5;int z=8;则表达式x+z%3/4的值为()。A.3.75B.3.5C.3D.4A60.若有定义血2=15=22=3,(1=4不=5,7=6;则表达式(*=213)&(7=0(1)的值为()。A.0B.1C.5D.6A61.若有定义:int a=2,b=3;float x=3.5,y=2.5;贝ll表达式(float)(a+b)/2+(int)x%(int)y 的值 是()。/(float)(a+b)/2=2.5A.3.5B.3.0C.2.5D.2.0C62.若有定义:int b=7;float a=2.5,c=4.7;则表达式 a+(b/2*(int)(a+c)/2)%4 的值是()。A.2.5/(b/2*(int)(a+c)/2)=10 注意运算顺序B.3.5C.4.5D.5.5C63.若有定义:int a=6,b=2;char cl=R,c2=b;则表达式 a+b%5+c2-cl 的值是()。A.7B.8C.9D.表达式错误B64.以下的if语句中,x的值一定被重新赋值的是()。A.if(x=y)x+=y;B.if(xy&x!=y);注意if语句后的空语句;x+=y;C.if(x!=y)scanf(n%dn,&x);else scanf(n%dn,&y);D.if(xy)z=x+y;else z=x-y;A.3B.-1C.4D.不确定D68.若有定义inta=l,b=2,c=3;则执行以下程序段后a,b,c的值分别为()。if(a=6)printf(n%dnn,n);elseprintf(n%dnn,+n);A.4B.5C.6D.7B73.设有整型变量x,下述语句()不会出现死循环。A.fbr(;x+=l);B.fbr(;(x=getchar()!=n,;);C.while(l)x+;D.for(x=10;x);B74.对于整型变量x,与while(!x)等价的是()。A.while(x!=0)B.while(x=0)C.while(x!=l)D.while(x)A75.对于整型变量x和y,语句 for(x=0,y=0;(y!=12 3)&(x4);x+)y+;中的“y+;”被执行()oA.4次B.0次C.123 次D.3次B76.在c语言中while循环和dowhile循环的主要区别是()。A.do-while循环体内可以使用break语句,while循环体内不能使用break语句B.do-while的循环体至少无条件执行一次,while的循环体不是C.dowhile循环体内可以使用continue语句,while循环体内不能使用continue语句D.while的循环体至少无条件执行一次,do-while的循环体不是B77.以下程序段运行后,循环体运行的次数为()。int i=10,x;fbr(;i10;i+)x=x+i;A.10B.0C.1D.无限D78.以下程序段运行后变量n的值为()。int i=l,n=l;for(;i3;i+)continue;n=n+i;A.4B.3C.2D.1B79.以下程序的运行结果是()。void main()(int sum=0,item=0;while(item 5)(item+;sum+=item;if(sum=5)break;printf(n%dnn,sum);A.10B.15C.5D.6c80.以下程序的运行结果是()o void main()(int sum=0,item=0;while(item=6)break;printf(n%dnn,sum);A.10B.15C.6D.7B81.以下程序的运行结果是()o void main()(int sum=0,item=0;while(item 5)(item+;if(item=2)continue;sum+=item;printf(n%dnn,sum);A.10B.13C.15D.1A82.下列数组定义中,正确的是()oA.int a5=0;B.int a=0 1 2;/int a=0,1,2;注意元素与元素之间加逗号C.int a5=0;/int a5=0;D.int a口;必须指明数组大小A83.下列数组定义中,正确的是()oA.int a10;B.int n=10,an;下标必须是常量表达式C.int N=10;int aN;D.int n;scanff%d,&n);int an;A84.已知int a10;则对a数组元素引用不正确的是()。A.a10 10个元素的数组下标范围从0到9,故此题越界B.a3+5C.a10-10 引用数组元素时,下标可以是整型常量或整型表达式D.a5B85.若有定义:inta3=0,l,2;则 al的值为()。A.0B.1C.2D.3A86.若有定义:inta5=l,2,3,4,5;则语句 al=a3+a2+2-a3-l;运行后 al的值为()oA.6B.5C.1D.2D87.以下能对一维数组a进行正确初始化的语句是()。A.int a5=(0,0,0,0,0);B.int a5=0;注意使用大括号C.int a5=123,4,5,6,7;多余 2 个D.inta=Og定义一个只有一个兀素的一维数组,指为0D88.下面程序段的运行结果是()。int i=0,a=3,4,5,4,3;doai+;while(a+i5);fbr(i=0;i5);for(i=0;i2);fbr(i=0;i5;i+)printf(n%d n,ai);A.11 2 3 4 5B.1 2 3 4 5C.11 12 13 14 15D.11 12 3 4 5C91.设有如下程序段:inta33=l,0,2,1,021,01,i,j,s=0;for(i=0;i3;i+)fdr(j=0;jl,2,3,4,5,6,7,8;/考查二维数组的初始化 则数组a的行数是()。A.2B.3C.4D.无法确定的D93.以下数组定义中,正确的是()oA.inta23=l,2,3,4,5,6,7;多余 1 个B.int a 口口=1,2,3,4,5,6,7,8,9;第二维长度不能省C.inta2 1,2,3A5,6;D.inta4 6;A94.若有定义皿前34=1,2,0,123;则不1的值为()0A.0B.152C.1D.3A95.若有定义:inta33;则表达式的值为()。A.7/&a2l-a代表两者之间的元素个数,类似指向同种类型的指针相减B.8C.6D.9c96.若有定义血1=0k0;血巾3=123,4,5,6,7,8,9;则以下程序段运行后x的值为()ofor(;i0,;C.inta22l,2,3;D.intal,2,3,4);D99.若有定义 int 2口3=123,4,5,6,7,8,9;贝1表达式 sizeof(a)/sizeof(a0)的值为()oA.3B.4C.5D.9A100.设有以下变量定义:char strl=wstringn,str28,*str3,*str4=nstringn;()是正确的。A.strcpy(str 1,nChinan);B.str2=China”;C.strcpy(*str3:,China);D.strcpy(str40,HChinan);D101.有如下定义:char str6=;则语句:printf(n%sn,str);的输出结果是()。A.abB.abdefC.ab0D.abC102.设有如下数组定义:char str8=nFuJiann);则分配给数组str的存储空间是()个字节。A.6B.7C.8D.9B103.若有定义:char a口iabcdefcharblJixyz”;则以下程序段运行后屏幕输出为()。strcpy(a,b);printf(n%cn,a2);A.cB.zC.0D.dC104.以下程序段运行后屏幕输出为()o char a-,abc0misH;printf(n%dn,strlen(a);A.5B.8C.3D.4B105.若有定义:int a=2;则语句a=strcmp(”miss”Jmiss”);运行后a的值为()。A.1 相等返回0,字符串1字符串2,返回一个正整数,否则返回负整数B.0/strcmp(strl,str2)C.-1D.2B106.以下程序段运行后屏幕输出为()ochar str口=”abcd”;注意代表一个反斜杠字符printf(n%dn,strlen(str);A.4B.5C.6D.7A107.以下程序段运行后屏幕输出为()。char str80;strcpy(str,nhellon);printf(n%dn,strlen(str);A.5B.6C.7D.80B108.若有定义:char strl6=nabcdmn,*ps,*str2=,abcdeff;()是正确的。A.strcpy(strl,str2);B.表达式strcmp(strl,st的值大于0C.strl=str2;D.表达式strlen(strl)的值为6A109.设有如下函数定义:int fun(char*str)char*p=str;while(*p!=0)p+;return(p-str);则以下语句执行后的输出结果是()。返回字符串个数 printf(n%dnn,fun(nStudentn);A.7B.8C.9D.10A110.以下程序的运行结果是()oint fun(int array4 4)intj;for(j=0;j4;j+)printf(n%2dn,array2j);printf(nnn);main()int a44=0,1,2,0,1,0,0,4,2,0,0,5,0,4,5,0;fiin(a);A.2 0 0 5B.1 0 04C.0 1 2 0D.0 4 5 0C111.如下firn函数的类型是()。fun(float x)double y;int z;y=x*x;z=(int)y;retum(z);A.voidB.doubleC.intD.floatB112.以下程序运行后屏幕输出为()。#includeint fifint x,int y)(retum(x+y);main()(int a=2,b=3,c;c=f(a,b);printf(n%d+%d=%dnn,a,b,c);A.0B.2+3=5C.2+3=0D.3+2=5D113.以下程序运行后屏幕输出为()。考查全局变量与局部变量的区别及范围#includeint a=2,b=3;int max(int a,int b)(int c;c=ab?a:b;retum(c);main()(int a=4;printf(n%dn,max(a,b);A.2,3B.2C.3D.4B114.以下程序运行后屏幕输出为()。#includevoid f(int i)两个函数中的a不一样(int a=2;a=i+;printf(n%d,n,a);main()(int a=l,c=3;f(c);a=c+;printf(n%dn,a);A.4,3B.3,3C.4,5D.3,5D115.若有如下函数定义:注意静态变量的使用int fun()(static int k=0;return+k;以下程序段运行后屏幕输出为()。int i;fbr(i=l;i=5;i+)fiin();printf(n%dn,fun();A.0B.1C.5D.6D116.下面程序的输出结果是()o#include int global=100;fim()(int global=5;return+global;void main()(printf(n%dnn,fun();A.100B.101C.5D.6B117.下列关于C语言函数的描述中,正确的是()o A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用都可以嵌套 D.函数的定义和函数的调用都不可以嵌套D118.若有以下宏定义,#define MOD(x,y)x%y则执行以下程序段后,z的值是()。int z,a=15,b=100;z=MOD(b,a);A.100B.15C.11D.10B119.以下叙述中,正确的是()。A.4a#define PRICE=30”定义了与30等价的符号常量PRICEB.预编译处理命令行都必须以“r开头C.宏名只能包含大写字母和数字字符可以包括小写字母D.在程序的一行上可以书写几个有效的宏定义A120.以下叙述中,正确的是()oA.宏展开不占用运行时间,只占用编译时间B.预编译处理命令行必须以分号结束C.一个源程序只能有一个预编译处理命令行D.使用带参数的宏定义时,应该说明每个参数的数据类型C121.以下的叙述中不正确的是()oA.宏展开不占用运行时间,只占用编译时间B.宏名无类型C.宏名必须用大写字母表示D.预处理命令行都必须以#号开始A122.若有定义:#definePI3,则表达式PI*2*2的值为()。A.12B.4C.3D.不确定C123.以下程序运行后,屏幕输出为()。#define MIN(a,b)(a)(b)?(a):(b)main()int x=2,y=3,z;z=2*MIN(x,y);printf(n%dn,z);A.2B.3C.4D.6A124.下面程序的输出结果是()。#include#define SQR(x)(x*x)void main()(int a,b=3;a=SQR(b+2);printf(nn%dn,a);A.11B.25C.不定值D.产生错误c125.下面程序的输出结果是()o#include#define ONE 1#define TWO ONE+1#define THREE TWO+1void main()(printf(n%dnn,THREE-ONE);A.产生错误B.1C.2D.3B126.以下叙述中正确的是()oA.预处理命令行必须位于C源程序的起始位置B.在C语言中,预处理命令行都以“伊开头C.每个C程序必须在开头包含预处理命令行:#includeD.C语言的预处理不能实现宏定义和条件编译的功能D127.设有以下语句,则()是对a数组元素的不正确引用,其中OSiVlO。int a10=0,l,2,3,4,5,6,7,8,9,*p=a;A.ap-aB.*(&ai)C.piD.*(*(a+i)C128.对于基类型相同的两个指针变量之间,不能进行的运算是()。A.B.二C.+D.-B129.执行以下程序段的输出结果是()。int a=10,*p=&a;printf(“d”,+*p);A.10B.11C.变量a的地址D.变量a的地址+1A130.以下程序段运行后*(p+3)的值为()。char a=ngoodn;char*p;p=a;A.dB/0C.存放d的地址D.Wc131.以下程序段运行后*(+p)的值为()o char a5=nworkn;char*p;p=a;A/wB.存放W的地址C.VD.存放0的地址B132.若有定义:int*p,a=4;p=&a;则以下均代表地址的是()。A.a,pB.&a,pC.&a/pD.a,*pD133.若有说明语句:double*p,a;则能通过scanf语句正确给输入项读入数据的程序段 是()。A.*p=&a;scanf(”f,p);B.*p=&a;scanf(”f,*p);C.p=&a;scanf(%lF,*p);D.p=&a;scanf(n%lf 1,p);A134.在16位编译系统上,若有定义inta口=10,20,30,*p=&a;当执行p+;后下列叙述 错误的是()。A.p向高地址移了一个字节B.p与a+1等价C.语句 printf(d”,*p);输出 20D.p指向数组元素alB135.下面语句正确的是()oA.int*p;*p=20;B.char*s=abcdef;printf(n%snn,s);C.char str=nabcdn;str+;数组名不能改变D.char str=,a7b7c,;printf(n%sn,str);/%s 输出字符串,必须以、(T结束D136.若有以下程序段,且0Si4,0j3,则不能正确访问a数组元素的是()。intij,(*P)3;int a3=l,2,3,4,5,6,7,8,9,10,11,12);P=a;A.*(*(a+i)+j)B.piUC.(*(p+i)UD.pi+jB137.若函数firn的函数头为:int fun(int i,int j)且函数指针变量p定义如下:int(*p)(int i,intj);则要使指针p指向函数fim的赋值语句是()0A.p=*fim;B.p=fun;C.p=fun(i,j);D.D138.设有如下变量定义:char aa3=fa?b?c?d?e:f;char(*p)3=aa;则以下程序段的运行结果是()o p+;printf(”c”,*p);A.aB.bC.cD.dD139.以下程序段运行后x的值为()。inta=l,2,3,4,5,6,7,8;int i,x,*p;x=l;p=&a2;for(i=0;il,253,b4,2,5;int*p,*q;int i,x;p=a;q=b;for(i=0;i3;i+)if(*(p+i)=*(q+i)x=*(p+i)*2;A.2B.4C.6D.不确定C141.以下程序段运行后x的值为()。inta9=l,2,3,4,5,6,3,8,9;int*p,*q;int i,x;p=&a0;q=&a 网;for(i=0;i3;i+)if(*(p+i 户=*(q-i)x=*(p+i)*2;A.2B.4C.6D.不确定A142.下面程序的输出结果是()。#include void main()(int i;char*s=abc;for(i=0;i3;i+)printf(n%snn,s+i);A.abc be cB.c be abcC.abc c beD.a ab abcA143.下面程序的输出结果是()。#include void main()(char*str=12345,*ps=str+4;printf(n%cnn,ps-4);A.1B.2C.3D.错误A144.以下程序执行时,输入1 2 3 4 5回车,输出为:#include#define N 5 void main()(int aN;int*p=a;while(pa)printf(n%d”,*(-p);A.5 4 3 2 1B.1 23 45C.2 3 4 5 1D.4 3 2 1 5c145.设有以下定义语句:struct studentint num;char name10;float score;wang,zhang;则不正确的叙述是()oA.struct是结构体类型的关键字B.zhang是结构体变量名C.wang是结构体类型名D.num,name,score都是结构体类型student的成员名B146.设有以下定义语句:struct studentint num;char name10;float score;wang,zhang;则变量wang所占的内存字节数是()。A.14B.16C.18D.20B147.设有如下定义语句:union u_typeint i;二个字节double x;八个字节float f;四个字节);struct str_type char str100;union utype u2;;则语句printf(”d”,sizeof(struct strjype);”的输出结果是()。A.100B.116C.120D.200c148.若有定义:struct teacherint num;char name10;char sex;int age;float score;teacher 1;则变量teacherl所占用的内存字节数是()。A.5B.14C.19D.20c149.下列对结构体类型变量定义不正确的是()。A.struct teacherint num;int age;teach 1;B.struct int num;int age;teach l,teach2;C.struct int num;int age;teacher;struct teacher teach 1;D.struct teacher int num;int age;VJ,struct teacher teach 1;D150.若有定义:struct teacherint num;char sex;int age;teacher 1;则下列叙述不正确的是()oA.struct是结构体类型的关键字B.struct teacher是用户定义的结构体类型C.num,sex,age都是结构体变量teacherl的成员D.teacherl是结构体类型名D151.以下程序的运行结果是()。#include union Utypeint i;float f;u2;void main()(printf(Hsizeof(u):%dnn,sizeof(u);A.2B.4C.6D.8D152.以下程序的运行结果是()。#include union Utypeint i;float f;);struct char ch2;int i;union Utype u;a;void main()(printfi(nsizeofi(a):%dnn,sizeofi(a);A.5B.6C.7D.8D153.以下C语言共用体类型数据的描述中,不正确的是()。A.共用体变量占的内存大小等于所需内存最大的成员所占的内存B.共用体类型可以出现在结构体类型定义中C.在定义共用体变量的同时允许对第一个成员的值进行初始化D.同一共用体中各成员的首地址不相同A154.若有以下定义:struct linkint data;struct link*next;*head,*p;并已建立如下图所示的链表结构:1 1 1 1 1 1 1 1 1head data|next+一|data|next十一.|data|NULL|1 1 1 1 1 1 1 1 1指针p指向如下结点:1 1 1p 一|data|next|1 1 1则能够把p所指结点插入到链表中成为链表第2个结点的程序段是()。A.p-next=head-next;head-next=p;B.head-next=p;p-next=head-next;C.p.next=head.next;head.next=p;D.(*head).next=p;(*p).next=(*head).next;D155.若有以下定义:struct linkint data;struct link*next;a,b,c,*head,*p;其中,指针head指向变量a,p指向变量c,a.next指向变量b,链表结构如下图所示:a b c1 1 1 1 1 1 1 1 1head data|next+一|data|NULL|p 7|data|next|1 1 1 1 1 1 1 1 1则能够把c插入到a和b之间并形成新链表的程序段是()。A.a.next=c;c.next=b;B.head.next=p;p.next=head.next;C.head-next=&c;p-next=head-next;D.(*head).next=p;(*p).next=&b;A156.若有以下定义:struct linkint data;struct link*next;*head,*p;并已建立如下图所示的链表结构:P1 1 1 1 1 1 1 1 1head data|next-j|data|next+一.-|data|NULL|1_1_1 1_1_1 1_1_1则能保留链表其它结点,而删除p所指向结点的程序段是()。A.head-next=p-next;free(p);B.head-next=p;p-next=head-next;free(p);C.free(p);head-next=p;p-next=head-next;D.free(p);head-next=p-next;A157.若有定义:struct nodeint data;struct node*next;);及函数:void fun(struct node*head)struct node*p=head;while(p)struct node*q=p-next;free(p);p=q;调用时head是指向链表首结点的指针,整个链表的结构如下图:1 1 1 1-1 1 1 1 1head一|2|+一|15|十一.一|27|十一NULL1 1 1 1 1 1 1 1 1则函数fun()的功能是()A.删除整个单向链表B.删除单向链表中的一个结点C.显示单向链表中的所有数据D.创建单向链表C158.若有定义:struct nodeint data;struct node*next;);及函数:void fun(struct node*head)struct node*p=head;while(p)(printf(n%d”,p-data);p=p-next;break;调用时head是指向链表首结点的指针,整个链表的结构如下图:1 1 1 1 1 1 1 1 1head一|5|+一|17|十一.一|38|+NULL1 1 1 1 1 1 1 1 1则函数fim()的功能是()A.删除
展开阅读全文