1、二级 C语言笔试-249 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.下列程序的执行结果是( )。#includestdio.hmain()int a,b,c;a=b=2;c=(a+)-1 ;printf(“%d,%d“,a,c);c+=-a+(+b);printf(“%d,%d“,a,c);(分数:2.00)A.3, 14, 1B.3, 14, 2C.2, 04, 1D.2, 14, 12.下列程序段的运行结果是( )。#includestdio.hvoid main()char str=“ABC“,*p=str;printf(“%d
2、/n“,* (p+3);(分数:2.00)A.67B.0C.字符C的地址D.字符C3.下列程序的运行结果是( )。main()int a=-5,b=1,c=1;int x=0,y=2,z=0;if(c0) x=x+y;if(a=0)if(b0)if(c=0) y= x - y;else if(c0) y=x-y;else z= y;printf(“%d,%d,%d/n“, x, y, z);(分数:2.00)A.2,2,0B.2,2,2C.0,2,0D.2,0,24.源程序的文档化不包括( )。(分数:2.00)A.符号名的命名要有实际意义B.正确的文档形式C.良好的视觉组织D.正确的程序注释
3、5.下列程序的输出结果是( )。#include stdio.hmain()struct stint y,x,z;unionlong i;int j;char k;un;printf(“%d,%d/n“,sizeof(struct st),sizeof(un);(分数:2.00)A.6, 2B.6, 4C.8, 4D.8, 66.有下列函数:int fun(char*s)char*t=s;while(*t+);reurn(t-s);该函数的功能是( )。(分数:2.00)A.比较两个字符串的大小B.计算 s所指字符串占用内存字节的个数C.计算 s所指字符串的长度D.将 s所指字符串复制到字符串
4、 t中7.在 C语言中,函数返回值的类型最终取决于( )。(分数:2.00)A.函数定义时在函数首部所说明的函数类型B.return语句中表达式值的类型C.调用函数时主调函数所传递的实参类型D.函数定义时形参的类型8.已知大写字母 A的 ASCII码是 65,小写字母 a的 ASCII码是 97。下列不能将变量 c中的大写字母转换为对应小写字母的语句是( )。(分数:2.00)A.c=(c-A)%26+aB.c=c+32C.c=c-A+aD.c=(A9.有下列函数定义:int fun(double a,double b)return a*b;若下列选项中所用变量都已正确定义并赋值,错误的函数调
5、用是( )。(分数:2.00)A.if(fun(x,y)B.z=fun(fun(x,y),fun(x,y);C.z=fun(fun(x,y)x,y);D.fun(x,y);10.设有下列定义:struct skint m;float x;data,*q;若要使 q指向 data中的 m域,正确的赋值语句是( )。(分数:2.00)A.q=B.*q=data.m;C.q=(struct sk*)D.q=(struct sk*)data.m;11.数据的存储结构是指( )。(分数:1.00)A.数据所占的存储空间B.数据的逻辑结构在计算机中的存放形式C.数据在计算机中的顺序存储方式D.存储在计算机
6、外存中的数据12.若 w、x、y、z、m 均为 int型变量,则执行下列的语句后 m的值是( )。w=2, x=3, y=4, z=5;m=(wx)?w:x;m=(mz)?m:z;m=(my)?m:y;(分数:1.00)A.2B.3C.5D.413.下列程序中 c的二过值是( )。char a=2,b=4,c;c=ab2;(分数:1.00)A.00000011B.00010100C.00011100D.0001100014.标准库函数 fgets(s,n,file)的功能是( )。(分数:1.00)A.从文件 file中读取长度为 n的字符串存入字符数组 s中B.从文件 file中读取长度不超
7、过 n-1个字符的字符串放到字符数组 s中C.从文件 file中读取 n个字符串存入字符数组 s中D.从文件 file中读取长度为 n-1个字符的字符串存入字符数组 s中15.已知 i、j、k 为 int型变量,若要从键盘输入 2、3、4CR,使 I、j、k 的值分别为 2、3、4,(分数:1.00)A.scanf(“%3d,%3d,%3d“,B.scanf(“%d,%d,%d“,C.scanf(“%d%d%d“,D.seanf(“i=%dj=%d,k=%d“,16.下列程序的输出结果是( )。#includestdio.hint fun(int x)int a;if(x=0x=1)retur
8、n 3;elsea=x-fun(x-2);return a;void main()printf(“%d“,fun(7);(分数:1.00)A.2B.8C.9D.517.判断字符串 s1是否大于字符串 s2,应该使用( )。(分数:1.00)A.if(strcmp(s1,s2)0)B.if(s1s2)C.if(strcmp(s2,s1)0)D.if(strcmp(s1,s2)18.下列 4个关于 C语言的结论中错误的是( )。(分数:1.00)A.可以用 dowhile语句实现的循环一定可以用 while语句实现B.可以用 for语句实现的循环一定可以用 while语句实现C.可以用 while
9、语句实现的循环一定可以用 for语句实现D.dowhile语句与 while语句的区别仅是关键字“while”出现的位置不同19.下列程序段的输出结果为( )。#includestdio.hmain()static char a=“language“;char *p;p=a;for(p=a;pa+8;p+=2)putchar(*p);(分数:1.00)A.languageB.lnugC.有语法错误D.lang20.#define 能作简单的替代,用宏来替代计算多项式 5*x*x+5*x+5的值的函数 f,正确的宏定义语句为( )。(分数:1.00)A.#define f(x)5*x*x+5*x
10、+5B.#define f5*x*x+5*x+5C.#define f(a)(5*a*a+5*a+5)D.#define(5*x*x+5*x+5)fx)21.有下列二叉树,对此二叉树中序遍历的结果为( )。(分数:2.00)A.B.C.D.22.下列标识符不是关键字的是( )。(分数:2.00)A.breakB.charC.SwitchD.return23.两次运行下列的程序,如果从键盘上分别输入 3和 1,则输出结果是( )。main()int x;scanf(“%d“,if(x+2) printf(“%d“,x);else printf(“%d/n“,x-);(分数:2.00)A.4和 2
11、B.4和 1C.4和 0D.3和 124.下列程序的运行结果是( )。#includestdio.h#includestring.hmain()char*s1=“abDuj“;char*s2=“ABdUG“;int t;t=strcmp(s1,s2);printf(“%d“,t);(分数:2.00)A.正数B.负数C.零D.不确定的值25.语句“printf(“a/bhow/are/y/bou/n“);“的输出结果是( )。(分数:2.00)A.a/bhow/are/y/bouB.a/bhow/are/y/bouC.howareyouD.ahowarey/bou26.若有说明 int a3=0
12、,0;,则不正确的叙述是( )。(分数:2.00)A.数组 a的每个元素的初值都是 0B.数组 a的第一维大小为 1C.数组 a的行数为 1D.只有元素 a00和 a01可得到初值 0,其余元素均得不到初值 027.下列说法不正确的是( )。(分数:2.00)A.C程序是以函数为基本单位的,整个程序由函数组成B.C语言程序的一条语句可以写在不同的行上C.C程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写D.C程序的每个语句都以分号结束28.为了提高软件模块的独立性,模块之间最好是( )。(分数:2.00)A.控制耦合B.公共耦合C.内容耦合D.数据耦合29.待排序的关键码序列为
13、(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码 33被放到第( )个位置。(分数:2.00)A.3B.5C.7D.930.下列选项中不合法的十六进制数是( )。(分数:2.00)A.OxffB.OX11C.OxlgD.OXabc31.下列二维数组初始化语句中,不正确的是( )。(分数:2.00)_32.下列程序的运行结果是( )。#includestdio.hvoid fun (int*s,int*p)static int t=3;*p=st;t-;void main()int a=2, 3
14、, 4, 5,k;int x;for(k=0; k4; k+)fun (a, printf(“%d,“, x);(分数:2.00)A.5,4,3,2B.2,3,4,5,C.2,2,2,2,D.5,5,5,5,33.对长度为 n的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。(分数:2.00)A.125B.n/2C.nD.n+134.下列叙述中正确的是( )。(分数:2.00)A.break语句只能用于 swish语句体中B.continue语句的作用是使程序的执行流程跳出包含它的所有循环C.break语句只能用在循环体内和 switch语句体内D.在循环体内使用 break语句和 c
15、ontinue语句的作用相同35.若变量已正确定义,下列正确的程序段是( )。(分数:2.00)A.while(ch=getchar()=/N)putchar(ch);B.while(ch=getchar()=/n)putchar(ch);C.while(ch=getehar()!=/N)putchar(ch);D.while(ch=getchar()!=/n,)putchar(ch);36.数据库系统的核心是( )。(分数:2.00)A.数据模型B.数据库管理系统C.数据库D.数据库管理员37.栈和队列的共同点是( )。(分数:2.00)A.都是先进先出B.都是先进后出C.只允许在端点处插入
16、和删除元素D.没有共同特点38.下列合法的字符型常量是( ),(分数:2.00)A./x13B./081C.65D.“/n“39.下列描述中正确的是( )。(分数:2.00)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D.软件工程只是解决软件开发过程中的技术问题40.下列叙述中正确的是( )。(分数:2.00)A.算法的执行效率与数据的存储结构无关B.算法的空间复杂度是指算法程序中指令(或语句)的条数C.算法的有穷性是指算法必须能在执行有限个步骤之后终止D.以上 3种描述都不对二、填空题(总题数:1
17、5,分数:30.00)41.在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放各元素之间 1 的信息。(分数:2.00)填空项 1:_42.按照“先进先出”的原则组织数据的结构是 1。(分数:2.00)填空项 1:_43.深度为 5的满二叉树中,叶子结点的个数为 1。(分数:2.00)填空项 1:_44.在面向对象的方法中, 1 描述的是具有相似属性与操作的一组对象。(分数:2.00)填空项 1:_45.Jackson方法是一种面向 1 的结构化方法。(分数:2.00)填空项 1:_46.若 a是 int型变量,则表达式(a=2*3,a*2),a+6 的值为_。(分数:2.00)填空项
18、 1:_47.表达式 1/2*(int)3.7/(int)(2.4*(1.5+2.5)值的数据类型为 1。(分数:2.00)填空项 1:_48.下列程序段的输出结果是_。int n=c;switch(n+)default:printf(“error“);break;case a: printf(“good“);break;case c: printf(“morning“);case d: printf(“class“);(分数:2.00)填空项 1:_49.写出下列程序的输出结果_。main()int n=0;while(n+= 1);printf(“%d,“,n);printf(“%d“,n
19、+);(分数:2.00)填空项 1:_50.下列程序的功能是对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。#includestdio.h#includectype.hmain()char c;int a,s=0;while(_)if(isdigit(c)a= c-0;s+=a;printf(“s=%d“,s);(分数:2.00)填空项 1:_51.下列程序输出的结果是_.int m=17;int fun(int x,int y)int m=3;return(x*y-m);main()int a=5,b=7;printf(“%d/n“,fun(a,b)/m);(分数:2.00)
20、填空项 1:_52.设有下列的程序段:char str=“Hello“;char *ptr;ptr=str;执行上面的程序段后,*(ptr+5)的值为(分数:2.00)填空项 1:_53.若有定义 int a44=1,2 3,4,0 4,6,8,10,1,3,5,7, 则初始化后,a11得到的初值是 1。(分数:2.00)填空项 1:_54.设有下列程序:#includestdio.h#includestring.hmain()int i;char si 10,ti 10;gets(t);for(i=0;i2;i+)gets(s);if(strcmp(t,s)0)strcpy(t,s);pri
21、ntf(“%s/n“,t);程序运行后,从键盘上输入(CR代表回车符):CDEFCRBADEFCRQTHRGCR,则程序的输出结果是_。(分数:2.00)填空项 1:_55.下列程序的输出结果是_。#define P(a) printf(“%d,“,(int)(a)#define PRINT(a) P(a);printf(“the end“)main()int i,a=0;for(i=1 ;i5;i+)PRINT(a+i);printf(“/n“);(分数:2.00)填空项 1:_二级 C语言笔试-249 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70
22、.00)1.下列程序的执行结果是( )。#includestdio.hmain()int a,b,c;a=b=2;c=(a+)-1 ;printf(“%d,%d“,a,c);c+=-a+(+b);printf(“%d,%d“,a,c);(分数:2.00)A.3, 14, 1 B.3, 14, 2C.2, 04, 1D.2, 14, 1解析:解析 本题主要考查自加运算符(+、-)的使用。前缀变量“+i、-i”,在使用 i之前,先使 i的值加 1或者减 1,再使用此时的表达式的值参与运算;后缀变量“i+、i-”,先使用此时的表达式的值参与运算,在使用 i之后,再使 i的值加 1或者减 1。本题中计
23、算表达式 c=(a+)-1时先使用 a的值进行计算,结果为 c=2-1=1,然后将 a的值加 1,即执行完此语句后 a的值是 3;表达式 c+=-a+(+b)等价于 c=c+(-a+)+(+b), c=1+(-3)+3-1,此时a=4,b=3。2.下列程序段的运行结果是( )。#includestdio.hvoid main()char str=“ABC“,*p=str;printf(“%d/n“,* (p+3);(分数:2.00)A.67B.0 C.字符C的地址D.字符C解析:解析 先定义了一个指向字符型数组 str的指针 p,指针 P指向数组 str的首地址,p+3 将指针指向 str3,
24、又因为字符型数组在存放字符串时会自动在末尾加上/0,所以*(p+3)=0。3.下列程序的运行结果是( )。main()int a=-5,b=1,c=1;int x=0,y=2,z=0;if(c0) x=x+y;if(a=0)if(b0)if(c=0) y= x - y;else if(c0) y=x-y;else z= y;printf(“%d,%d,%d/n“, x, y, z);(分数:2.00)A.2,2,0 B.2,2,2C.0,2,0D.2,0,2解析:解析 本题考查 if else语句的使用。先判断第 1个 if语句,因为 c=10,所以 x=x+y=0+2=2。第 1个 if语句
25、,因为 a=-50,所以进入下列的复合语句。经判断发现,复合语句中第 2个 if语句的条件均不满足,不执行任何语句退出,在这个过程中 y和 z的值没有发生变化。4.源程序的文档化不包括( )。(分数:2.00)A.符号名的命名要有实际意义B.正确的文档形式 C.良好的视觉组织D.正确的程序注释解析:解析 源程序的文档化主要包括 3点:符号名应具有一定实际的含义,便于理解程序功能;正确的程序注释;良好的视觉组织(利用空格、空行、缩进等技巧使程序层次清晰)。5.下列程序的输出结果是( )。#include stdio.hmain()struct stint y,x,z;unionlong i;in
26、t j;char k;un;printf(“%d,%d/n“,sizeof(struct st),sizeof(un);(分数:2.00)A.6, 2B.6, 4 C.8, 4D.8, 6解析:解析 本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立;联合所占用的内存空间为最长的成员所占用的空间。6.有下列函数:int fun(char*s)char*t=s;while(*t+);reurn(t-s);该函数的功能是( )。(分数:2.00)A.比较两个字符串的大小B.计算 s
27、所指字符串占用内存字节的个数C.计算 s所指字符串的长度 D.将 s所指字符串复制到字符串 t中解析:解析 在函数 fun(char*s)中,首先用字符指针变量 t指向 s,而循环语句 while(*t+);的功能是使指针变量 t指向字符串变量 s的末尾,这时退出循环,因而语句 return(t-s);回的就是字符串 s所指字符串的长度。7.在 C语言中,函数返回值的类型最终取决于( )。(分数:2.00)A.函数定义时在函数首部所说明的函数类型 B.return语句中表达式值的类型C.调用函数时主调函数所传递的实参类型D.函数定义时形参的类型解析:解析 在 C语言中,应当在定义函数时指定函数
28、值的类型。凡不加类型说明的函数,默认按整型处理。在定义函数时对函数值说明的类型一般应该和 return语句中的表达式类型一致。如果函数值的类型和 return语句中的表达式类型不一致,则以函数值的类型为准,由系统自动进行转换。即函数类型决定返回值的类型。8.已知大写字母 A的 ASCII码是 65,小写字母 a的 ASCII码是 97。下列不能将变量 c中的大写字母转换为对应小写字母的语句是( )。(分数:2.00)A.c=(c-A)%26+aB.c=c+32C.c=c-A+aD.c=(A 解析:解析 由题意可知,小写字符 a和大写字符 A的 ASCII代码相差为 32,所以选项 C)能将大写
29、字符c的 ASCII代码转换为小写字符 c的 ASCII代码:选项 A)和 C)左侧的表达式都是大写字符 c与大写字符A的差与a的 ASCII代码的和就是小写字符 c的 ASCII代码。而选项 D)中应该是加上a,而不是减去a。9.有下列函数定义:int fun(double a,double b)return a*b;若下列选项中所用变量都已正确定义并赋值,错误的函数调用是( )。(分数:2.00)A.if(fun(x,y)B.z=fun(fun(x,y),fun(x,y);C.z=fun(fun(x,y)x,y); D.fun(x,y);解析:解析 本题考查函数调用时的参数传递。C 项中第
30、一个参数的表达式不正确,因此不能得到正确的结果。10.设有下列定义:struct skint m;float x;data,*q;若要使 q指向 data中的 m域,正确的赋值语句是( )。(分数:2.00)A.q=B.*q=data.m;C.q=(struct sk*) D.q=(struct sk*)data.m;解析:解析 利用强制类型转换(struct sk*),把整数型地址m=(wx)?w:x;m=(mz)?m:z;m=(my)?m:y;(分数:1.00)A.2 B.3C.5D.4解析:解析 条件表达式“a?b:c”的含义是:当 a为真时,其值等于表达式 b的值,当 a为假时,其值等
31、于表达式 c的值。表达式运算过程:第 1个表达式:w=2x=3 为真,所以返回 w的值,即 m=w=2;第 2个表达式:m=2z=5为真,所以返回 m的值,即 m=2;第个表达式:w=2y=4 为真,所以返回 m的值,即 m=2。13.下列程序中 c的二过值是( )。char a=2,b=4,c;c=ab2;(分数:1.00)A.00000011 B.00010100C.00011100D.00011000解析:解析 本题主要考查按位异或和右移运算。b=4 的二进制为 00000100,b2 后为00000001,a=2 的二进制为 00000010,两者异或为 00000011。14.标准库
32、函数 fgets(s,n,file)的功能是( )。(分数:1.00)A.从文件 file中读取长度为 n的字符串存入字符数组 s中B.从文件 file中读取长度不超过 n-1个字符的字符串放到字符数组 s中 C.从文件 file中读取 n个字符串存入字符数组 s中D.从文件 file中读取长度为 n-1个字符的字符串存入字符数组 s中解析:解析 字符串输入函数 fgets()的调用形式为:fgets(s,n,fp)。fgets 函数参数说明:“s”可以是一个字符数组名,也可以是指向字符串的指针;“n”为要读取的最多的字符个数;“fp”是指向该文件的文件型指针。fgets函数的功能是;从中所指
33、向的文件中读取长度不超过 n-1个字符的字符串,并将该字符串放到字符数组 s中;读入字符串后会自动在字符串末尾加入“/0”结束符,表示字符串结束。15.已知 i、j、k 为 int型变量,若要从键盘输入 2、3、4CR,使 I、j、k 的值分别为 2、3、4,(分数:1.00)A.scanf(“%3d,%3d,%3d“,B.scanf(“%d,%d,%d“, C.scanf(“%d%d%d“,D.seanf(“i=%dj=%d,k=%d“,解析:解析 scanf 函数的调用形式是:scanf(格式字符串;输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量
34、的地址。若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。16.下列程序的输出结果是( )。#includestdio.hint fun(int x)int a;if(x=0x=1)return 3;elsea=x-fun(x-2);return a;void main()printf(“%d“,fun(7);(分数:1.00)A.2 B.8C.9D.5解析:解析 本题考查函数的递归调用。在函数递归调用时,fun(7):a=7-fon(5)fun(5):a=5-fon(3)fun3:a=3-fun(1)fun(1):a=3,反推回去 fun(3)
35、:a=3-3=0fun(5):a=5-0=5fun(7):a=7-5-2,最后的计算结果为 2。17.判断字符串 s1是否大于字符串 s2,应该使用( )。(分数:1.00)A.if(strcmp(s1,s2)0)B.if(s1s2)C.if(strcmp(s2,s1)0) D.if(strcmp(s1,s2)解析:解析 本题考查字符串比较函数 strcmp()。调用形式:strcmp(s1,s2),其中 s1、s2 分别是字符串存储区的首地址。函数功能:比较字符串 str1和 str2,当 str1str2 时,返回值为负数;当str1=str2时,返回 0;当 str1str2,返回值为正
36、数(注意:不能使用关系运算符比较两个字符串的大小)。18.下列 4个关于 C语言的结论中错误的是( )。(分数:1.00)A.可以用 dowhile语句实现的循环一定可以用 while语句实现B.可以用 for语句实现的循环一定可以用 while语句实现C.可以用 while语句实现的循环一定可以用 for语句实现D.dowhile语句与 while语句的区别仅是关键字“while”出现的位置不同 解析:解析 本题考查几个循环语句的关系。dowhile 语句、while 语句、for 语句所实现的循环可以相互替代;dowhile 语句和 while 语句的区别是 dowhile语句至少执行一次
37、。19.下列程序段的输出结果为( )。#includestdio.hmain()static char a=“language“;char *p;p=a;for(p=a;pa+8;p+=2)putchar(*p);(分数:1.00)A.languageB.lnug C.有语法错误D.lang解析:解析 本程序首先定义了静态字符数组 a,然后将指针 P指向数组 a的首地址。第 1次 for循环,p=a,p 指向数组的第 1个元素,*p 是取指针 P所指地址的内容,输出 1;第 2次 for循环,p=p+2,则 p指向数组的第 3个元素,*p 是取指针 p所指地址的内容,输出 n;第 3次 for
38、循环,p=p+2,则 p指向数组的第 5个元素,*p 是取指针 p所指地址的内容,输出 u;第 4次 for循环,p=p+2,则 p指向数组的第 7个元素,*p 是取指针 p所指地址的内容,输出 g,结束循环。20.#define 能作简单的替代,用宏来替代计算多项式 5*x*x+5*x+5的值的函数 f,正确的宏定义语句为( )。(分数:1.00)A.#define f(x)5*x*x+5*x+5B.#define f5*x*x+5*x+5C.#define f(a)(5*a*a+5*a+5) D.#define(5*x*x+5*x+5)fx)解析:解析 带参数宏的格式为:#define 标
39、识符(形参衰) 形参表达式。其功能是:预处理程序将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。21.有下列二叉树,对此二叉树中序遍历的结果为( )。(分数:2.00)A.B. C.D.解析:解析 对二又树的中序遍历是指:首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左,右子树时,注意依旧按照“左子树根结点右于树”的顺序。22.下列标识符不是关键字的是( )。(分数:2.00)A.breakB.charC.Switch D.return解析:解析 break、char、return、switch 都是 C语言中的关键字,Switch 不是。因为 C语言区分字母的大小写。23.
40、两次运行下列的程序,如果从键盘上分别输入 3和 1,则输出结果是( )。main()int x;scanf(“%d“,if(x+2) printf(“%d“,x);else printf(“%d/n“,x-);(分数:2.00)A.4和 2 B.4和 1C.4和 0D.3和 1解析:解析 本题考查 if else语句。首先 scanf函数通过键盘读入 x的值。当 x=3时,第一个 if语句,先判断条件,取 x的值 3和 2比较,然后将 x的值加 1,发现条件成立,执行下列的 printf语句,输出x的值 4。当 x=1时,第一个 if语句,先判断条件,取 x的值 1和 2比较,然后将 x的值加
41、 1(x的值变为2),发现条件不成立,执行下列的 else语句,先输出 x的值 2,再将 x的值减 1。24.下列程序的运行结果是( )。#includestdio.h#includestring.hmain()char*s1=“abDuj“;char*s2=“ABdUG“;int t;t=strcmp(s1,s2);printf(“%d“,t);(分数:2.00)A.正数 B.负数C.零D.不确定的值解析:解析 本题考查字符串比较函数和两个字符串比较的原则两个知识点,原则是依次比较两个字符串同一位置的 对字符,若它们的 ASCII码值相同,则继续比较下一对字符,若它们的 ASCII码值不同,
42、则 ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部 i个字符与另一个字符串的前 i个字符相同,则字符串较长的较大。strcmp(s1,s2)的返回值,当 str1str2 时,返回值0;当 str1=str2时,返回值为 0;当 str1str2,返回值0。25.语句“printf(“a/bhow/are/y/bou/n“);“的输出结果是( )。(分数:2.00)A.a/bhow/are/y/bouB.a/bhow/are/y/bouC.howareyou D.ahowarey/bou解析:解析 “/b”格式符表示退格,功能是将它后面的字母把它前
43、曲的字母覆盖,导致“/b” 格式符前面的字母不能输出;“/”格式符表示输出单引号字符:“/”格式符表示输出反斜线字符。26.若有说明 int a3=0,0;,则不正确的叙述是( )。(分数:2.00)A.数组 a的每个元素的初值都是 0B.数组 a的第一维大小为 1C.数组 a的行数为 1D.只有元素 a00和 a01可得到初值 0,其余元素均得不到初值 0 解析:解析 本题考查给二维数组元素赋值。给二维数组元素赋值时应注意下列两点:在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取 0。二维数组第一维的大小由下列规则确定:当初值的个数能被第二维的常量表达式的值除尽时,所得
44、商数就是第一维的大小;当初值的个数不能被第二维的常量表达式的值除尽时,第一维的大小=所得商数+1。27.下列说法不正确的是( )。(分数:2.00)A.C程序是以函数为基本单位的,整个程序由函数组成B.C语言程序的一条语句可以写在不同的行上C.C程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写 D.C程序的每个语句都以分号结束解析:解析 本题涉及 C语言基本的 3个知识点:C 语言的源程序是由函数构成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主函数;C 语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以写在不同的行上,或者一行也可以写多条语句
45、;注释行虽然对程序的运行不起作用,但是它可以方便程序员阅读,提高程序的可读性和可移植性,所以书写注释行还是很有必要的。28.为了提高软件模块的独立性,模块之间最好是( )。(分数:2.00)A.控制耦合B.公共耦合C.内容耦合D.数据耦合 解析:解析 耦合性与内聚性是模块独立性的两个定性标准,是互相关联的。在程序设计中,各模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。29.待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后
46、关键码 33被放到第( )个位置。(分数:2.00)A.3B.5 C.7D.9解析:解析 快速排序的基本思想是;从表中选取一个元素(如本题中的 33),将表中小于此元素的移到前面,大于此元素的移到后面结果把线性表分割成两部分(两个子表),此元素插入到其分界线的位置处。然后分别对两个子表再次分割本题中 33作为分割的中界线,第一趟排序后排在比它小的18、9、25、12 后面。30.下列选项中不合法的十六进制数是( )。(分数:2.00)A.OxffB.OX11C.Oxlg D.OXabc解析:解析 十六进制是以“0x”或“0X”开头的字符串,字符串中只能含有 09 这 10个数字和a、b、c、d、e、f 这 6个字母。31.下列二维数组初始化语句中,不正确的是( )。(分数:2.00)_解析:解析 在对二维数组元素赋初值时,可以只对部分元素赋初值,末赋初值的元素自动取 0;C 语言规定,对于二维数组,只可以省略第 1个方括号中的常量表达式,而不能省略第 2个方括号中的常量表达式;赋的初值不能多于事先定义好的数组元素个数。选项 D)赋值表达式中对每一维的元素赋初值应用32.下列程序的运行结果是( )。#includestdio.hvoid fun (int*s,int*p)static int t=3;*p=st;t-;void main()int a=2, 3, 4,