1、二级 C 语言笔试-42 及答案解析(总分:94.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.结构化程序流程图中一般包含 3 种基本结构。下述结构中,_不属于其基本结构。(分数:2.00)A.顺序结构B.嵌套结构C.循环结构D.条件结构2.计算机中,能够用来与外存交换信息的是_。(分数:2.00)A.键盘B.RAMC.显示器D.ROM3.有如下说明:int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为 9 的表达式是_。(分数:2.00)A.*p+9B.*(p+8)C.*p+=9D.p+84.在 C 语言中,引用数组元素时,其数组下标的数
2、据类型允许是_。(分数:2.00)A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式5.以下的 for 循环_。for(x=0,y=0;(y!=123)|(x4);x+)(分数:2.00)A.是无限循环B.循环次数不定C.执行 4 次D.执行 3 次6.以下正确的说法是_。(分数:2.00)A.实参和与其对应的形参各占用独立的存储单元B.实参和与其对应的形参共用一个存储单元C.只有当实参和与其对应的形参同名时才共用存储单元D.型参是虚拟的,函数在没有被调用时,不占用存储单元7.以下程序的输出结果是_。main()int a33=1,2,3,4,5,6,i,j,s=0;for
3、(i=1;i3;i+)for(j=0;j=i;j+) s+=aij;printf(“%d/n“,s);(分数:2.00)A.18B.19C.20D.218.计算机的存储器完整的应包括_。(分数:2.00)A.内存储器与外存储器B.磁盘、磁带与光盘C.RAM 与 ROMD.软盘与硬盘9.在具有 n(n1)个结点的完全二叉树中,结点 i(2in)的左孩子结点是_。(分数:2.00)A.2iB.2i+1C.不存在D.2i-110.对一个关系投影操作以后,新关系的元组个数_原来关系的元组个数。(分数:2.00)A.小于B.小于或等于C.等于D.大于11.若有以下定义,则正确的 swish 语句是_。f
4、loat x;int a,b;(分数:1.00)A.switch(x)case 1.0:printf(“*/n“);case 2.0:printf(“*/n“);B.switch(x)case 1,2:printf(“*/n“);case 3:printf(“*/n“);C.switch(a+b)case 1:printf(“/n“);case 1+2:printf(“*/n“);D.switch(a+b);case 1:printf(“*/n“);case 2:printf(“*/n“);12.在下列叙述中,正确的一条是_。(分数:1.00)A.对 while 循环、do-while 循环和
5、 for 循环,可以用 continue 语句跳出循环B.表达式 1+23 和 sizeof(3.8)的结果分别为 24 和 8C.函数 fputc(c, stdout)与 putchar(c)的结果相同D.在有参函数中,定义函数中指定的形参变量在程序一开始执行时便分配内存单元13.以下程序段的输出结果是_。int x=5;doptintf(“%2d/n“,x-);while(!x);(分数:1.00)A.5B.无任何输出C.4D.陷入死循环14.以下程序的输出结果是_。main()int i,k,a10,p3;k=5;for(i=0;i10;i+) ai=i;for(i=0;i3;i+) p
6、i=ai*(i+1);for(i=0;i3;i+) k+=pi*2;printf(“%d/n“,k);(分数:1.00)A.20B.21C.22D.2315.在宏定义#define PI 3.14159 中,用宏名 PI 代替一个_。(分数:1.00)A.单精度数B.双精度数C.常量D.字符串16.若运行时输入 12,则以下程序的输出结果是_。main()intx,y;scanf(“%d“,y=x12? x+1:x-1;printf(“%d/n“,y);(分数:1.00)A.10B.11C.12D.1317.以下程序的输出结果是_。main()int a=-1,b=1,k;if(+a0)els
7、eprintf(“%d %d/n“,b,(分数:1.00)A.;A) -18.以下所列的 c 语言常量中,错误的是_。(分数:1.00)A.0xFFB.1.2e0.5C.2LD./7219.若 a 为 int 类型,且其值为 3,则执行完表达式 a+=a-=a*a 后,a 的值是_。(分数:1.00)A.-3B.9C.-12D.620.当执行下面程序且输入 a boy 时,输出的结果是_。#includestdio.h#includestring.hmain()char ss81=“A BOY“,hh81,*pt;scanf(“%s“,hh);pt=strcat(ss,hh);puts(pt)
8、;printf(“%s/n“,hh);(分数:1.00)A.A BOY aaB.A BOY a boya boyC.A BOY a boy aD.A BOY a boy a boy21.十进制数 555 的十六进制数表示形式为_。(分数:1.00)A.220B.22AC.22BD.22C22.设有如下定义,则以下叙述中正确的是_。int(*ptr)();(分数:1.00)A.ptr 是指向一维数组的指针变量B.ptr 是指向 int 型数据的指针变量C.ptr 是指向函数的指针,该函数返回一个 int 型数据D.ptr 是一个函数名,该函数的返回值是指向 int 型数据的指针23.设 x、y、
9、t 均为血型变量,则执行语句 x=y=3;t=+x|+y;后,y 的值为_。(分数:1.00)A.不定值B.4C.3D.124.在多媒体计算机系统中,不能存储多媒体信息的是_。(分数:1.00)A.光盘B.磁盘C.磁带D.光缆25.C 语言中 while 循环和 do-while 循环的主要区别是_。(分数:1.00)A.do-while 的循环体至少无条件执行一次B.while 的循环控制条件比 do-while 的循环控制条件严格C.do-while 允许从外部转到循环体内D.do-while 的循环体不能是复合语句26.设下面程序的可执行文件名为 prg.exe,在该程序所在子目录下输入
10、以下命令行:prg hello good回车则程序的输出结果是_。main()(int argc,char*argv)int i;if(argc=0)return;for(i=1;iargc;i+)printf(“%c“,*argvi);(分数:1.00)A.hello goodB.hgC.helD.hellogood27.若已定义 x 和 y 为 double 类型,则表达式 x=1,y=x+5/2 的值是_。(分数:1.00)A.3B.4C.3.0D.3.528.下面程序的输出结果是_。main()int a=1,2,3,4,5,6,7,8,9,0,*p;p=a;ptintf(“%d/n“
11、,*p+9);(分数:1.00)A.0B.1C.10D.929.C 语言中,运算对象必须是整型数的运算符是_。(分数:1.00)A.%B./C.%和/D.*30.执行下面的语句后,表达式*(p0+1)+*(q+2)的值为_。int a=5,4,3,2,1,*p=a+3,a+2,a+1,a,*q=p;(分数:1.00)A.8B.7C.6D.531.以下对 C 语言中共用体类型数据的正确叙述是_。(分数:1.00)A.可以对共用体变量名直接赋值B.一个共用体变量中可以同时存放其所有成员C.一个共用体变量中不能同时存放其所有成员D.共用体类型定义中不能出现结构体类型的成员32.若有说明:int s2
12、3=0;,则下面正确的叙述是_。(分数:1.00)A.只有元素 s00可得到初值 0B.此说明语句不正确C.数组 s 中各元素都可得到初值,但其值不一定为 0D.数组 s 中每个元素均可得到初值 033.设有以下语句:char a=3,b=6,c;c=ab2;则 c 的二进制值是_。(分数:1.00)A.00011011B.00010100C.00011100D.0001100034.堆排序是一种_排序。(分数:1.00)A.插入B.选择C.交换D.归并35.以下正确的叙述是_。(分数:1.00)A.C 语言允许 main 函数带形参,且形参个数和形参名均可由用户指定B.C 语言允许 main
13、 函数带形参,形参名只能是 argc 和 argvC.当 main 函数带有形参时,传给形参的值只能从命令行中得到D.若有说明:main(int argc,char *argv),则形参 argc 的值必须大于 136.以下程序的输出是_。struct stint x;int*y;*p;int dt4=10,20,30,40;struct st aa4=50,main()p=aa;printf(“%d/n“,+(p-X);(分数:1.00)A.51B.11C.50D.6037.设有如下的函数_。f(x)float x;printf(“/n%d“,x*x);则函数类型(分数:1.00)A.与参数
14、 x 类型相同B.是 voidC.是 intD.无法确定38.若有以下定义和语句:char*s1=“12345“,*s2=“1234“;printf(“%d/n“,strlen(strcpy(s1,s2);则输出结果是_。(分数:1.00)A.4B.5C.9D.1039.以下所列的各函数首部中,正确的是_。(分数:1.00)A.void play(Var:Integer,var b:Integer)B.void play(int a,b)C.void play(int a,intb)D.Sub play(a as integer,b as integer)40.当 a=1,b=3,c=5,d=
15、4 时,执行下面一段程序后,x 的值为_。if(ab)if(cd) x=1;elseif(ac)if(bd) x=2;elsex=3;elsex=6;elsex=7;(分数:1.00)A.1B.2C.3D.641.在 C 语言中,函数的隐含存储类别是_。(分数:1.00)A.autoB.staticC.externD.无存储类别42.以下程序的输出结果是_。int d=1;fun(int p)static int d=5;d+=p;printf(“%d “,d);return(d);main()int a=3;printf(“%d/n“,fun(a+fun(d);(分数:1.00)A.699B
16、.669C.6 15 15D.661543.下列程序的输出结果是_。#includestdio.hmain()char *p1,*p2,str50=“xyz“;p1=“abcd“;p2=“ABCD“;strcpy(str+2,strcat(p1+2,p2+1);ptintf(“%s“,str);(分数:1.00)A.xyabcABB.abcABzC.ABabczD.xycdBCD44.已知字母 A 的 ASC码为十进制数的 65,下面程序的输出是_。main()char ch1,ch2;ch1=A+5-3;ch2=A+6-3;printf(“%d,%c/n“,ch1,ch2);(分数:1.00
17、)A.67,DB.B,CC.C,DD.不确定的值45.下列关于“数据库系统(DBS)”的叙述中,正确的一条是_。(分数:1.00)A.DBS 是指在计算机系统中引入数据库后的系统构成B.DBS 是帮助用户建立、使用和管理数据库的一种计算机软件C.DBS 是用户建立的若干数据库文件的集合D.DBS 是一种新颖的关系数据库管理系统46.瀑布模型适合于_。(分数:1.00)A.大型软件系统开发B.中型软件系统开发C.小型软件系统开发D.大、中、小型软件系统开发47.字符0的 ASC码的十进制数为 48,且数组的第 0 个元素在低位,则以下程序的输出结果是_。#includestdio.hmain()
18、unionint i2;long k;char c4;r,*s=s-i0=0x39;s-i1=0x38;printf(“%c/n“,s-c0);(分数:1.00)A.39B.9C.38D.848.若有以下定义:int a=1,2,3,4,5,6,7;char c1=b,c2=1;则数值不为 1 的表达式是_。(分数:1.00)A.a0B.c-c1C.a1-c2D.c1-049.若有宏定义如下:#define X 5#define Y X+1#define Z Y*X/2以下程序段的输出结果是_。int a;a=Y;printf(“%d/n“,Z);printf(“%d/n“,-(分数:1.00
19、)A.;A) 76B) 126C) 125D) 750.下列程序的输出结果是_。main()char a10=9,8,7,6,5,4,3,2,1,0,*p=a+5;printf(“%d“,*-p);(分数:1.00)A.非法B.a4的地址C.5D.3二、填空题(总题数:17,分数:34.00)51.十进制数 111 用八位二进制数表示为 【1】 。(分数:2.00)填空项 1:_52.对于一棵具有 n 个结点的树,该树中所有结点的度为 【2】 。(分数:2.00)填空项 1:_53.瀑布模型将软件生存周期划分为 【3】 、开发和运行 3 个阶段。(分数:2.00)填空项 1:_54.关系可以有
20、 3 种类型,即基本关系(又称基本表或基表)、查询表和 【4】 。(分数:2.00)填空项 1:_55.存储 300 个 1616 点阵的汉字信息需要 【5】 字节。(分数:2.00)填空项 1:_56.表示条件 10x100 或 x0 的 C 语言表达式是 【6】 。(分数:2.00)填空项 1:_57.下面程序的输出结果是 【7】 。struct aaint x,*y;*p;int a8=10,20,30,40,50,60,70,80;struct aa b4=100,main()p=b;printf(%d“,*+p-y);printf(“%d/n“,+(p-x);(分数:2.00)填空项
21、 1:_58.以下程序的输出结果是 【8】 。main()int arr=30,25,20,15,10,5,*p=arr;p+;printf(“%d/n“,*(p+3);(分数:2.00)填空项 1:_59.以下函数用来求出两整数之和,并通过形参将结果传回,请填充完整。void func(int x,int y, 【9】 z)*z=x+y;(分数:2.00)填空项 1:_60.以下程序的运行结果是 【10】 。#define MAX(a,b)(ab? a:b)+1main()int i=6,j=8,k;printf(“%d/n“,MAX(i,j);(分数:2.00)填空项 1:_61.如果有以
22、下定义,则不移动指针 p,且通过指针 p 引用值为 98 的数组元素的表达式是 【11】 。int w10=23,54,10,33,47,98,72,80,61),*p=w;(分数:2.00)填空项 1:_62.若 i、j 为 int 类型,则以下程序段内循环体的总执行次数是 【12】 。for(i=5;i;i-)for(j=0;j3;j+)(分数:2.00)填空项 1:_63.以下程序的运行结果为 【13】 。main()int i,j,a34=1,2,3,4,5,6,7,8,9,10,11,12,b43;for(i=0;i3;i+)for(j=0;j4;j+)bji=aij;for(i=0
23、;i4;i+)for(j=0;j3;j+)printf(“%-3d“,bij);printf(“/n“);(分数:2.00)填空项 1:_64.以下程序用来输出结构体变量 ex 所占存储单元的字节数:struct stchar name20;double score;main()struct st ex;printf(“ex size:%d/n“,sizeof( 【14】 );(分数:2.00)填空项 1:_65.以下 fun 函数的功能是:累加数组元素中的值。n 为数组中元素的个数。累加的和放入 x 所指的存储单元中。fun(int b,int n,int *x)int k,r=0;for(
24、k=0;kn;k+) r= 【15】 ;【16】 =r;(分数:2.00)填空项 1:_66.下面 invert 函数的功能是将一个字符串 str 的内容颠倒过来,请填空。#includestring.hvoid invert(char str)int i,j, 【17】 ;for(i=0,j=strlen(str) 【18】 ;ij;i+,j-)k=stri;stri=strj;strj=k;(分数:2.00)填空项 1:_67.程序的功能是将文件 filel.c 的内容输出到屏幕上并复制到文件 file2.c 中,请填空。#includestdio.hmain()FILE 【19】 ;fp
25、1=fopen(“filel.c“,“r“);fp2=fopen(“file2.c“,“w“);while(!feof(fp1) putchar(getc(fp1);rewind(fp1);while(!feof(fp1) putc( 【20】 );fclose(fp1);fclose(fp2);(分数:2.00)填空项 1:_二级 C 语言笔试-42 答案解析(总分:94.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.结构化程序流程图中一般包含 3 种基本结构。下述结构中,_不属于其基本结构。(分数:2.00)A.顺序结构B.嵌套结构 C.循环结构D.条件结构解
26、析:解析 结构化程序流程图中包括顺序结构、条件结构和循环结构 3 种基本结构,而不包含嵌套结构。2.计算机中,能够用来与外存交换信息的是_。(分数:2.00)A.键盘B.RAM C.显示器D.ROM解析:解析 RAM 中存储着当前使用的程序、数据、中间结果和与外存交换的数据,CPU 根据需要可以直接读/写 RAM 中的内容。3.有如下说明:int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为 9 的表达式是_。(分数:2.00)A.*p+9B.*(p+8) C.*p+=9D.p+8解析:解析 p 是指向整型变量的指针,并赋初值指向了数组 a 的首地址,*p=1,选项 A
27、 中 *p+9=10,选项 C 的“*p+=9”的值为 10。而 p+8 是指向数组 a 的第 9 个元素的地址,只有*(p+8)才是数组 a 的第 9个元素。4.在 C 语言中,引用数组元素时,其数组下标的数据类型允许是_。(分数:2.00)A.整型常量B.整型表达式C.整型常量或整型表达式 D.任何类型的表达式解析:解析 在引用数组元素时,下标表达式(包括常量)的值必须为整数。5.以下的 for 循环_。for(x=0,y=0;(y!=123)|(x4);x+)(分数:2.00)A.是无限循环 B.循环次数不定C.执行 4 次D.执行 3 次解析:解析 本题考查 for 循环的结束条件。注
28、意虽然 x 的值在增加,但 y 的值不增加,表达式 (y!=123)|(x4)的值永远是 1,所以会成为无限循环。6.以下正确的说法是_。(分数:2.00)A.实参和与其对应的形参各占用独立的存储单元B.实参和与其对应的形参共用一个存储单元C.只有当实参和与其对应的形参同名时才共用存储单元D.型参是虚拟的,函数在没有被调用时,不占用存储单元 解析:解析 形参在个数和类型上要与实参匹配,形参在未被调用之前,不占用存储单元。7.以下程序的输出结果是_。main()int a33=1,2,3,4,5,6,i,j,s=0;for(i=1;i3;i+)for(j=0;j=i;j+) s+=aij;pri
29、ntf(“%d/n“,s);(分数:2.00)A.18 B.19C.20D.21解析:解析 本题首先定义了一个数组并附初值*,然后通过两个 for 循环计算 3、4、5、6 的累加值,并用 s 保存。8.计算机的存储器完整的应包括_。(分数:2.00)A.内存储器与外存储器 B.磁盘、磁带与光盘C.RAM 与 ROMD.软盘与硬盘解析:解析 存储器包括内部存储器和外部存储器,而选项 B、D 只能统称为外部存储器,选项 C 属于内部存储器。9.在具有 n(n1)个结点的完全二叉树中,结点 i(2in)的左孩子结点是_。(分数:2.00)A.2iB.2i+1C.不存在 D.2i-1解析:解析 完全
30、二叉树中叶子结点一定在最后一层或两层。n 个结点的完全二叉树中,其层数最多为log2n+1。结点 i 与双亲的关系是 i1 时,i 的双亲是 trunc(i/2)。结点 i 与子女的关系是:若 2in,则 i 的左孩子是标号 2i 的结点,若 2in,则不存在左孩子;若 2i+1n,则 i 的右孩子是标号 2i+1 的结点,若 2i+1n,则该结点不存在右孩子。10.对一个关系投影操作以后,新关系的元组个数_原来关系的元组个数。(分数:2.00)A.小于B.小于或等于 C.等于D.大于解析:解析 投影操作是从关系中选择某些列,投影后消去了某些属性,就可能出现重复元组,根据关系的性质,应消去这些
31、完全相同的元组。这样使得新关系的元组数小于或等于原来的元组数。11.若有以下定义,则正确的 swish 语句是_。float x;int a,b;(分数:1.00)A.switch(x)case 1.0:printf(“*/n“);case 2.0:printf(“*/n“);B.switch(x)case 1,2:printf(“*/n“);case 3:printf(“*/n“);C.switch(a+b)case 1:printf(“/n“);case 1+2:printf(“*/n“);D.switch(a+b);case 1:printf(“*/n“);case 2:printf(“
32、*/n“);解析:解析 switch 后必须是整型或字符型的表达式,因此选项 A、B 错误;表达式的括号外没有分号,因此选项 D 错误。12.在下列叙述中,正确的一条是_。(分数:1.00)A.对 while 循环、do-while 循环和 for 循环,可以用 continue 语句跳出循环B.表达式 1+23 和 sizeof(3.8)的结果分别为 24 和 8C.函数 fputc(c, stdout)与 putchar(c)的结果相同 D.在有参函数中,定义函数中指定的形参变量在程序一开始执行时便分配内存单元解析:解析 选项 A 错误,continue 语句只能结束本次循环,不能结束整个
33、循环。要跳出循环可用break 语句。选项 B 错误,表达式 1+23 等价于(1+2)3,即 0000000000000011 向右移 3 位,移后变为 0000000000000000,即 0。选项 C 正确,函数 fputc 的操作对象是文件,而 putchar 是直接向标准输出设备输出字符。标准输出设备是一个特殊文件,即设备文件,文件型指针指向标准输出设备,因而功能相同。选项 D 错误,在定义函数中指定的形参变量,在未出现函数调用时,它们并不占内存中的存储单元。13.以下程序段的输出结果是_。int x=5;doptintf(“%2d/n“,x-);while(!x);(分数:1.00
34、)A.5 B.无任何输出C.4D.陷入死循环解析:解析 本题考查循环语句 do-while 语句的执行情况。首先五条件执行循环体,表达式 x-的值为5,然后检查条件。14.以下程序的输出结果是_。main()int i,k,a10,p3;k=5;for(i=0;i10;i+) ai=i;for(i=0;i3;i+) pi=ai*(i+1);for(i=0;i3;i+) k+=pi*2;printf(“%d/n“,k);(分数:1.00)A.20B.21 C.22D.23解析:解析 第 1 个循环对数组 a 进行赋值:第 2 个循环对数组 p 进行赋值;第 3 个循环对 k 进行累加,k 的初值
35、等于 5,第 1 次循环,k=k+p0*2=5+0*2=5,第 2 次循环,k=k+p1*2= 5+2*2=9,第 3 次循环,k=k+p2*2=9+6*2=21 并输出。15.在宏定义#define PI 3.14159 中,用宏名 PI 代替一个_。(分数:1.00)A.单精度数B.双精度数C.常量D.字符串 解析:解析 程序中用#define 定义后,PI 代表一串字符。16.若运行时输入 12,则以下程序的输出结果是_。main()intx,y;scanf(“%d“,y=x12? x+1:x-1;printf(“%d/n“,y);(分数:1.00)A.10B.11 C.12D.13解析
36、:解析 本题考查“?:”运算的规则:若条件成立,取“:”前的值;否则,取“:”后面的值。17.以下程序的输出结果是_。main()int a=-1,b=1,k;if(+a0)elseprintf(“%d %d/n“,b,(分数:1.00)A.;A) -解析:解析 C 语言中如果逻辑与运算符左边的表达式为假,右边的表达式就不再运算了,(+a0)=(00)=0,所以逻辑与右边的表达式就不参与运算,没有改变 b 的值。因此输出 b=1,a=0。18.以下所列的 c 语言常量中,错误的是_。(分数:1.00)A.0xFFB.1.2e0.5 C.2LD./72解析:解析 B 项中形式在数学上是正确的,但
37、在 C 语言中,e 或 E 后面的数必须为整数。19.若 a 为 int 类型,且其值为 3,则执行完表达式 a+=a-=a*a 后,a 的值是_。(分数:1.00)A.-3B.9C.-12 D.6解析:解析 本题考查的是运算符的优先级和结合性。注意复合赋值运算符的优先级比较低,并且是右结合性。20.当执行下面程序且输入 a boy 时,输出的结果是_。#includestdio.h#includestring.hmain()char ss81=“A BOY“,hh81,*pt;scanf(“%s“,hh);pt=strcat(ss,hh);puts(pt);printf(“%s/n“,hh)
38、;(分数:1.00)A.A BOY aa B.A BOY a boya boyC.A BOY a boy aD.A BOY a boy a boy解析:解析 对于函数 strcat(ss,hh),把字符串 hh(若遇空格,舍去后面的部分,并重新赋给 hh)连至字符串 ss 的后面。21.十进制数 555 的十六进制数表示形式为_。(分数:1.00)A.220B.22AC.22B D.22C解析:解析 本题考查不同进制数间的转换,(555) 10=(1000101011)2=(22B)16。22.设有如下定义,则以下叙述中正确的是_。int(*ptr)();(分数:1.00)A.ptr 是指向一
39、维数组的指针变量B.ptr 是指向 int 型数据的指针变量C.ptr 是指向函数的指针,该函数返回一个 int 型数据 D.ptr 是一个函数名,该函数的返回值是指向 int 型数据的指针解析:解析 “int(*ptr)();”说明 ptr 是一个指向函数的指针,返回值是整型。*ptr 两边的括号非常关键,表示*和 ptr 组合成一个指针变量,然后再和后边的圃括号结合,表示该指针变量*ptr 是一个指向函数的指针变量。如果没有*ptr 两边的括号,“int*ptr();”表示 ptr 是个函数,该函数返回指向整型数据的指针。23.设 x、y、t 均为血型变量,则执行语句 x=y=3;t=+x
40、|+y;后,y 的值为_。(分数:1.00)A.不定值B.4C.3 D.1解析:解析 因为 x 的值为 3,表达式首先去求+x 的值,由于+x 的逻辑值为 1,无论表达式 +y 为何值,逻辑表达式的运算结果总是 1,因此跳过+y 不进行求值。24.在多媒体计算机系统中,不能存储多媒体信息的是_。(分数:1.00)A.光盘B.磁盘C.磁带D.光缆 解析:解析 光缆是多媒体信息的传输通道,不能存储多媒体信息。25.C 语言中 while 循环和 do-while 循环的主要区别是_。(分数:1.00)A.do-while 的循环体至少无条件执行一次 B.while 的循环控制条件比 do-whil
41、e 的循环控制条件严格C.do-while 允许从外部转到循环体内D.do-while 的循环体不能是复合语句解析:26.设下面程序的可执行文件名为 prg.exe,在该程序所在子目录下输入以下命令行:prg hello good回车则程序的输出结果是_。main()(int argc,char*argv)int i;if(argc=0)return;for(i=1;iargc;i+)printf(“%c“,*argvi);(分数:1.00)A.hello goodB.hg C.helD.hellogood解析:解析 argc=3,argv1=hello, argv2=good。注意:prin
42、tf 格式串中是%c,因此输出argv1和 argv2的第一个字符,即hg。27.若已定义 x 和 y 为 double 类型,则表达式 x=1,y=x+5/2 的值是_。(分数:1.00)A.3B.4C.3.0 D.3.5解析:解析 本题注意数据类型的转换以及“/”的使用方法。28.下面程序的输出结果是_。main()int a=1,2,3,4,5,6,7,8,9,0,*p;p=a;ptintf(“%d/n“,*p+9);(分数:1.00)A.0B.1C.10 D.9解析:解析 p 是一个指向整型数据的指针,执行 p=a 后,p 指向 a0。指针运算比算术运算的级别高,先运算*p,得到 1,
43、然后执行加 9,结果等于 10。29.C 语言中,运算对象必须是整型数的运算符是_。(分数:1.00)A.% B./C.%和/D.*解析:解析 本题考查运算符的运算对象,“%”为双目运算符,且操作数只能为整型。30.执行下面的语句后,表达式*(p0+1)+*(q+2)的值为_。int a=5,4,3,2,1,*p=a+3,a+2,a+1,a,*q=p;(分数:1.00)A.8B.7C.6D.5 解析:解析 p 为指针数组,其元素分别为指向数组 a 的 4 个元素的指针。q 为指向指针的指针变量,其初值为指针数组 p 的首地址。所以:表达式*(p0+1)+*(q+2)=*(a+3+1)+*(p+
44、2)即是 *(a+4)+*(a+1)=a5+a2=1+4=5。31.以下对 C 语言中共用体类型数据的正确叙述是_。(分数:1.00)A.可以对共用体变量名直接赋值B.一个共用体变量中可以同时存放其所有成员C.一个共用体变量中不能同时存放其所有成员 D.共用体类型定义中不能出现结构体类型的成员解析:解析 共用体变量中的所有成员共享一段公共存储区,并非同时存放于共用体变量中,如共用体变量中有两个成员,int 型成员占两个字节,float 型成员占 4 个字节,则该共用体变量占 4 个字节,并非 2+4=6 个字节。32.若有说明:int s23=0;,则下面正确的叙述是_。(分数:1.00)A.
45、只有元素 s00可得到初值 0B.此说明语句不正确C.数组 s 中各元素都可得到初值,但其值不一定为 0D.数组 s 中每个元素均可得到初值 0 解析:解析 给二维数组赋初值时,若所赋初值不足,则给后面的元素自动补初值 0。33.设有以下语句:char a=3,b=6,c;c=ab2;则 c 的二进制值是_。(分数:1.00)A.00011011 B.00010100C.00011100D.00011000解析:解析 本题考查的知识点:异或运算:参与运算的两个运算数中相对应的二进制位上,若数相同,则为 0;否则为 1。即“同 0 异 1”;左移运算:左移时,右端补 0,左端移出的部分舍弃。34.堆排序是一种_排序。(分数:1.00)A.插入B.选择 C.交换D.归并解析:解析 堆排序是一种选择排序。选择排序有直接选择排序和堆排序两种。35.以下正确的叙述是_。(分数:1.00)A.C 语言允许 main 函数带形参,且形参个数和形参名均可由用户指定B.C 语言允许 main 函数带形参,形参名只能是 argc 和 argvC.当 main 函数带有形参时,传给形参的值只能从命令行中得到 D.若有说明:main(int argc,char *argv),则形参 argc 的值必须大于 1解析:解析 C 语言通常允许 main()函数带有两个参数,可由用户自己命令,但类型是固定