1、二级 C 语言笔试-95 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.以下关于函数的叙述中正确的是( )。(分数:2.00)A.每个函数都可以被其它函数调用(包括 main 函数)B.每个函数都可以被单独编译C.每个函数都可以单独运行D.在一个函数内部可以定义另一个函数2.若有以下定义的语句:struct studentint age;int num;struct student stu3=1001,20,1002,19,1003,21;main()(struct student *p;p=stu;则以下不正确的引用是( )。(分数:2
2、.00)A.(p+)-numB.p+C.(*p).numD.p=stuage3.有以下程序:#includestdio.hmain()FILE *fp;int a10=1,2,3,i,n;fp=fopen(“d1.dat“,“w“);for(i=0;i3;i+)fprintf(fp,“%d“,ai);fprintf(fp,“/n“);fclose(fp);fp=fopen(“d1.dat“,“r“);fscanf(fp,“%d,n);fdose(fp);printf(“%d/n“,n);(分数:2.00)A.12300B.123C.1D.3214.变量 a 中的数据用二进制表示的形式是 010
3、11101,变量 b 中的数据用二进制表示的形式是 11110000。若要求将 a 的高 4 位取反,低 4 位不变,所要执行的运算是( )。(分数:2.00)A.abB.a|bC.abD.a45.以下选项中不属于字符常量的是( )。(分数:2.00)A.CB.“C“C./xCCD./0726.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )。(分数:2.00)A.可重用性差B.安全性差C.非持久性D.冗余性7.在 16 位 IBM-PC 上使用 C 语言,若有如下定义:struct dataint i;char ch;double f;b;则结构变量 b 占用内存的字节
4、数是( )。(分数:2.00)A.1B.2C.7D.118.C 语言规定,在一个源程序中,main 函数的位置( )。(分数:2.00)A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后9.数据结构中,与所使用的计算机无关的是数据的( )。(分数:2.00)A.存储结构B.物理结构C.逻辑结构D.物理和存储结构10.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指( )。(分数:2.00)A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程11.设变量已正确定义并赋值,以下正确的表达式是( )。(分数:1.00)A.x=
5、y*5=x+zB.int(158%5)C.x=y+z+5,+yD.x=25%5.012.有以下程序:#includestdio.hmain()int c;while(c=getchar( )!=/n)switch(c-2)case 0:case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+3);case 4:putchar(c+3);break;printf(“/n“);从第一列开始输入以下数据,代表一个回车符。27 43程序的输出结果是( )。(分数:1.00)A.66877B.678966C.6677877D.6688
6、76613.有以下程序:main()int i;for(i=1;i=40;i+)if(i+%5=0)if(+i%8=0)printf(“%d“,i);printf(“/n“);执行后的输出结果是( )。(分数:1.00)A.5B.24C.32D.4014.设有关系 R 和 S,关系代数表达式为 R-(R-S)表示的是( )。(分数:1.00)A.RSB.R-SC.RSD.R+S15.下列程序的输出结果为( )。main()union uchar *name;int age;int income;)s;s.name=“WANGLIONG“;s.age=28;s.income=1000;print
7、f(“%d/n“,s.age);(分数:1.00)A.28B.1000C.0D.不确定16.关系表中的每一横行称为一个( )。(分数:1.00)A.元组B.字段C.属性D.码17.下列数据结构中,按“先进后出”原则组织数据的是( )。(分数:1.00)A.线性链表B.栈C.循环链表D.顺序表18.已知字符A的 ASC码值是 65,字符变量 c1 的值是A,c2 的值是D。执行语句printf(“%d,%d“,c1,c2-2);后,输出结果是( )。(分数:1.00)A.A,BB.A 68C.65,66D.65,6819.有以下程序:#includestdio.hmain()inc x=1,y=
8、0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1:b+;break;case 2:a+;b+;break;case 3:a+;b+;printf(“a=%d,b=%d/n“,a,b);程序的运行结果是( )。(分数:1.00)A.a=1,b=0B.a=2,b=2C.a=1,b=1D.a=2,b=120.若有定义 float x=15;int a=1,b=3,c=2;,则正确的 switch 语句是( )。(分数:1.00)A.switch(x)case 1.0:printf(“*/n“);case 2.0:printf(“*/n
9、“);B.switch(int)x);case 1:printf(“*/n“);case 2:printf(“*/n“);C.switch(a+b)case 1:printf(“*/n“);case 2+1:printf(“*/n“);D.switch(a+b)case 1:printf(“*/n“);case c:printf(“*/n“);21.结构化程序设计方法的 3 种基本控制结构中不包括( )。(分数:2.00)A.循环结构B.递归结构C.顺序结构D.选择结构22.下列程序的运行结果为( )。#includestdio.hvoid abc(char *str)int a,b;for(
10、a=b=0;stra!=/0;a+)if(stra!=c)sfrb+=stra;strb=/0;void main()char str=“abcdef“;abc(str);printf(“str=%s“,str);(分数:2.00)A.str=abdefB.str=abcdefC.str=aD.str=ab23.有以下程序:#includestdio.hmain()char c1,c2,c3,c4,c5,c6;scanf(“%c%c%c%c“,c1,c2,c3,c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf(“%c%c/
11、n“,c5,c6);程序运行后,若从键盘输入(从第 1 列开始):123回车45678回车则输出结果是( )。(分数:2.00)A.1267B.1256C.1278D.124524.下列关于单目运算符+、-的叙述中正确的是( )。(分数:2.00)A.它们的运算对象可以是任何变量和常量B.它们的运算对象可以是 char 型变量和 int 型变量,但不能是 float 型变量C.它们的运算对象可以是 int 型变量,但不能是 double 型变量和 float 型变量D.它们的运算对象可以是 char 型变量、int 型变量和 float 型变量25.下列程序执行后的输出结果是( )。main(
12、)int a33,*p;P=a00;for(i=1;i9;i+)pi=i+1;printf(“%d/n“,a12);(分数:2.00)A.3B.6C.9D.随机数26.有以下程序:int fun(int n)if(n=1)return 1;elsereturn(n+fun(n-1);main()int x;scanf(“%d“,x);x=fun(x);printf(“%d/n“,x);执行程序时,给变量 x 输入 10,程序的输出结果是( )。(分数:2.00)A.55B.54C.65D.4527.有以下程序:#includestdio.hmain()char a,b,C,d;scanf(“%
13、c%c“,a,b);c=getchar(); d=getchar();printf(“%c%c%c%c/n“,a,b,C,d);当执行程序时,按下列方式输入数据(从第 1 列开始,CR代表回车,注意:回车也是一个字符)12CR34CR则输出结果是( )。(分数:2.00)A.1234B.12C.12 3D.12 3428.以下叙述中错误的是( )。(分数:2.00)A.计算机不能直接执行用 C 语言编写的源程序B.C 程序经 C 编译程序编译后,生成后缀为.obj 的文件是一个二进制文件C.后缀为.obj 的文件,经连接程序生成后缀为.exe 的文件是一个二进制文件D.后缀为.obj 和.ex
14、e 的二进制文件都可以直接运行29.需求分析阶段的任务是确定( )。(分数:2.00)A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能30.若在定义语句:int a,b,c,*p=c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )。(分数:2.00)A.scanf(“%d“,a,b,c);B.scanf(“%d%d%d“,a,b,c);C.scanf(“%d“,p);D.scanf(“%d“,p);31.阅读下列程序段,程序的输出结果为( )。#include“stdio.h“#define M(X,Y)(X)*(Y)#define N(X,Y)(X)/(Y)mai
15、n()int a=5,b=6,C=8,k;k=N(M(a,b),c);printf(“%d/n“,k);(分数:2.00)A.3B.5C.6D.832.在 C 语言中,只有在使用时才占用内存单元的变量,其存储类型是( )。(分数:2.00)A.auto 和 registerB.extern 和 registerC.auto 和 staticD.static 和 register33.若执行下面的程序时,从键盘输入 5 和 2,则输出结果是( )。main()int a,b,k;scanf(“%d,%d“,a,b);k=a;if(ab)k=a%b;else k=b%a;printf(“%d/n“
16、,k);(分数:2.00)A.5B.3C.2D.034.在下列关于二叉树的叙述中,正确的一项是( )。(分数:2.00)A.在二叉树中,任何一个结点的度都是 2B.二叉树的度为 2C.在二叉树中至少有一个结点的度是 2D.一棵二叉树的度可以小于 235.下列选项可以正确表示字符型常量的是( )。(分数:2.00)A./rB.“a“C.“/897“D.29636.以下不是面向对象思想中的主要特征的是( )。(分数:2.00)A.多态B.继承C.封装D.类比性37.若有定义:int a23;,以下选项中对 a 数组元素正确引用的是( )。(分数:2.00)A.a21B.a23C.a03D.a12!
17、138.若变量已正确定义,要求程序段完成求 5!的计算,不能完成此操作的程序段是( )。(分数:2.00)A.for(i=1,p=1;i=5;i+)p*=i;B.for(i=1;i=5;i+)p=1;p*=i;C.i=1;p=1;while(i=5)p*=i;i+;D.i=1;p=1;dop*=i;i+;while(i=5)39.下面程序的输出结果是( )。#includestdio.h#includestring.hmain()char p120=“abc“,*p2=“ABC“,str50=“xyz“;strcpy(str+2,strcat(p1,p2);printf(“%s/n“,str)
18、;(分数:2.00)A.xyzabzacB.bAcBACBCC.xyabcABCD.yzabcABC40.现有格式化输入语句,scanf(“x=%d,sum y=%d,line z=%dL“,x,y,z);,已知在输入数据后,x、y、z 的值分别是 12、34、45,则下列选项中是正确的输入格式的是( )。(分数:2.00)A.12,34,45EnterB.x=12,y=34,z=45EnterC.x=12,sumy=34,z=45EnterD.x=12,sum y=34,line z=45Enter二、填空题(总题数:13,分数:30.00)41.对长度为 n 的有序链表进行查找,最坏情况下
19、需要比较的次数为 1。(分数:2.00)填空项 1:_42.某二叉树中度为 2 的结点有 18 个,则该二叉树中有 1 个叶子结点。(分数:2.00)填空项 1:_43. 1 测试方法完全不考虑程序的内部结构和内部特征。(分数:2.00)填空项 1:_44.关系模型的数据操纵即是建立在关系上的数据操纵,一般有_、增加、删除和修改四种操作。(分数:2.00)填空项 1:_45.数据模型按不同的应用层次分为三种类型,它们是_数据模型、逻辑数据模型和物理数据模型。(分数:2.00)填空项 1:_46.设有定义:float x=1234567;,则执行以下语句后的输出结果是_。printf(“%f/n
20、“,(int)(x*100+0.5)/100.0);(分数:2.00)填空项 1:_47.有以下语句段:int n1=10,n2=20;printf(“_“,n1,n2);要求按以下格式输出 n1 和 n2 的值,每个输出行从第一列开始,请填空。n1=10n2=20(分数:2.00)填空项 1:_48.有以下程序:#includestdio.hmain()char ch1,ch2;int n1,n2;ch1=getchar();ch2=getchar();n1=ch1-0;n2=n1*10+(ch2-0);printf(“%d/n“,n2);程序运行时输入:12回车,执行后输出结果是_。(分数
21、:2.00)填空项 1:_以下程序的功能是:输出 a、b、c 三个变量中的最小值。请填空。#includestdio.hmain()int a,b,c,t1,t2;scanf(“%d%d%d“,a,b,c);t1=ab? (9) ;t2=ct1? (10) ;printf(“%d/n“,t2);(分数:4.00)填空项 1:_填空项 1:_49.以下程序运行后的输出结果是_。main()int a=3,b=4,c=5,t=99;if(baac)t=a;a=c;c=t;iff acbc)t=b;b=a;a=c;printf(“%d%d%d/n“,a,b,c);(分数:2.00)填空项 1:_50
22、.以下程序的输出结果是_。main()int y=9;for(;y0;y-)if(y%3=0)printf(“%d“,-y);continue;(分数:2.00)填空项 1:_下面程序的功能是将一个字符串 sfr 的内容颠倒过来,请填空。#includestring.hmain()int i,j, (13) ;char str=“1234567“;for(i=0,j=strlen(str) (14) ;ij;i+,j-)k=stri;stri=strj;strj=k;printf(“%s/n“,str);(分数:4.00)填空项 1:_填空项 1:_51.有以下程序:#includestdio
23、.hmain()FILE *fp;int i,a6=1,2,3,4,5,6;fp=fopen(“d3.dat”,“w+b”);fwrite(a,sizeof(int),6,fp);fseek(fp,sizeoffint)*3,SEEK SET);/*该语句使读文件的位置指针从文件头向后移动 3 个 int 型数据*/fread(a,sizeoflint),3,fp);fclose(fp);for(i=0;i6;i+printf(“%d,“,ai);程序运行后的输出结果是_。(分数:2.00)_二级 C 语言笔试-95 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40
24、,分数:70.00)1.以下关于函数的叙述中正确的是( )。(分数:2.00)A.每个函数都可以被其它函数调用(包括 main 函数)B.每个函数都可以被单独编译 C.每个函数都可以单独运行D.在一个函数内部可以定义另一个函数解析:解析 本题考查函数的一些概念。main()函数是一个程序的主函数,它由系统调用,所以选项 A)不正确。一个 C 语言源程序文件可以只包含一个函数,每个源文件都可以被单独编泽成.obj 文件,最后链接成可执行文件。因此每个函数都可以被单独编译,选项 B)正确。一个 C 程序必须从主函数 main()开始运行,其他函数只能是直接或间接被 main()函数调用才能得以运行
25、,因此选项 C)错误。C 语言不支持函数的嵌套定义,所有函数只能是全局函数,所以选项 D)错误。故应该选择 B)。2.若有以下定义的语句:struct studentint age;int num;struct student stu3=1001,20,1002,19,1003,21;main()(struct student *p;p=stu;则以下不正确的引用是( )。(分数:2.00)A.(p+)-numB.p+C.(*p).numD.p=stuage 解析:解析 考查对结构体成员的引用方法。结构体成员的引用可以用“结构体变量名.成员名”或者“结构体变量指针-成员名”两种方式来引用。3.
26、有以下程序:#includestdio.hmain()FILE *fp;int a10=1,2,3,i,n;fp=fopen(“d1.dat“,“w“);for(i=0;i3;i+)fprintf(fp,“%d“,ai);fprintf(fp,“/n“);fclose(fp);fp=fopen(“d1.dat“,“r“);fscanf(fp,“%d,n);fdose(fp);printf(“%d/n“,n);(分数:2.00)A.12300B.123 C.1D.321解析:解析 本题主要考查的是文件的操作。程序一开始定义了一个文件指针 FILE *fp;,然后通过fopen 函数以只写方式打开
27、 d1.dat 文件,使用一个 for 循环往 d1.dat 文件里面依次写入数组 a 的三个值,再写入一个换行符,最后通过 fclose 函数关闭 d1.dat 文件。此时,d1.dat 中的内容应该是“123”。接下来又通过 fopen 函数以只读方式打开 d1.dat 文件,使用 fscanf 函数读取 1 个整数,考生可能会认为读取的只是第 1 次写入的整数 1,其实它将整个 123 当成 1 个整数给读进来了,所以读取后 n 的值为 123。4.变量 a 中的数据用二进制表示的形式是 01011101,变量 b 中的数据用二进制表示的形式是 11110000。若要求将 a 的高 4
28、位取反,低 4 位不变,所要执行的运算是( )。(分数:2.00)A.ab B.a|bC.abD.a4解析:解析 本题主要考查的是位运算。选项 A)中“”运算符的作用是:按位异或。即两个运算分量的对应二进制位如果相异,则结果对应二进制位为 1,否则为 0。所以,0101110111110000 的结果是10101101。选项 B)中“|”运算符的作用是:按位或。即两个运算分量的对应二进制位如果有一个是 1,则结果对应二进制位为 1,否则为 0。所以,0101110|110000 的结果是 11111101。选项 C)中“”运算符的作用是:按位与。即两个运算分量的对应二进制位如果都是 1,则结果
29、对应二进制位为 1,否则为0。所以,010111011111000 的结果为 01010000,选项 D)中“”运算符作用是:左移运算符,将 a左移 4 位,显然不符合题意。5.以下选项中不属于字符常量的是( )。(分数:2.00)A.CB.“C“ C./xCCD./072解析:解析 在 C 语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项 A)、C)和 D)为正确的字符常量,而选项 B)是用双引号括起来的字符,表示一个字符串常量。6.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )。(分数:2.00)A.可重用性差B.安全性差C.非持
30、久性D.冗余性 解析:解析 文件系统所管理的数据文件基本上是分散的、相互独立的,因此相对于数据库系统,文件系统数据处理存在 3 个缺点,即数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。7.在 16 位 IBM-PC 上使用 C 语言,若有如下定义:struct dataint i;char ch;double f;b;则结构变量 b 占用内存的字节数是( )。(分数:2.00)A.1B.2C.7D.11 解析:解析 结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量 i所占用的内存是 2 字节,字符型变量 ch 所占用的内存是 1 字节,双精度型
31、变量 f 所占用的内存是 8 字节,三者相加即可。8.C 语言规定,在一个源程序中,main 函数的位置( )。(分数:2.00)A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意 D.必须在最后解析:解析 不论 main 函数在整个过程中的位置如何,一个 C 程序总是从 main 函数开始执行的。9.数据结构中,与所使用的计算机无关的是数据的( )。(分数:2.00)A.存储结构B.物理结构C.逻辑结构 D.物理和存储结构解析:解析 数据结构概念一般包括数据的逻辑结构、存储结构及数据上的运算集合等。数据的逻辑结构只抽象地反映数据元素之间的逻辑关系,而不管它在计算机中的存储形式。10
32、.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指( )。(分数:2.00)A.模块间的关系B.系统结构部件转换成软件的过程描述 C.软件层次结构D.软件开发过程解析:解析 软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中,结构设计是定义软件系统各主要部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。11.设变量已正确定义并赋值,以下正确的表达式是( )。(分数:1.00)A.x=y*5=x+zB.int(158%5)C.x=y+z+
33、5,+y D.x=25%5.0解析:解析 求余运算符“%”两边的运算对象必须是整型,而选项 B)和 D)中“%”两边的运算对象有浮点数据,所以选项 B)和 D)是错误的表达式。在选项 A)中赋值表达式左侧要为“左值”,也是错误的。选项 C)是一个逗号表达式,所以正确答案为 C)。12.有以下程序:#includestdio.hmain()int c;while(c=getchar( )!=/n)switch(c-2)case 0:case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+3);case 4:putchar(c+
34、3);break;printf(“/n“);从第一列开始输入以下数据,代表一个回车符。27 43程序的输出结果是( )。(分数:1.00)A.66877 B.678966C.6677877D.6688766解析:解析 本题主要考查了字符输入输出函数 getchar 和 putchar 的使用。getchar 函数用来从标准输入设备上读入一个字符,putchar(c)函数是将字符变量 c 中的字符输出到标准输出设备上,并且字符可以看作整数参与运算。13.有以下程序:main()int i;for(i=1;i=40;i+)if(i+%5=0)if(+i%8=0)printf(“%d“,i);pri
35、ntf(“/n“);执行后的输出结果是( )。(分数:1.00)A.5B.24C.32 D.40解析:解析 当 for 循环执行到第 30 次时,i 的值为 30 能被 5 整除,然后继续执行两次 if 语句,i 经过两次自加 1 运算,值变为 32,能被 8 整除,故此时第一次执行“printf(“%d“,i);”语句,即输出32。14.设有关系 R 和 S,关系代数表达式为 R-(R-S)表示的是( )。(分数:1.00)A.RS B.R-SC.RSD.R+S解析:解析 R-S 表示属于 R 但不属于 S,R-(R-S)表示既属于 R 又属于 S,即相当于 RS。15.下列程序的输出结果为
36、( )。main()union uchar *name;int age;int income;)s;s.name=“WANGLIONG“;s.age=28;s.income=1000;printf(“%d/n“,s.age);(分数:1.00)A.28B.1000 C.0D.不确定解析:解析 本题对共用体的使用进行了考查。由于共用体所有成员共同占据一段存储空间,所以对成员变量的赋值,后面的赋值会覆盖掉前面的赋值,因为 s.income=1000;是最后一次成员变量赋值,变量age 与变量 income 共同占据一段存储空间,所以 age 的值也为 1000。16.关系表中的每一横行称为一个(
37、)。(分数:1.00)A.元组 B.字段C.属性D.码解析:解析 关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为一个属性,对应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。17.下列数据结构中,按“先进后出”原则组织数据的是( )。(分数:1.00)A.线性链表B.栈 C.循环链表D.顺序表解析:解析 本题主要考查对于栈的理解。栈是限定在一端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,
38、即栈是按照“先进后出”或“后进先出”的原则组织数据的。18.已知字符A的 ASC码值是 65,字符变量 c1 的值是A,c2 的值是D。执行语句printf(“%d,%d“,c1,c2-2);后,输出结果是( )。(分数:1.00)A.A,BB.A 68C.65,66 D.65,68解析:解析 在 C 语言中,字符型数据在内存中的存储形式是 ASC码值。当需要以整型格式输出字符时,输出的也是 ASC码值。字符A和D的 ASC码值分别为 65 和 68。19.有以下程序:#includestdio.hmain()inc x=1,y=0,a=0,b=0;switch(x)case 1:switch
39、(y)case 0:a+;break;case 1:b+;break;case 2:a+;b+;break;case 3:a+;b+;printf(“a=%d,b=%d/n“,a,b);程序的运行结果是( )。(分数:1.00)A.a=1,b=0B.a=2,b=2C.a=1,b=1D.a=2,b=1 解析:解析 本题考查 switch 语句,首先,x=1 符合条件 case 1,执行 switch(y)语句,y=0 符合case0 语句,执行 a+并跳出 switch(y)语句,此时 a=1。因为 case 1 语句后面没有 break 语句,所以向后执行 case 2 语句,执行 a+,b+
40、,然后跳出 switch(x),得 a=2,b=1。20.若有定义 float x=15;int a=1,b=3,c=2;,则正确的 switch 语句是( )。(分数:1.00)A.switch(x)case 1.0:printf(“*/n“);case 2.0:printf(“*/n“);B.switch(int)x);case 1:printf(“*/n“);case 2:printf(“*/n“);C.switch(a+b)case 1:printf(“*/n“);case 2+1:printf(“*/n“); D.switch(a+b)case 1:printf(“*/n“);cas
41、e c:printf(“*/n“);解析:解析 C 语言中,switch 语句专用于实现多分支结构程序,其特点是各分支清晰且直观。switch后面括号中可以是任何表达式,取其整数部分与各常量表达式进行比较。常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,备常量表达式备不相同。21.结构化程序设计方法的 3 种基本控制结构中不包括( )。(分数:2.00)A.循环结构B.递归结构 C.顺序结构D.选择结构解析:解析 本题考查了程序的基本结构。程序由一些基本结构组成。任何一个大型的程序都由 3 种基本结构组成,由这些基本结构顺序构成一个结构化的程序。这 3 种基本结构为:顺序结构、选择
42、结构和循环结构。22.下列程序的运行结果为( )。#includestdio.hvoid abc(char *str)int a,b;for(a=b=0;stra!=/0;a+)if(stra!=c)sfrb+=stra;strb=/0;void main()char str=“abcdef“;abc(str);printf(“str=%s“,str);(分数:2.00)A.str=abdef B.str=abcdefC.str=aD.str=ab解析:解析 本题考查用字符指针引用字符数组中的字符及对字符的操作。函数 abc()的 for 语句执行过程是:从字符指针 str 所指向的字符数组的
43、第一个元素开始,逐一判断字符是否为c,若不是就执行一次数组元素的赋值过程,若字符为c就不执行。23.有以下程序:#includestdio.hmain()char c1,c2,c3,c4,c5,c6;scanf(“%c%c%c%c“,c1,c2,c3,c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf(“%c%c/n“,c5,c6);程序运行后,若从键盘输入(从第 1 列开始):123回车45678回车则输出结果是( )。(分数:2.00)A.1267B.1256C.1278D.1245 解析:解析 putchar(c1)输
44、出 1,putchar(c2)输出 2,printf(“%c%c/n“,c5,c6)输出 45。格式化输入函数必须严格按照双引号里面的格式进行输入。在格式化输出函数中,格式控制串中除了合法的格式说明外,可以包含任意的合法字符。24.下列关于单目运算符+、-的叙述中正确的是( )。(分数:2.00)A.它们的运算对象可以是任何变量和常量B.它们的运算对象可以是 char 型变量和 int 型变量,但不能是 float 型变量C.它们的运算对象可以是 int 型变量,但不能是 double 型变量和 float 型变量D.它们的运算对象可以是 char 型变量、int 型变量和 float 型变量
45、 解析:解析 +(或-)的运算结果是使运算对象增 1(或减 1);运算对象可以是整型变量、实型变量,也可以是字符型变量,但不能是常量或表达式。+(或-)的结合方向是“自右向左”。25.下列程序执行后的输出结果是( )。main()int a33,*p;P=a00;for(i=1;i9;i+)pi=i+1;printf(“%d/n“,a12);(分数:2.00)A.3B.6 C.9D.随机数解析:解析 本题中,a12是二维数组中的第 6 个元素,对应 for 循环中 i 的值为 5,p5=5+1。26.有以下程序:int fun(int n)if(n=1)return 1;elsereturn(
46、n+fun(n-1);main()int x;scanf(“%d“,x);x=fun(x);printf(“%d/n“,x);执行程序时,给变量 x 输入 10,程序的输出结果是( )。(分数:2.00)A.55 B.54C.65D.45解析:解析 本程序考查的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为 1+2+3+4+5+6+7+8+9+10=55。27.有以下程序:#includestdio.hmain()char a,b,C,d;scanf(“%c%c“,a,b);c=getchar(); d=getchar();printf
47、(“%c%c%c%c/n“,a,b,C,d);当执行程序时,按下列方式输入数据(从第 1 列开始,CR代表回车,注意:回车也是一个字符)12CR34CR则输出结果是( )。(分数:2.00)A.1234B.12C.12 3 D.12 34解析:解析 本题的考查点是 C 语言字符数据的输入和输出。程序定义了四个字符型变量 a、b、c、d,字符型变量只能存放一个字符。getchar()函数的值就是从输入设备得到的字符,在输入时,空格、回车符将作为字符读入,请注意,getchar()只能接收一个字符。所以变量 a 被赋予 1,变量 b 被赋予 2,变量c 被赋予回车符,变量 d 被赋予 3,所以选项 C)正确。故本题答案为 C)。28.以下叙述中错误的是(