1、二级 C 语言笔试-360 及答案解析(总分:104.00,做题时间:90 分钟)一、选择题(总题数:50,分数:70.00)1.函数调用 strcat(strcpy(str1,str2),str3)的功能是( )。A) 将字符串 str1 复制到字符串 str2 中后再连接到字符串 str3 之后B) 将字符串 str1 连接到字符串 str2 之后再复制到字符串 str3 之后C) 将字符串 str2 复制到字符串 sir1 中后再将字符串 str3 连接到字符串 str1 之后D) 将字符串 str2 连接到字符串 str1 之后再将字符串 str1 复制到字符串 str3 中(分数:2
2、.00)A.B.C.D.2.设 fp 为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof (fp)的返回值为( )。A) EOF B) 非 0 值 C) 0 D) NULL(分数:1.00)A.B.C.D.3.下列不正确的转义字符是( )。A) / B) /t C) /n D) 088(分数:2.00)A.B.C.D.4.以下叙述中正确的是( )。A) C 程序的基本组成单位是语句 B) C 程序中的每一行只能写一条语句C) 简单 C 语句必须以分号结束 D) C 语句必须在一行内写完(分数:1.00)A.B.C.D.5.有下列程序:#include“stdio.h“main()i
3、nt x=0;int y=0;while(x7x+;printf(“%d,%d“,y,x);程序的输出结果是( )。A) 0,7 B) 7,7 C) 0,6 D) 1,6(分数:2.00)A.B.C.D.6.数据的存储结构是指A) 数据所占的存储空间量 B) 数据的逻辑结构在计算机中表示C) 数据在计算机中的顺序存储方式 D) 存储在外存中的数据(分数:1.00)A.B.C.D.7.下列程序的输出结果是( )。#include stdio.hstruct abcint a, b, c, s;main()struct abc s2=1,2,3,4,5,6;int t;t=s0.a+s1.b;pr
4、intf(“%d/n“,t);A) 5 B) 6 C) 7 D) 8(分数:2.00)A.B.C.D.8.有以下程序main() int m=3 n=4,X;X=-m+;x=x+8/+n;printf(“%d/n“,x);程序运行后的输山结果是A) 3 B) 5 C) -1 D) -2(分数:1.00)A.B.C.D.9.以下叙述中错误的是( )。A改变函数形参的值,不会改变对应实参的值B函数可以返回地址值C可以给指针变量赋一个整数作为地址值D当在程序的开头包含文件 stdio.h 时,可以给指针变量赋 NULL(分数:1.00)A.B.C.D.10.有定义语句:int b;char c10;
5、,则正确的输入语句是( )。A) scanf(“%d%s“, B) scanf(“%d%s“,C) scanf(“%d%s“,b,c); D) scanf(“%d%s“,b,(分数:1.00)A.B.C.D.11.下列不能正确计算代数式 (分数:1.00)A.B.C.D.12.若程序中定义了以下函数double myadd(double a,double b) return(a+b) ;并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是A) double myadd(double a,b) ; B) double myadd(double,double);C) do
6、uble myadd(double b,double a) ; D) double myadd(double x,double y);(分数:1.00)A.B.C.D.13.有以下程序main()int m,n,p;scanf(“m=%dn=%dp=%d“,下面各输入语句中错误的是( )。A) scanf(“%d“,C) scanf(“%c“,(分数:1.00)A.B.C.D.15.下面程序的运行结果是( )。#includestdio.hmain()static char a=“Languagef“ ,b=“ programe“;char*p1,*p2;int k;p1=a;p2=b;for
7、(k=0;k=7;k+)if(*(p1+k)=*(p2+k) printf(“c“,*(p1+k);A) gae B) ga C) Language D) 有语法错(分数:1.00)A.B.C.D.16.有以下计算公式:(分数:1.00)A.B.C.D.17.以下选项中可作为 C 语言合法常量的是A) -80 B) -080 C) -8e1.0 D) -80.0e(分数:1.00)A.B.C.D.18.下面程序的功能是输出以下形式的金字塔图案:*main()int i,j;for(i=1;i=4;i+)for(j=1;j=4-i;j+) printf(“);for(j=1;j=;j+) pri
8、ntf(“*“);printf(“/n“);在下画线处应填入的是( )。Ai B2*i-1 C2*i+1 Di+2(分数:1.00)A.B.C.D.19.有下列程序段:struct Stint x;int *y;)*pt;int a=1,2),b=3,4);struct st c2=10,a,20,b);pt=c;下列选项中表达式的值为 11 的是( )。A) *pt- y B) pt- x C) + +pt- x D) (pt+ +)-x(分数:2.00)A.B.C.D.20.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是A) n=0; while( ch=ge
9、tchar()!=/n) n+;B) n=0; while( getchar()! =/n) n+;C) for( n=0; getehar()!=/n; n+);D) n=0; for( ch=getchar(); ch!=/n; n+);(分数:2.00)A.B.C.D.21.以下程序企图把从终端输入的字符输出到名为 abctxt 的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。#includestdiohmain()FILE*fout;char ch;four=fopen(abc.txt,w);ch=fgetc(stdin);while(ch!=#)fputc(ch,f
10、out);ch=fgetc(stdin);felose(fout);出错的原因是A) 函数 fopen 调用形式错误 B) 输入文件没有关闭C) 函数 fsetc 调用形式错误 D) 文件指针 stdin 没有定义(分数:1.00)A.B.C.D.22.字长为 16 位的计算机是指_。A) 该计算机能够处理的最大数不超过 16B) 该计算机中的 CPU 可以同时处理 16 位的二进制信息C) 该计算机的内存量为 16MBD) 该计算机每秒钟所能执行的指令条数为 16MIPS(分数:2.00)A.B.C.D.23.设有如下说明:typedef struct ST(long a;int b;cha
11、r c2;)NEW;则下面叙述中正确的是( )A) 以上的说明形式非法 B) ST 是一个结构体类型C) NEW 是一个结构体类型 D) NEW 是一个结构体变量(分数:1.00)A.B.C.D.24.在以下给出的表达式中,与 while(E)中的(E)不等价的表达式是( )。A) (!E=0)B) (E0|E0)C) (E=0)D) (E!=0)(分数:1.00)A.B.C.D.25.有以下程序:main()int k=5, n=0;doswitch(k)case 1: case 3: n+1; k-break;default: n=0; k-;case 2: case 4: n+=2; k
12、-; break;printtf(“%d“, n);while (k0n5);程序运行后的输出结果是( )。A) 235 B) 0235 C) 02356 D) 2356(分数:1.00)A.B.C.D.26.已定义以下函数:int fun(int*p)return*P;)fun 函数返回值是_。A) 不确定的值 B) 一个整数C) 形参 P 中存放的值 D) 形参 P 的地址值(分数:2.00)A.B.C.D.27.以下正确的程序段是A) char str1=“12345“,str2=“abcdef“;B) char str10,*st=“abcde“;strcat(str,st);C) c
13、harstr10=“ “。*st=“abcde“;strcat(str,st);D) char*st1=“12345“,*st2=“abcde“;strcat(st1,st2);(分数:2.00)A.B.C.D.28.以下程序段中,能够通过调用函数 fun,使 main 函数中的指针变量 p 指向一个合法的整型单元的是A) main() int*p; fun(p); int fun(int*p) int s; p B) mainint *p;fun( *p= C) #include stdlib.h main() int *p;fun( int fun(int*p) *p=(int*)mall
14、oc(2); D) #include stdlib.hmain()int *p;fun(p);int fun(int *p)p=(int*)malloc(sizeof(int);(分数:1.00)A.B.C.D.29.下面说明不正确的是A) char a10=“china“; B) char a10,*p=a;p=“china“C) char *a;a=“china“; D) char a10,*p;p=a=“china/(分数:2.00)A.B.C.D.30.下面不属于软件设计原则的是A) 抽象 B) 模块化 C) 自底向上 D) 信息隐蔽(分数:2.00)A.B.C.D.31.对长度为 n
15、 的线性表进行顺序查找,在最坏的情况下需要比较的次数为( )。A) 125 B) n/2C) n D) n+1(分数:2.00)A.B.C.D.32.下列程序的输出结果是( )。#include stdio.hmain()struct stint y,x,z;unionlong i;int j;char k;un;printf(“%d,%d/n“,sizeof(struct st),sizeof(un);A) 6, 2 B) 6, 4 C) 8, 4 D) 8, 6(分数:2.00)A.B.C.D.33.按照“先进先出”组织数据的数据结构是( )。A) 队列 B) 栈 C) 双向链表 D) 二
16、叉树(分数:2.00)A.B.C.D.34.已知函数的调用形式为 fread(buf,size,count,fp),参数 buf 的含义是A) 一个整型变量,代表要读入的数据项总数B) 一个文件指针,指向要读的文件C) 一个指针,指向要读入数据的存放地址D) 一个存储区,存放要读的数据项(分数:2.00)A.B.C.D.35.以下语句或语句组中,能正确进行字符串赋值的是_。A) char*sp;*sp=“right!“;B) char s10;s=“right!“;C) char s10;*s=“right!“;D) char*sp=“right!“;(分数:2.00)A.B.C.D.36.若
17、有定义:int a=4,b=5;float x=3.4,y=2.1;,则下列表达式的值为( )。(float)(a+B) /2+(int)x%(int)yA) 5.5 B) 55C) 5.500000 D) 55.00000(分数:2.00)A.B.C.D.37.在 E-R 图中,用来表示实体的图形是( )。A) 矩形 B) 椭圆形 C) 菱形 D) 三角形(分数:1.00)A.B.C.D.38.16 位二进制补码表示的数据范围是 ( )A0(2 16-1)B02 15C-2 15(2 15-1)D-2 152 15(分数:1.00)A.B.C.D.39.树是结点的集合,它的根结点的数目是(
18、)。A) 有且只有 1 个 B) 1 或多于 1 C) 0 或 1 D) 至少有 2 个(分数:2.00)A.B.C.D.40.可在 C 程序中用作用户标识符的一组标识符是_2007 y-m-d Dr.Tom BiglA) and B) Date C) Hi D) case(分数:1.00)A.B.C.D.41.已有定义:char c; ,程序前面已在命令行中包含 ctype.h 文件,不能用于判断 c 中的字符是否为大写字母的表达式是( )。A) isupper(C) B) A=c=ZC) A=cc=Z D) c=(z-32) (a-32) =c(分数:1.00)A.B.C.D.42.若有以
19、下结构体定义,则_是正确的引用或定义。struct exampleint x;int y;v1;A) example.x=10 B) example v2.x=10C) struct v2;v2.x=10 D) struct example v2=10;(分数:1.00)A.B.C.D.43.数据库管理系统中用来定义模式、内模式和外模式的语言为A) C B) Basic C) DDL D) DML(分数:1.00)A.B.C.D.44.为了合理组织数据,应遵循的设计原则是 ( )A) “一事一地”的原则,即一个表描述一个实体或实体之间的一种联系B) 用外部关键字保证有关联的表之间的联系C) 表
20、中的字段必须是原始数据和基本数据元素,并避免在表之间出现重复字段D) 以上各原则都包括(分数:1.00)A.B.C.D.45.有以下程序:struct STUchar name10;int num;;void f1(struct STU c)struct STU b=“LiSiGuo“,2042);c=b;void f2(struct STU *c)struct STU b=“SunDan“,2044);*c=b;main()struct STU a=“YangSan“,2041,b=“WangYin“,2043);f1(a);f2(printf(“%d %d/n“,a.num,b.num);
21、执行后输出结果是( )。A) 2041 2044 B) 2041 2043 C) 2042 2044 D) 2042 2043(分数:1.00)A.B.C.D.46.若有下列说明和语句,则对结构体变量 st 中成员 i 的引用方式不正确的是( )。Struct stuint i;int name;st,*p;p=k=-1,k=1; i+, k+)printf(“*/n“);A) 判断循环结束的条件不合法 B) 是无限循环C) 循环一次也不执行 D) 循环只执行一次(分数:1.00)A.B.C.D.50.在软件开发中,下面任务不属于设计阶段的是( )。A) 数据结构设计 B) 给出系统模块结构C
22、) 定义模块算法 D) 定义需求并建立系统模型(分数:1.00)A.B.C.D.二、填空题(总题数:20,分数:34.00)51.mystrlen 函数的功能是计算 str 所指字符串的长度,并作为函数值返回。请填空。int mystrlen(char*str)int ifor(i=0;_!=/0;i+);return(i);(分数:2.00)填空项 1:_52.若从键盘输入 34,则以下程序输出的结果是_。#includestdio.hmain()int a;scanf(“%d“,char s21,*p;for(i=0;i20;i+)si=getchar();si=_;p=_;while(*
23、p) putchar(_);(分数:2.00)填空项 1:_61.以下函数用来求出两整数之和,并通过形参将结果传回,请填充完整。void func(int x,int y, _z)*z=x+y;(分数:2.00)填空项 1:_62.己定义 char ch=$;int i=l,j;,执行 j=!ch jn;j+) if(_) x=arij; bri=x; (分数:2.00)填空项 1:_65.算法的复杂度主要包括 1 复杂度和空间复杂度。(分数:1.00)填空项 1:_66.设有定义“struct int a; float b; char c; abc, *p_abc=abc; “,则对结构体成
24、员 a 的引用方法可以是 abc.a 和 p_abc 1a。(分数:2.00)填空项 1:_67.软件维护活动包括以下几类:改正性维护、适应性维护、 1 维护和预防性维护 o(分数:2.00)填空项 1:_68.结构化设计主要分为系统设计和模块设计, 1 的任务是决定系统的模块结构。(分数:1.00)填空项 1:_69.以下程序运行后的输出结果是_。main( )int x=10,y=20,t=0;if(x= =y)t=x;x=y;y=tprintf(“%d,%d/n“,x,y);(分数:1.00)填空项 1:_70.以下程序运行后的输出结果是_。main()int x=0210;printf
25、(“%X/n“,x);(分数:2.00)填空项 1:_二级 C 语言笔试-360 答案解析(总分:104.00,做题时间:90 分钟)一、选择题(总题数:50,分数:70.00)1.函数调用 strcat(strcpy(str1,str2),str3)的功能是( )。A) 将字符串 str1 复制到字符串 str2 中后再连接到字符串 str3 之后B) 将字符串 str1 连接到字符串 str2 之后再复制到字符串 str3 之后C) 将字符串 str2 复制到字符串 sir1 中后再将字符串 str3 连接到字符串 str1 之后D) 将字符串 str2 连接到字符串 str1 之后再将字
26、符串 str1 复制到字符串 str3 中(分数:2.00)A.B.C. D.解析:解析 strcat(s1,s2)是把 s2 字符串连接到 s1 字符串末尾,strcpy(s1,s2)是把 s2 字符串复制给s1 字符串,要保证 s1 能容纳下连接或复制后的字符串。2.设 fp 为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof (fp)的返回值为( )。A) EOF B) 非 0 值 C) 0 D) NULL(分数:1.00)A.B. C.D.解析:解析 feof()函数的功能是检查一个文件的读写指针是否已指向此文件的结尾,如果是的话函数返回非 0 值,否则函数返回 0。所以本
27、题应该选择 B。3.下列不正确的转义字符是( )。A) / B) /t C) /n D) 088(分数:2.00)A.B.C.D. 解析:解析 /是反斜线转义字符:/t是水平跳格转义字符:/n是换行转义字符;C 语言中没有规定088为转义字符。4.以下叙述中正确的是( )。A) C 程序的基本组成单位是语句 B) C 程序中的每一行只能写一条语句C) 简单 C 语句必须以分号结束 D) C 语句必须在一行内写完(分数:1.00)A.B.C. D.解析:解析 本题考查的是 C 语言的基本概念。C 程序的基本组成单位是函数,所以选项 A)不正确;C程序中一行能写多条语句,所以选项 B)不正确;一条
28、 C 语句可以写在多行上,所以选项 D)不正确。简单C 语句必须以分号结束是正确的,故本题应该选择 C)。5.有下列程序:#include“stdio.h“main()int x=0;int y=0;while(x7x+;printf(“%d,%d“,y,x);程序的输出结果是( )。A) 0,7 B) 7,7 C) 0,6 D) 1,6(分数:2.00)A. B.C.D.解析:解析 本题考查 while 循环。y 的值在 while 循环的控制表达式中加 1,在循环体内减 1,所以总的 y 值不变,且控制条件+y 永远非零。当 x 加到 7 时不满足循环条件,结束循环。6.数据的存储结构是指
29、A) 数据所占的存储空间量 B) 数据的逻辑结构在计算机中表示C) 数据在计算机中的顺序存储方式 D) 存储在外存中的数据(分数:1.00)A.B. C.D.解析:解析 数据的存储结构是数据元素在计算机存储器内的表示。数据的存储结构是逻辑结构用计算机语言的实现,即建立数据的机内表示。7.下列程序的输出结果是( )。#include stdio.hstruct abcint a, b, c, s;main()struct abc s2=1,2,3,4,5,6;int t;t=s0.a+s1.b;printf(“%d/n“,t);A) 5 B) 6 C) 7 D) 8(分数:2.00)A.B. C
30、.D.解析:解析 在本题中,s0.a=1,s1.b=5,所以输出结果为 6。8.有以下程序main() int m=3 n=4,X;X=-m+;x=x+8/+n;printf(“%d/n“,x);程序运行后的输山结果是A) 3 B) 5 C) -1 D) -2(分数:1.00)A.B.C.D. 解析:解析 本题考核的知识点是运算符的优先级。主函数中首先定义了整型变量 m、 n 和 x,并给 m和 n 赋初值为 3 和 4,接着执行两条赋值语句,第一条 x=-m+等价于 x=-(m+),其值即为-3,第二条x=x+8/+n 等价于 X=X+8/(+n),即为 x=-3+8/5=-2,因此最后输出
31、 x 的值为-2。所以, 4 个选项中选项 D符合题意。9.以下叙述中错误的是( )。A改变函数形参的值,不会改变对应实参的值B函数可以返回地址值C可以给指针变量赋一个整数作为地址值D当在程序的开头包含文件 stdio.h 时,可以给指针变量赋 NULL(分数:1.00)A.B.C. D.解析:解析 指针变量的值只能是存储单元地址,而不能是一个整数,故选项 C 错误。10.有定义语句:int b;char c10;,则正确的输入语句是( )。A) scanf(“%d%s“, B) scanf(“%d%s“,C) scanf(“%d%s“,b,c); D) scanf(“%d%s“,b,(分数:
32、1.00)A.B. C.D.解析:解析 本题中 4 个选项的格式控制字符串都是“%d%s”,其中包括两个格式控制符%d 和%s,它们分别表示输入一个十进制整数和输入一个字符串,其对应的参数应该分别为一个整型变量的地址和一个字符型数组的首地址。变量的地址可以通过对变量做取地址(并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是A) double myadd(double a,b) ; B) double myadd(double,double);C) double myadd(double b,double a) ; D) double myadd(double x,
33、double y);(分数:1.00)A. B.C.D.解析:解析 函数声明是对所用到的函数的特征进行必要的声明,编译系统以函数声明中给出的信息为依据,对调用表达式进行检测,以保证调用表达式与函数之间的参数正确传递。函数声明的一般格式为:类型标识符 函数名(类型标识符 形参,);这些信息就是函数定义中的第一行的内容。这里形参的名字是不重要的,重要的是类型标识符,函数声明中也可以不写形参名只写该形参的声明类型,但不能只写形参名而不写该形参的类型。本题中,选项 A中 double myadd(double a,b) ,没写出形参 b 的类型。13.有以下程序main()int m,n,p;scan
34、f(“m=%dn=%dp=%d“,下面各输入语句中错误的是( )。A) scanf(“%d“,C) scanf(“%c“,(分数:1.00)A.B. C.D.解析:解析 选项 A 中p1=a;p2=b;for(k=0;k=7;k+)if(*(p1+k)=*(p2+k) printf(“c“,*(p1+k);A) gae B) ga C) Language D) 有语法错(分数:1.00)A. B.C.D.解析:解析 考查用指针来引用字符数组元素的方法。解题要点 指针 p1+k 相当于指针 P1 向后移动了 k 个字符的位置,指针 p2 同理。16.有以下计算公式:(分数:1.00)A.B. C
35、.D.解析:解析 选项 B 一开始就调用了 sqrt(x)而没有判断 x 的正负,所以是错误的。故应该选 B。17.以下选项中可作为 C 语言合法常量的是A) -80 B) -080 C) -8e1.0 D) -80.0e(分数:1.00)A. B.C.D.解析:解析 选项 B)中,以 0 开头表示是一个八进制数,而八进制数的取值范围是 07,所以-080 是不合法的;选项 C)和 D)中,e 后面的指数必须是整数,所以也不合法。18.下面程序的功能是输出以下形式的金字塔图案:*main()int i,j;for(i=1;i=4;i+)for(j=1;j=4-i;j+) printf(“);f
36、or(j=1;j=;j+) printf(“*“);printf(“/n“);在下画线处应填入的是( )。Ai B2*i-1 C2*i+1 Di+2(分数:1.00)A.B. C.D.解析:解析 对于第 i 行,程序先输出 4-i 个空格。然后输出 2i-1 个”*”,所以,答案是 B。19.有下列程序段:struct Stint x;int *y;)*pt;int a=1,2),b=3,4);struct st c2=10,a,20,b);pt=c;下列选项中表达式的值为 11 的是( )。A) *pt- y B) pt- x C) + +pt- x D) (pt+ +)-x(分数:2.00
37、)A.B.C. D.解析:解析 由题目的已知条件可知,pt 指向结构体数组 c2的第一元素 c0,所以 pt-x=10,执行自加运算后为 11。20.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是A) n=0; while( ch=getchar()!=/n) n+;B) n=0; while( getchar()! =/n) n+;C) for( n=0; getehar()!=/n; n+);D) n=0; for( ch=getchar(); ch!=/n; n+);(分数:2.00)A.B.C.D. 解析:解析 选项 D 中 ch=getchar()的操作
38、,在 for 语句中所处的位置决定了此操作仅做一次,即只能从键盘上接收一个字符。如果该字符是回车符,则只循环一次就退出;如果输入一个非回车字符,则程序进入无限循环。21.以下程序企图把从终端输入的字符输出到名为 abctxt 的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。#includestdiohmain()FILE*fout;char ch;four=fopen(abc.txt,w);ch=fgetc(stdin);while(ch!=#)fputc(ch,fout);ch=fgetc(stdin);felose(fout);出错的原因是A) 函数 fopen 调用形式
39、错误 B) 输入文件没有关闭C) 函数 fsetc 调用形式错误 D) 文件指针 stdin 没有定义(分数:1.00)A. B.C.D.解析:解析 stdin 是标准输入设备的文件指针,不需定义直接可以使用,它随系统的启动而打开,随系统的关闭而关闭,fgetc()函数的作用是从某个文件中读取一个数据,其参数为要读取文件的文件指针。fopen()函数有两个参数,第一个参数是打开的文件名,第二个参数是文件打开模式,两个参数都是字符串,本例中“four=fopen(abctxt, w);”语句的 fopen()函数参数是错误的,应该用双引号“w”,正确的应改为 fout=fopen(“ abctx
40、”,“w”);。22.字长为 16 位的计算机是指_。A) 该计算机能够处理的最大数不超过 16B) 该计算机中的 CPU 可以同时处理 16 位的二进制信息C) 该计算机的内存量为 16MBD) 该计算机每秒钟所能执行的指令条数为 16MIPS(分数:2.00)A.B. C.D.解析:解析 字长是指 CPU 可以同时处理二进制的位数,是由 CPU 的型号和类型决定的。23.设有如下说明:typedef struct ST(long a;int b;char c2;)NEW;则下面叙述中正确的是( )A) 以上的说明形式非法 B) ST 是一个结构体类型C) NEW 是一个结构体类型 D) N
41、EW 是一个结构体变量(分数:1.00)A.B.C. D.解析:解析 本题考查的知识点是:结构体的定义和用户定义类型的结合。结构体类型说明的一般形式为:struct 结构体标识名(类型名 1 结构体成员名;)题中 ST 为结构体标识名,而结构体标识名是可选项,NEW 为结构体类型故 C)为正确答案。24.在以下给出的表达式中,与 while(E)中的(E)不等价的表达式是( )。A) (!E=0)B) (E0|E0)C) (E=0)D) (E!=0)(分数:1.00)A.B.C. D.解析:解析 题目中的 while(E)循环是当 E 等于 0 时,循环结束,E 不等于 0 时,继续循环。选项
42、 C 中,当 E 等于 0 时,表达式“E=0”为真继续循环,而 E 不等于。时,表达式为假循环结束,这与题目中的条件不等价,故应该选择 C。25.有以下程序:main()int k=5, n=0;doswitch(k)case 1: case 3: n+1; k-break;default: n=0; k-;case 2: case 4: n+=2; k-; break;printtf(“%d“, n);while (k0n5);程序运行后的输出结果是( )。A) 235 B) 0235 C) 02356 D) 2356(分数:1.00)A. B.C.D.解析:解析 本题主要考查的知识点是
43、switch 语句。因为变量的初始值分别为“k=5,n=0”,所以程序第一次进入循环时,执行 default 语句,这时 k=4,执行“case 4: ”这个分支,结果是“n=2,k=3”,打印出 2;程序然后进行第二次循环,这时“n=2,k=3”,执行“case 3:”这个分支,结果是“n=3,k=2”,打印出 3;程序进行第三次循环,这时“n=3,k=2”,执行“case 2:case 4:”这两个分支,结果是“n=5,k=1”,打印出 5,这时因为 n=5 不满足 n5 的循环条件,因此退出循环,程序运行结束,故输出结果为 235。26.已定义以下函数:int fun(int*p)ret
44、urn*P;)fun 函数返回值是_。A) 不确定的值 B) 一个整数C) 形参 P 中存放的值 D) 形参 P 的地址值(分数:2.00)A.B. C.D.解析:解析 p 中存放的是地址值,但是*p 间接引用了 p 指向的整数值。因此返回一个整数。27.以下正确的程序段是A) char str1=“12345“,str2=“abcdef“;B) char str10,*st=“abcde“;strcat(str,st);C) charstr10=“ “。*st=“abcde“;strcat(str,st);D) char*st1=“12345“,*st2=“abcde“;strcat(st1
45、,st2);(分数:2.00)A.B.C. D.解析:解析 本题考查了一维字符数组的定义和初始化。选项 C 中 str10初始化为空,可以不必进行类似“ “的空赋值,字符数组若没有进行初始化赋值,默认的字符为空,并且定义完 str 数组后,应该用“,”分隔而不是“。”,所以选项 C 错误。28.以下程序段中,能够通过调用函数 fun,使 main 函数中的指针变量 p 指向一个合法的整型单元的是A) main() int*p; fun(p); int fun(int*p) int s; p B) mainint *p;fun( *p= C) #include stdlib.h main() i
46、nt *p;fun( int fun(int*p) *p=(int*)malloc(2); D) #include stdlib.hmain()int *p;fun(p);int fun(int *p)p=(int*)malloc(sizeof(int);(分数:1.00)A.B.C. D.解析:29.下面说明不正确的是A) char a10=“china“; B) char a10,*p=a;p=“china“C) char *a;a=“china“; D) char a10,*p;p=a=“china/(分数:2.00)A.B.C.D. 解析:解析 C 语言中操作一个字符串常量的方法有:把
47、字符串常量存放在一个字符数组之中;用字符指针指向字符串,然后通过字符指针来访问字符串存储区域。当字符串常量在表达式中出现时,根据数组的类型转换规则,它被转换成字符指针。本题选项 D 中错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。30.下面不属于软件设计原则的是A) 抽象 B) 模块化 C) 自底向上 D) 信息隐蔽(分数:2.00)A.B.C. D.解析:解析 软件设计遵循软件工程的原则,包括抽象、模块化、局部化、信息隐蔽、确定性、一致性、完备性和可验证性。31.对长度为 n 的线性表进行顺序查找,在最坏的情况下需要比较的次数为( )。A) 125 B) n/2C) n D) n+1(分数:2.00)A.B.C. D.解析:解析 对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止在最坏的情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。32.下列程序的输出结果是( )。#in