1、二级 C 语言真题(3)及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中正确的是_。(分数:1.00)A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关2.下列叙述中正确的是_。(分数:1.00)A.线性表链式存储结构的存储空间一般要少于顺序存储结构B.线性表链式存储结构与顺序存储结构的存储空间都是连续的C.线性表链式存储结构的存储空间可以是连续的,也可以是不连续的D.以上说法均错误3.某二叉树共
2、有 12 个节点,其中叶子节点只有 1 个,则该二叉树的深度为(根节点在第 l 层)_。(分数:1.00)A.3B.6C.8D.124.对长度为 n 的线性表作快速排序,在最坏情况下,比较次数为_。(分数:1.00)A.nB.n-1C.n(n-1)D.n(n-1)/25.结构化程序设计中,下面对 goto 语句使用描述正确的是_。(分数:1.00)A.禁止使用 goto 语句B.使用 goto 语句程序效率高C.应避免滥用 goto 语句D.以上说法均错误6.下面不属于软件测试实施步骤的是_。(分数:1.00)A.集成测试B.回归测试C.确认测试D.单元测试7.下面不属于软件需求分析阶段主要工
3、作的是_。(分数:1.00)A.需求变更申请B.需求分析C.需求评审D.需求获取8.一般情况下,当对关系 R 和 S 进行自然连接时,要求 R 和 S 含有一个或者多个共有的_。(分数:1.00)A.记录B.行C.属性D.元组9.有三个关系 R、S 和 T 如下: R A B C a 1 2 b 2 1 c 3 1 S A B C d 3 2 c 3 1 T A B C a 1 2 b 2 1 则由关系 R 和 S 得到关系 T 的操作是_。(分数:1.00)A.选择B.差C.交D.并10.有表示公司和职员及工作的三张表,职员可在多家公司兼职。其中公司表 C(公司号,公司名,地址,注册资本,法
4、人代表,员工数),职员表 S(职员号,姓名,性别,年龄,学历),工作表 W(公司号,职员号,工资),则表 W 的键(码)为_。(分数:1.00)A.公司号,职员号B.职员号,工资C.职员号D.公司号,职员号,工资11.以下叙述中正确的是_。(分数:1.00)A.每个后缀为.C 的 C 语言源程序都可以单独进行编译B.每个后缀为.C 的 C 语言源程序都应该包含一个 main 函数C.在 C 语言程序中,main 函数必须放在其他函数的最前面D.在 C 语言程序中,只有 main 函数才可单独进行编译12.C 语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是_。(分数:1.0
5、0)A.关键字可用做用户标识符,但失去原有含义B.预定义标识符可用做用户标识符,但失去原有含义C.在标识符中大写字母和小写字母被认为是相同的字符D.用户标识符可以由字母和数字任意顺序组成13.以下选项中合法的常量是_。(分数:1.00)A.9 9 9B.2.7eC.0XabD.123E 0.214.C 语言主要是借助以下哪种手段来实现程序模块化的?_。(分数:1.00)A.定义函数B.定义常量和外部变量C.使用丰富的数据类型D.使用三种基本结构语句15.以下叙述中错误的是_。(分数:1.00)A.数值型常量有正值和负值的区分B.常量可以用一个符号名来代表C.定义符号常量必须用类型名来设定常量的
6、类型D.常量是在程序运行过程中值不能被改变的量16.若有定义和语句: int a,b; scanf(“%d,%d,“, 以下选项中的输入数据,不能把值 3 赋给变量 a、5 赋给变量 b 的是_。(分数:1.00)A.3,5,4B.3,5C.3,5,D.3,517.C 语言中 char 类型数据占字节数为_。(分数:1.00)A.1B.2C.3D.418.下列关系表达式中,结果为“假”的是_。(分数:1.00)A.3=4B.(34)=1C.(3+4)6D.(3!4)219.若以下选项中的变量 a,b,y 均已正确定义并赋值,则语法正确的 switch 语句是_。(分数:1.00)A.switc
7、h(a*a+b*b) default : break;case 3 : y=a+b; break;case 2 : y=a-b; break;B.switch( a+b )case1 : case3 : y=a+b; break;case0 : case4 : y=a-b;C.switch (a+9)case a : y=a-b;case b : y=a+b;D.switch a * b case 10 : y=a+b;default : y=a-b;20.有以下程序: #include stdio.h main( ) int a=-2,b=0; while(a+ printf(“%d,%d/
8、n“, a,b); 程序运行后输出的结果是_。(分数:1.00)A.0,2B.0,3C.1,3D.1,221.设有定义: int x=0, *p; 紧接着的赋值语句正确的是_。(分数:1.00)A.*p=NULL;B.p=NULL;C.p=x;D.*p=x;22.下列叙述中正确的是_。(分数:1.00)A.空字符串不占用内存,其内存空间大小是 0B.两个连续的单引号(“)是合法的字符常量C.可以对字符串进行关系运算D.两个连续的双引号(“)是合法的字符串常量23.有以下程序: #include stdio.h main( ) char a=“H“; a=(a=“A“ printf(“%c/n“
9、,a); 程序运行后的输出结果是_。(分数:1.00)A.HB.hC.AD.a24.有以下程序: #include stdio.h int f(int x); main( ) int a,b=0; for(a=0;a3;a+=1) b+=f(a); putchar(“A“+b); int f(int x) return x*x+1; 程序运行后的输出结果是_。(分数:1.00)A.ABEB.BCDC.BDID.BCF25.设有定义: int x23; 则以下关于二维数组 X 的叙述错误的是_。(分数:1.00)A.元素 x0可看做是由 3 个整型元素组成的一维数组B.数组 x 可以看做是由 x
10、0和 x1两个元素组成的一维数组C.可以用 x0=0;的形式为数组所有元素赋初值 0D.x0和 x1是数组名,分别代表一个地址常量26.设 p 是指针变量,语句 p=NULL;等价于_。(分数:1.00)A.P=“0“;B.p=“;C.p=“;D.p=0;27.有以下程序: #include stdio.h main( ) int a=10,20,30,40, *p=a,i; for(i=0;i=3;i+)ai=*p;p+; printf(“%d/n“,a2); 程序运行后的输出结果是_。(分数:1.00)A.10B.20C.30D.4028.有以下程序: #include stdio.h #
11、define N 3 void fun(int aN,int b) int i,j; for(i=0;iN;i+) bi=ai0; for(j=1;jN;j+ +) if (biaij )bi=aij; main( ) int xNN=1,2,3,4,5,6,7,8,9,yN,i; fun(x,y); for(i=0;iN;i+) printf(“%d,“,yi); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.3,5,7B.1,3,5,C.2,4,8,D.3,6,9,29.有以下程序(strcpy 为字符串复制函数,strcat 为字符串连接函数): #incl
12、ude stdio.h #include string.h main( ) char a10=“abc“,b10=“012“,c10=“xyz“; strcpy(a+1,b+2); puts(strcat(a,c+1); 程序运行后的输出结果是_。(分数:1.00)A.a12xyzB.bc2yzC.a2yzD.12yz30.以下选项中,没有编译错误的是_。(分数:1.00)A.char str3=“d“,“e“,“b“,“u“,“g“,“0“;B.char str15=“pass“,str6;str2=str1;C.char name10;name=“china“;D.char str4;st
13、r4=“hello world“;31.有以下程序: #include stdio.h main( ) char *s=“12134“; int k=0,a=0; while(sk+1) k+; if(k%2=0) a=a+(sk-“0“+1); continue; a=a+(sk-“0“); printf(“k=%d a=%d/n“,k,a); 程序运行后的输出结果是_。(分数:1.00)A.k=5 a=15B.k=4 a=12C.k=6 a=11D.k=3 a=1432.有以下程序: #include stdio.h main( ) char a510=“one“,“two“,“three
14、“,“four“,“five“; int i,j; char t; for(i=0;i2;i+) for(j=i+1;j5;j+) if(ai0aj0) t=ai0; ai0=aj0; aj0=t; puts(a1); 程序运行后的输出结果是_。(分数:1.00)A.owoB.fwoC.twoD.fix33.有以下程序: #include stdio.h int a=1,b=2; void fun1(int a,int b) printf(“%d%d“,a,b); void fun2() a=3;b=4; main( ) fun1(5,6);fun2(); printf(“%d%d/n“,a,
15、b); 程序运行后的输出结果是_。(分数:1.00)A.5 6 1 2B.3 4 5 6C.1 2 5 6D.5 6 3 434.有以下程序: #include stdio.h void func(int n) static int num=1; num+=n; printf(“%d“,num); main( ) func(3); func(4); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.4 5B.4 8C.3 5D.3 435.有以下程序: #include stdio.h #include stdlib.h void fun(int*p1,int*p2,
16、int*s) s=(int *)calloc(1,sizeof(int); *s=*p1+*p2; free(s); main( ) int a2=1,2,b2=40,50,*q=a; fun(a,b,q); printf(“%d/n“,*q); 程序运行后的输出结果是_。(分数:1.00)A.42B.41C.1D.036.有以下程序: #include stdio.h struct STUchar Name9; char sex; int score2; ; void f(struct STU a) struct STU b=“Zhao“,“m“,85,90; a1=b; main( ) s
17、truct STU c2=“Qian“,“f“,95,92,“Sun“,“m“,98,99; f(C); printf(“%s,%c,%d,%d,“,c0.name,co.sex,co.score0,c0.score1); printf(“%s,%c,%d,%d/n“,c1.name,c1.sex,c1.score0,c1.score1); 程序运行后的输出结果是_。(分数:1.00)A.Qian,f,95,92,Sun,m,98,99B.Qian,f,95,92,Zhao,m,85,90C.Zhao,m,85,90,Sun,m,98,99D.Zhao,n1,85,90,Qian,f,95,9
18、237.以下叙述中错误的是_。(分数:1.00)A.用 typedef 可以说明一种新的类型名B.typedef 的作用是用一个新的标识符来代表已存在的类型名C.可以用 typedef 说明的新类型名来定义变量D.typedef 说明的新类型名必须使用大写字母,否则会出编译错误38.以下叙述中错误的是_。(分数:1.00)A.只要类型相同,结构体变量之间可以整体赋值B.函数的返回值类型不能是结构体类型,只能是简单类型C.可以通过指针变量来访问结构体变量的任何成员D.函数可以返回指向结构体变量的指针39.若有定义语句: int b=2; 则表达式(b2)/(3 | b)的值是_。(分数:1.00
19、)A.0B.2C.4D.840.有以下程序: #include stdio.h main( ) FILE *fp; int i,a6=1,2,3,4,5,6; fp =fopen(“d2.dat“,“w+“); fbr(i=0;i6;i+) fprintf(fp,“%d/n“,ai); rewind(fp); for (i=0;i6;i+) fscanf(fp,“%d“, fclose(fp); for(i=0;i6;i+) printf(“%d,“,ai); 程序运行后的输出结果是_。(分数:1.00)A.1,2,3,4,5,6,B.6,5,4,3,2,1,C.4,5,6,1,2,3,D.1
20、,2,3,3,2,1,二、程序填空题(总题数:1,分数:18.00)41.下列给定程序中,函数 fun 的功能是:从形参 ss 所指字符串数组中,删除所有串长超过 k 的字符串,函数返回剩余字符串的个数。ss 所指字符串数组中共有 N 个字符串,且串长小于 M。 请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1.C 中,不得增行或删行,也不得更改程序的结构! #include stdio.h #include string.h #define N 5 #define M 10 int fun(char(* ss)M,int k) int i
21、,j=0,len; /* * * * * * * * * *found* * * * * * * * * */ for(i=0;i 1;i+) len=strlen(ssi); /* * * * * * * * * *found* * * * * * * * * */ if(len= 2) /* * * * * * * * * *found* * * * * * * * * */ strcpy(ssj+, 3); return j; main( ) char xNM=“Beijing“,“Shanghai“,“Tianjin“,“Nanjing“,“Wuhan“; int i,f; print
22、f(“/nThe original string/n/n“); for(i=0;iN;i+) puts(xi); printf(“/n“); f=fun(x,7); printf(“The string witch length is less than or equal to 7“/n“); for(i=0;if;i+)puts(xi); printf(“/n“); (分数:18.00)三、程序修改题(总题数:1,分数:18.00)42.下列给定程序中函数 fun 的功能是:逐个比较 p、q 所指两个字符串对应位置上的字符,并把 ASCII 值大或相等的字符依次存放到 c 所指的数组中,形成
23、一个新的字符串。 例如,若主函数中 a 字符串为“aBCDeFgH”,b 字符串为“Abcd”,则 c 中的字符串应为“aBcdeFgH”。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1.C 中,不得增行或删行,也不得更改程序的结构! #include stdio.h #include string.h void fun(char *p,char *q,char*c) /* * * * * * * * * * * *found* * * * * * * * * * * */ int k=1; /* * * * * * * * * * * *found* * *
24、 * * * * * * * * */ while(*p!=*q) if(*p*q)ck=*q; else ck=*p; if(*p)p+; if(*q) q+; k+; main( ) char a10=“aBCDeFgH“,b10=“ABcd“,c80=“/0“; fun(a,b,c); printf(“The string a:“);puts(a); printf(“The string b:“);puts(b); printf(“The result:“);puts(c); (分数:18.00)四、程序设计题(总题数:1,分数:24.00)43.规定输入的字符串中只包含字母和*号。请编
25、写函数 fun,其功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用 C 语言提供的字符串函数。 例如,字符串中的内容为:“* * * *A*BC*DEF*G* * * * * * *“,删除后,字符串中的内容应当是:“* * * *ABCDEFG”。 注意:部分源程序在文件 PROG1.C 中。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 #include stdio.h void fun(char*a) main( ) char 881;void NONO(); printf(“Enter a stri
26、ng:/n“);gets(s); fun(s); printf(“The string after deleted:/n“);puts(s); NONO(); void NONO() /*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE * in, *out; int i;char s81; in=fopen(“in.dat“,“r“); out=fopen(“out.dat“,“w“); for(i=0;i10;i+) fscanf(in,“%s“,s); fun(s); fpfintf(out,“%s/n“,s); fclose(in); fclose(out);
27、 (分数:24.00)_二级 C 语言真题(3)答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中正确的是_。(分数:1.00)A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量 C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关解析:解析 算法的效率与问题的规模和数据的存储结构都有关,故 A 错误。算法的时间复杂度是指执行算法所需要的计算工作量,故 B 正确。由于数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,因此数据的逻辑结构和存储结构不
28、是一一对应的,故 c 错误。算法的时间复杂度和空间复杂度没有直接的联系,故 D 错误。2.下列叙述中正确的是_。(分数:1.00)A.线性表链式存储结构的存储空间一般要少于顺序存储结构B.线性表链式存储结构与顺序存储结构的存储空间都是连续的C.线性表链式存储结构的存储空间可以是连续的,也可以是不连续的 D.以上说法均错误解析:解析 线性表的顺序存储结构具备如下两个基本特征:线性表中的所有元素所占的存储空间是连续的;线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。用一组任意的存储单元来依次存放线性表的节点,这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。
29、因此 C 正确。3.某二叉树共有 12 个节点,其中叶子节点只有 1 个,则该二叉树的深度为(根节点在第 l 层)_。(分数:1.00)A.3B.6C.8D.12 解析:解析 二叉树中,度为 0 的节点数等于度为 2 的节点数加 1,即 n 2 =n 0 -1,叶子节点即度为 0的节点,n 0 =1,则 n 2 =0,总节点数=n 0 +n 1 +n 2 =1+n 1 +0=12,则度为 1 的节点数 n 1 =11,故深度为 12,因此选 D。4.对长度为 n 的线性表作快速排序,在最坏情况下,比较次数为_。(分数:1.00)A.nB.n-1C.n(n-1)D.n(n-1)/2 解析:解析
30、快速排序最坏情况就是每次选的基准数都和其他数做过比较,共需比较(n-1)+(n-2)+1=n(n-1)/2,故选 D。5.结构化程序设计中,下面对 goto 语句使用描述正确的是_。(分数:1.00)A.禁止使用 goto 语句B.使用 goto 语句程序效率高C.应避免滥用 goto 语句 D.以上说法均错误解析:解析 结构化程序设计中,要注意尽量避免 goto 语句的使用,故选 C。6.下面不属于软件测试实施步骤的是_。(分数:1.00)A.集成测试B.回归测试 C.确认测试D.单元测试解析:解析 软件测试主要包括单元测试、集成测试、确认测试和系统测试。7.下面不属于软件需求分析阶段主要工
31、作的是_。(分数:1.00)A.需求变更申请 B.需求分析C.需求评审D.需求获取解析:解析 需求分析阶段的工作可概括为 4 个方面:需求获取;需求分析;编写需求规格说明书;需求审评。8.一般情况下,当对关系 R 和 S 进行自然连接时,要求 R 和 S 含有一个或者多个共有的_。(分数:1.00)A.记录B.行C.属性 D.元组解析:解析 自然连接是一种特殊的等值连接,它满足下面的条件:两关系间有公共域;通过公共域的等值进行连接,因此选 C。9.有三个关系 R、S 和 T 如下: R A B C a 1 2 b 2 1 c 3 1 S A B C d 3 2 c 3 1 T A B C a
32、1 2 b 2 1 则由关系 R 和 S 得到关系 T 的操作是_。(分数:1.00)A.选择B.差 C.交D.并解析:解析 关系 T 中的元素是关系 R 去掉与关系 S 中相同的元组,符合差操作,选项 B 正确。10.有表示公司和职员及工作的三张表,职员可在多家公司兼职。其中公司表 C(公司号,公司名,地址,注册资本,法人代表,员工数),职员表 S(职员号,姓名,性别,年龄,学历),工作表 W(公司号,职员号,工资),则表 W 的键(码)为_。(分数:1.00)A.公司号,职员号 B.职员号,工资C.职员号D.公司号,职员号,工资解析:解析 由于职员可以在多家公司兼职,表 W 的键(码)应为
33、公司关系和职员关系的主码,即公司号和职员号。11.以下叙述中正确的是_。(分数:1.00)A.每个后缀为.C 的 C 语言源程序都可以单独进行编译 B.每个后缀为.C 的 C 语言源程序都应该包含一个 main 函数C.在 C 语言程序中,main 函数必须放在其他函数的最前面D.在 C 语言程序中,只有 main 函数才可单独进行编译解析:解析 一个普通的 C 函数可以单独作为一个 C 的程序文件被包含到其他程序中,每个后缀为.C 的C 语言源程序都可以单独进行编译,所以 B、D 错误。main 函数可以放在程序的开始、中间和最后,所以C 错误。12.C 语言中的标识符分为关键字、预定义标识
34、符和用户标识符,以下叙述正确的是_。(分数:1.00)A.关键字可用做用户标识符,但失去原有含义B.预定义标识符可用做用户标识符,但失去原有含义 C.在标识符中大写字母和小写字母被认为是相同的字符D.用户标识符可以由字母和数字任意顺序组成解析:解析 关键字不可用做 C 语言的标识符,所以 A 错误。在标识符中大写字母与小写字母作为不同字符处理,所以 C 错误。标识符由下画线、字母、数字组成,且必须以下画线和字母开始,所以 D 错误。13.以下选项中合法的常量是_。(分数:1.00)A.9 9 9B.2.7eC.0Xab D.123E 0.2解析:解析 A 选项中含有非法的空格,所以错误。C 语
35、言中十六进制常量以 0x 开头,所以 C 正确。实型常量中 e 的前后必须均有数据,且其后必须为整数,所以 B 和 D 错误。14.C 语言主要是借助以下哪种手段来实现程序模块化的?_。(分数:1.00)A.定义函数 B.定义常量和外部变量C.使用丰富的数据类型D.使用三种基本结构语句解析:解析 C 语言程序的模块化通过函数来体现,所以选择 A。15.以下叙述中错误的是_。(分数:1.00)A.数值型常量有正值和负值的区分B.常量可以用一个符号名来代表C.定义符号常量必须用类型名来设定常量的类型 D.常量是在程序运行过程中值不能被改变的量解析:解析 数值型常量有整型常量和实型常量,不论是整型常
36、量还是实型常量,都有正值和负值之分,所以 A 正确。在 C 语言的预编译处理中,可以用符号名代表一个常量,定义时不必指定常量类型,所以 C错误,B 正确。常量的定义就是常量是在程序运行过程中值不能被改变的量,所以 D 正确。16.若有定义和语句: int a,b; scanf(“%d,%d,“, 以下选项中的输入数据,不能把值 3 赋给变量 a、5 赋给变量 b 的是_。(分数:1.00)A.3,5,4B.3,5C.3,5,D.3,5 解析:解析 scanf()的格式控制串可以使用其他非空白字符,如本题中的逗号,但在输入时必须输入这些字符,以保证匹配。所以在 3 和 5 之间必须输入逗号,不能
37、有其他符号,才能保证 a 和 b 的正确赋值。所以选择 D。17.C 语言中 char 类型数据占字节数为_。(分数:1.00)A.1 B.2C.3D.4解析:解析 每个字符变量被分配一个字节的内存空间。因此 A 选项正确。18.下列关系表达式中,结果为“假”的是_。(分数:1.00)A.3=4B.(34)=1C.(3+4)6D.(3!4)2 解析:解析 B 选项中,关系表达式(34)=1 即 1=1,结果为真;C 选项中,(3+4)6 即 76,结果为真;A 选项中,3=4 结果为真。D 选项中,(3!1=4)2 即 12,结果为假。因此 D 选项正确。19.若以下选项中的变量 a,b,y
38、均已正确定义并赋值,则语法正确的 switch 语句是_。(分数:1.00)A.switch(a*a+b*b) default : break;case 3 : y=a+b; break;case 2 : y=a-b; break; B.switch( a+b )case1 : case3 : y=a+b; break;case0 : case4 : y=a-b;C.switch (a+9)case a : y=a-b;case b : y=a+b;D.switch a * b case 10 : y=a+b;default : y=a-b;解析:解析 switch 语句,其一般形式为: sw
39、itch(表达式) case 常量表达式 1: 语句 1; case 常量表达式 2: 语句 2; case 常量表达式 n: 语句 n; default: 语句 n+1; B、C 选项中,case 后面应该跟常量表达式;D 选项中,switch a*b,有误。因此 A 选项正确。20.有以下程序: #include stdio.h main( ) int a=-2,b=0; while(a+ printf(“%d,%d/n“, a,b); 程序运行后输出的结果是_。(分数:1.00)A.0,2B.0,3C.1,3D.1,2 解析:解析 本题重点考查 while 语句,变量 a 和 b 分别赋
40、初值为-2 和 0,while 语句的语义是:计算表达式的值,当值为真(非 0)时,执行循环体语句。a+即 a 参与运算后,a 的值再自增 1。+b 即 b 自增1 后再参与其他运算。当表达式的值为 0 时,退出循环,最后输出 a 和 b 的值为 1 和 2。因此 D 选项正确。21.设有定义: int x=0, *p; 紧接着的赋值语句正确的是_。(分数:1.00)A.*p=NULL;B.p=NULL; C.p=x;D.*p=x;解析:解析 题目中定义指针变量 p,指针变量的赋值只能赋予地址,决不能赋予任何其他数据,否则将引起错误。不允许把一个数赋予指针变量,被赋值的指针变量前不能再加“*”
41、说明符,因此 B 选项正确。22.下列叙述中正确的是_。(分数:1.00)A.空字符串不占用内存,其内存空间大小是 0B.两个连续的单引号(“)是合法的字符常量C.可以对字符串进行关系运算D.两个连续的双引号(“)是合法的字符串常量 解析:解析 字符串常用量占的内存字节数等于字符串中字节数加 1,因此 A 选项错误。字符常量是用单引号括起来的一个字符,两个连续的单引号表示空字符,空字符不占内存,故其不能称为字符常量,常量是有地址的,因此 B 选项错误。C 语言字符串比较不能直接用关系运算符进行正确比较。可以用字符串比较函数 strcmp 来实现,因此 C 选项是错误的。字符串常量是由一对双引号
42、括起的字符序列,两个连续的双引号(“)是空字符串,但因其占一个字节,故其是字符串常量。因此 D 选项正确。23.有以下程序: #include stdio.h main( ) char a=“H“; a=(a=“A“ printf(“%c/n“,a); 程序运行后的输出结果是_。(分数:1.00)A.HB.h C.AD.a解析:解析 条件运算符构成的选择结构的一般形式为:表达式 1?表达式 2:表达式 3。 其求值规则为:如果表达式 1 的值为真,则以表达式 2 的值作为条件表达式的值,否则以表达式 2 的值作为整个条件表达式的值。该题目中首先给字符变量 a 赋值为“H“。语句“a=(a=“A
43、“”即将大写字母变为小写字母。因此 B 选项正确。24.有以下程序: #include stdio.h int f(int x); main( ) int a,b=0; for(a=0;a3;a+=1) b+=f(a); putchar(“A“+b); int f(int x) return x*x+1; 程序运行后的输出结果是_。(分数:1.00)A.ABEB.BCDC.BDI D.BCF解析:解析 在函数 main( )中,第一次执行 for 循环时,b 的值等于 1,此时输出字母 B;第二次执行for 循环时,b 的值等于 3,此时输出字母 D;第三次执行 for 循环时,b 的值等于
44、8,此时输出字母 I。因此 C 选项正确。25.设有定义: int x23; 则以下关于二维数组 X 的叙述错误的是_。(分数:1.00)A.元素 x0可看做是由 3 个整型元素组成的一维数组B.数组 x 可以看做是由 x0和 x1两个元素组成的一维数组C.可以用 x0=0;的形式为数组所有元素赋初值 0 D.x0和 x1是数组名,分别代表一个地址常量解析:解析 x0可看做是由 3 个整型元素组成的一维数组,不可以用语句“x0=0;”为数组所有元素赋初值 0。因此 C 选项正确。26.设 p 是指针变量,语句 p=NULL;等价于_。(分数:1.00)A.P=“0“;B.p=“;C.p=“;D
45、.p=0; 解析:解析 p=NuLL;等价 p=0;,因此 D 选项正确。27.有以下程序: #include stdio.h main( ) int a=10,20,30,40, *p=a,i; for(i=0;i=3;i+)ai=*p;p+; printf(“%d/n“,a2); 程序运行后的输出结果是_。(分数:1.00)A.10B.20C.30 D.40解析:解析 因为指针变量 p 的初始值指向数组 a,所以执行 for 循环语句后,数组 a 中的元素的值不变。因此 C 选项正确。28.有以下程序: #include stdio.h #define N 3 void fun(int a
46、N,int b) int i,j; for(i=0;iN;i+) bi=ai0; for(j=1;jN;j+ +) if (biaij )bi=aij; main( ) int xNN=1,2,3,4,5,6,7,8,9,yN,i; fun(x,y); for(i=0;iN;i+) printf(“%d,“,yi); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.3,5,7B.1,3,5,C.2,4,8,D.3,6,9, 解析:解析 函数 fun()的作用是求出二维数组 aN中每一行中的最大元素,所以在 main( )函数中执行完 fun(x,y)后,数组 y 中的元素为二维数组 xNN每一行的最大元素。因此 D 选项正确。29.有以下程序(strcpy 为字符串复制函数,strcat 为字符串连接函数): #include stdio.h