1、二级 C语言笔试-439 及答案解析(总分:96.00,做题时间:90 分钟)一、选择题(总题数:40,分数:66.00)1.与十进制数 200等值的十六进制数为_。A) A8 B) A4 C) C8 D) C4(分数:1.00)A.B.C.D.2.算法的有穷性是指( )。A) 算法程序的运行时间是有限的 B) 算法程序所处理的数据量是有限的C) 算法程序的长度是有限的 D) 算法只能被有限的用户使用(分数:2.00)A.B.C.D.3.结构化程序设计主要强调的是A) 程序的规模 B) 程序的效率 C) 程序设计语言的先进性 D) 程序易读性(分数:2.00)A.B.C.D.4.对长度为 n的
2、线性表进行顺序查找,在最坏的情况下需要比较的次数为( )。A) 125 B) n/2C) n D) n+1(分数:1.00)A.B.C.D.5.为了提高软件模块的独立性,模块之间最好是( )。A) 控制耦合 B) 公共耦合 C) 内容耦合 D) 数据耦合(分数:2.00)A.B.C.D.6.在一棵二叉树上,第 5层的结点数最多是( )。 A) 8 B) 9 C) 15 D) 16(分数:2.00)A.B.C.D.7.设变量已正确定义并赋值,以下正确的表达式是_。A) x=y*5=x+z B) int(15.8%5)C) x=y+z+5,+y D) x=25%5.0(分数:1.00)A.B.C.
3、D.8.下列正确的实型常量是( )。A) E3.4 B) -12345 C) 2.2e0.8 D) 4(分数:1.00)A.B.C.D.若 ch为 char型变量,k 为 int型变量(已知字符 a的 ASCII码是 97),则执行下列语句后输出的结果为( )。ch=b; k=10:printf(“%x,%o,“,ch,ch,k);printf(“k=%d/n“,k);A因变量类型与格式描述符的类型不匹配,输出无定值B输出项与格式描述符个数不符,输出为 0值或不定值C62,142,k=%dD62,142,k=%10(分数:3.00)A.B.C.D.A.B.C.D.9.以下叙述中错误的是_。A)
4、 C语言是一种结构化程序设计语言B) 结构化程序由顺序、分支、循环三种基本结构组成C) 使用三种基本结构构成的程序只能解决简单问题D) 结构化程序设计提倡模块化的设计方法(分数:1.00)A.B.C.D.10.下列选项中合法的赋值语句是( )。A) a-b34 B) a34,b34 C) i-1; D) m(int)(x+y);(分数:1.00)A.B.C.D.11.若有下列定义(设 int类型变量占 2个字节):int i=8;则下列语句:printf(“i=%08d“,i);输出的结果是( )。A) i=8, B) i=00000008, C) i=08, D) 8(分数:1.00)A.B
5、.C.D.12.下列程序的输出结果是( )。#includestdio.hmain()int a=3,b=2,c=1;if(aB) if(b0) c=0;else c+;printf(“%d/n“,C) ;A) 0 B) 2C) 1 D) 3(分数:2.00)A.B.C.D.13.在 C语言中,函数返回值的类型最终取决于A) 函数定义时在函数首部所说明的函数类型 B) return 语句中表达式值的类型C) 调用函数时主调函数所传递的实参类型 D) 函数定义时形参的类型(分数:1.00)A.B.C.D.14.有下列程序:#inelude stdio.hmain()int x=8;for(;x0
6、;x-)if(x%3) printf(“%d,“,x-);continue;printf(“%d,“,-x);程序的运行结果是( )。A) 7,4,2 B) 8,7,5,2 C) 9,7,6,4 D) 8,5,4,2(分数:2.00)A.B.C.D.15.现有如下程序段#include “stdio.h“main()int k30=12,324,45,6,768,98,21,34,453,456;int count=0,i=0;while(Li)if(ki%2=0|ki%5=0)count+;i+; printf(“%d,%d/n“,count,i);则程序段的输出结果为A) 7,8 B) 8
7、,8 C) 7,10 D) 8,10(分数:1.00)A.B.C.D.16.有下列函数定义:int fun(double a,double B) return a*b;若下列选项中所用变量都已正确定义并赋值,错误的函数调用是( )。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);(分数:2.00)A.B.C.D.17.有以下程序,其中 k的初值为八进制数#include stdiohmain()intk=011;printf(“%d/n“,k+);程序运行后的输出结果是A) 12 B) 1
8、1 C) 10 D) 9A.B.C.D.18.表达式8-2的值是( )。A) 整数 6 B) 字符 6 C) 表达式不合法 D) 字符 8(分数:2.00)A.B.C.D.19.下列程序中函数 reverse()的功能是将 a所指数组中的内容进行逆置。#includestdio.hvoid reverse(int a,int n)int i,t;for(i=0;in/2,i+)t=ai;ai=an-1-i;an-1-i=t;main()int b10=1,2,3,4,5,6,7,8,9,10;int i,s=0;reverse(b,10);for(i=0;i3;i+)s+=bi;printf(
9、“%d/n“,s);程序运行后的输出结果是( )。A) 27 B) 6 C) 25 D) 30(分数:2.00)A.B.C.D.有下列程序:main()int i,j,x=0;for(i=0,i2;i+)x+:for(j=0;j=3;j+)if(j%2)continue;x+;x+;printf(“x=%d/n“,x);程序执行后的输出结果是( )。Ax=4 Bx=8 Cx=6 Dx=12(分数:2.00)A.B.C.D.A.B.C.D.20.有以下程序main()char a,b,c,d;scanf(“%c,%c,%d,%d“, printf(“*c,%c,%c,%c/n“, a,b,c,d
10、) ;若运行时从键盘上输入:6,5,65,66回车。则输出结果是_。A) 6,5,A,B B) 6,5,65,66 C) 6,5,6,5 D) 6,5,6,6(分数:1.00)A.B.C.D.21.有以下程序void f(int *q)int i=0;for(; i5;i+)(*q)+;main()int a5=1,2,3,4,5,i;f(a);for(i=0;i5;i+)printf(“%d,“,ai);程序运行后的输出结果是_。(A) 2,2,3,4,5,(B) 6,2,3,4,5,(C) 1,2,3,4,5,(D) 2,3,4,5,6,(分数:2.00)A.B.C.D.22.下面程序段的
11、输出结果是( )。char a=“lanuage“,*p;p=a;while(*P! =u) printf(“%c“,*p-32); P+;A) LANGUAGE B) language C) LAN D) langUAGE(分数:1.00)A.B.C.D.23.有以下程序:int f1(int x, int y) return xy? x:y; int f2(int x, int y) return xy? y:x; main()int a=4, b=3, c=5, d=2, e, f, g;e=f2(f1(a, b), f1(c, d); f=f1(f2(a, b) , f2(c, d);
12、g=a+b+c+d-e-f;printf(“% d, %d, %d/n“, e, f, g);程序运行后的输出结果是_。A) 4, 3, 7 B) 3, 4, 7 C) 5, 2, 7 D) 2, 5, 7(分数:2.00)A.B.C.D.24.若有定义语句:int k23,*pk3;,则以下语句中正确的是_。(A) pk=k;(B) pk0=k12;(C) pk=k0;(D) pk1=k;(分数:2.00)A.B.C.D.25.若有以下定义,则对 a数组元素地址的正确引用是( )。int a5,*p=a;A) p+5 B) *a+1 C) *s=*t; *t=k;s+;t-;if(*s)f(
13、s,t):main()char str10=“abcdefg“,*P;P=str+strlen(str)/2+1:f(p,p-2);printf(“%s/n“,str);程序运行后的输出结果是_。A) abcdefg B) gfedcba C) gbcdefa D) abedcfg(分数:2.00)A.B.C.D.28.已知大写字母 A的 ASCII码是 65,小写字母 a的 ASCII码是 97。下列不能将变量 c中的大写字母转换为对应小写字母的语句是( )。A) c=(c-A)%26+a B) c=c+32C) c=c-A+a D) c=(A+C)%26-a(分数:2.00)A.B.C.D
14、.29.若有以下说明和语句:struct stint n;char*ch;struct st a3=5,“abc“7,“def“,9“,ghk“),*p=a;则值为 6的表达式是_。A) p+-n B) p-n+ C) (*p).n+ D) +Pn(分数:2.00)A.B.C.D.30.有以下程序#include stdio.h#include string.hvoid fun(char *s,int n)char *t; int i,j;for(i=0;in-1;+)for(j=i+1;jn;j+)if(strlen(si)strlen(sj) t=si;si;sj;sj=t;main()c
15、har *ss=“bcc“,“bbcc“,“xy“,“aaaacc“,“aabcc“;fun(ss,5); printf(“%s,%s/n“,ss0,ss4);程序的运行结果是A) xy,aaaacc B) aaaacc,xy C) bcc,aabcc D) aabcc,bcc(分数:2.00)A.B.C.D.31.以下程序运行后的输出结果是#includestdio.hint b=2;int fun(int *k)b=*k+b; return(b);main()int a10=1, 2, 3, 4, 5, 6, 7, 8, i;for(i=2; i4; i+)b=fun( printf(“%
16、d“, b);printf(“/n“);A) 10 12 B) 8 10 C) 10 28 D) 10 16(分数:2.00)A.B.C.D.32.以下叙述中错误的是_。A) 可以通过 typedef增加新的类型B) 可以用 typedef将已存在的类型用一个新的名字来代表C) 用 typedef定义新的类型名后,原有类型名仍有效D) 用 typedef可以为各种类型起别名,但不能为变量起别名(分数:2.00)A.B.C.D.33.若 x是 int型变量,且有下面的程序段:for(x=3;x6;x+) printf(x%2)?(“*%d“):(“#%d/n“),x);此程序段的输出结果是( )
17、。A) *3#4*5B) #3*4#5C) #3*4#5D) * 3#4*5(分数:1.00)A.B.C.D.34.以下合法的字符型常量是A) /x13 B) /081 C) 65 D) “/n/(分数:2.00)A.B.C.D.35.下列程序的输出结果是( )。#includestdio.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.36.下列程序的输
18、出结果是( )。#includestdio.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.37.设 x=011050, 则 x=xa=(3*5,a+4); printf(“a=%d/n“,a);(分数:2.00)填空项 1:_44.以下程序将数组 a的 4个元素和数组 b的 6个元素写到名为 lett.dat的二进制文件中,请填空。#include std
19、ioh#include stdlibhmain()FILE *fp;char a5=“1234“,b7=“abcedf“;if(fp=fopen(“U /U“,“wb“)=NULL) exit(0);fwrite(a,sizeof(char),4,fp);fwrite(b,U /U,1,fp);fclose(fp);(分数:2.00)填空项 1:_45.执行程序时的输入为 123456789,则程序的运行结果为_。 #include“stdio.h“ main() int a,b; scanf(“%2d%*2d%1d“,printf(“Enter a number:“); scanf(“%d“
20、,n);printf(“Output: “);dos=n%10; printf(“%d“,s); _;while(n!=0);printf(“/n“);(分数:2.00)填空项 1:_48.有以下程序#includestdiohmain()int a=1,2,3,4,5,6,*k3,i=0;while(i3)ki=void fun(int m)m+=k;k+=m;printf(“m=%d/n k=%d“,m,k+);main()int i=4;fun(i+);printf(“i=%d k=%d/n“,i,k);(分数:2.00)填空项 1:_50.以下程序调用函数 swap将指针 s和 t所指
21、单元(a 和 b)中的内容交换,请填空。 main() int a=10,b=20,*s,*t; s=fun();fun()static int a4=1,2,3,4;int i;for(i=0;i4;i+)ai+=ai;for(i=0;i4;i+)printf(“%d,“,ai);printf(“/n“);(分数:2.00)填空项 1:_52.下列程序的输出结果是_。#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)
22、;printf(“/n“);(分数:2.00)填空项 1:_53.以下程序运行后的输出结果是_。struct NODEint k;struct NODE *link;main()struct NODE m5,*p=m,*q=m+4;int i=0;while(p!=q)p-k=+i; p+;q-k=i+; q-;q-k=i;for(i=0;i5;i+) printf(“%d“,mi.k);printf(“/n“);(分数:2.00)填空项 1:_二级 C语言笔试-439 答案解析(总分:96.00,做题时间:90 分钟)一、选择题(总题数:40,分数:66.00)1.与十进制数 200等值的十
23、六进制数为_。A) A8 B) A4 C) C8 D) C4(分数:1.00)A.B.C. D.解析:解析 十进制数 200转换成二进制数,其结果为 1100 1000,1100 1000 对应了十六进制数 C8。因此答案选 C。2.算法的有穷性是指( )。A) 算法程序的运行时间是有限的 B) 算法程序所处理的数据量是有限的C) 算法程序的长度是有限的 D) 算法只能被有限的用户使用(分数:2.00)A. B.C.D.解析:解析 算法的基本特征主要包括以下四个方面:可行性:针对实际问题而设计的算法,执行后能够得到满意的结果。确定性:算法中的每一个步骤都必须有明确的定义,不允许有模棱两可的解释
24、和多义性。有穷性:算法必需在有限时间内做完,即算法必需能在执行有限个步骤之后终止。拥有足够的情报:要使算法有效必需为算法提供足昭的情报当算法拥有足够的情报时,此算法才最有效的:而当提供的情报不够时,算法可能无效。3.结构化程序设计主要强调的是A) 程序的规模 B) 程序的效率 C) 程序设计语言的先进性 D) 程序易读性(分数:2.00)A.B.C.D. 解析:解析 结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化及限制使用 goto语句,总的来说可使程序结构良好、易读、易理解、易维护。4.对长度为 n的线性表进行顺序查找,在最坏的情况下需要比较的次数为( )。A) 125 B
25、) n/2C) n D) n+1(分数:1.00)A.B.C. D.解析:解析对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏的情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。5.为了提高软件模块的独立性,模块之间最好是( )。A) 控制耦合 B) 公共耦合 C) 内容耦合 D) 数据耦合(分数:2.00)A.B.C.D. 解析:解析 耦合性与内聚性是模块独立性的两个定性标准,是互相关联的。在程序设计中,奇模块间的内聚性越强,则耦合性越
26、弱。一般较优秀的软件设计,应尽量做到高内聚、低耦台,有利于提高模块的独立性。6.在一棵二叉树上,第 5层的结点数最多是( )。 A) 8 B) 9 C) 15 D) 16(分数:2.00)A.B.C.D. 解析:解析 根据二叉树的性质:二叉树第 i(i1)层上至多有 2i-1个结点。得到第 5层的结点数最多是 16个。7.设变量已正确定义并赋值,以下正确的表达式是_。A) x=y*5=x+z B) int(15.8%5)C) x=y+z+5,+y D) x=25%5.0(分数:1.00)A.B.C. D.解析:解析 赋值运算符的左边必须是一个代表某一存储单元的变量名,而 A选项中的“y*5=x
27、+z”部分是非法赋值。求余运算符的对象只能是整型,故选项 B和选项 D是错误的。选项 C为逗号表达式。8.下列正确的实型常量是( )。A) E3.4 B) -12345 C) 2.2e0.8 D) 4(分数:1.00)A.B. C.D.解析:解析 实型常量有两种书写形式。小数形式,它由符号、整数部分、小数点及小数部分组成:指数形式,由十进制小数形式加上指数部分组成,其形式为:十进制小数 e指数或十进制小数 E指数。注:e 或 E后面的指数必须是整数,并且在 e或 E的前面必须有数字。本题中,选项 A)中 E的前面没有数字,因此错误。选项 C)中 0.8不是整数,因此错误。选项 D)中 4是整型
28、常量而不是实型常量。若 ch为 char型变量,k 为 int型变量(已知字符 a的 ASCII码是 97),则执行下列语句后输出的结果为( )。ch=b; k=10:printf(“%x,%o,“,ch,ch,k);printf(“k=%d/n“,k);A因变量类型与格式描述符的类型不匹配,输出无定值B输出项与格式描述符个数不符,输出为 0值或不定值C62,142,k=%dD62,142,k=%10(分数:3.00)A.B.C. D.解析:A.B.C. D.解析:解析 第 1个 printf函数,格式说明的个数是 2,而输出项的个数是 3,所以对于多余的输出项k不予输出;第 2个 print
29、f函数,有两个%说明,第 1个%后面的字符要原样输出。本题考查 printf函数的格式。“%x”和“%o”分别表示以十六进制和八进制无符号型输出整型数据(不带前导 ox或 0);printf函数中格式说明符之前插入的任何字符都原样输出;格式说明与输出项的个数也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。9.以下叙述中错误的是_。A) C语言是一种结构化程序设计语言B) 结构化程序由顺序、分支、循环三种基本结构组成C) 使用三种基本结构构成的程序只能解决简单问题D) 结构化程序设计提倡模块化的设计方法(分数:1.00)A.B.C. D.解析:解析 结构化程序由三种基本
30、结构组成:顺序结构、循环结构、选择结构,已经证明,由三种基本结构组成的算法结构可以解决任何复杂问题。10.下列选项中合法的赋值语句是( )。A) a-b34 B) a34,b34 C) i-1; D) m(int)(x+y);(分数:1.00)A.B.C.D. 解析:解析 选项 A是一个合法的赋值表达式,但结尾没加分号,所以它不是一个赋值语句:选项 B是一个逗号表达式,也因为结尾没有加分号而不是合法的赋值语句;选项 C是一个算术表达式,虽然有分号,但这个表达式没有赋值操作,因此,也不是一条赋值语句。11.若有下列定义(设 int类型变量占 2个字节):int i=8;则下列语句:printf(
31、“i=%08d“,i);输出的结果是( )。A) i=8, B) i=00000008, C) i=08, D) 8(分数:1.00)A.B. C.D.解析:解析 本题考查 printf函数的格式。“%08”格式符中的“0”表示在指定数据输出宽度的同时,在数据前面的多余空格处加“0”“8”表示指定数据的输出宽度为 8位。12.下列程序的输出结果是( )。#includestdio.hmain()int a=3,b=2,c=1;if(aB) if(b0) c=0;else c+;printf(“%d/n“,C) ;A) 0 B) 2C) 1 D) 3(分数:2.00)A.B.C. D.解析:解析
32、 本题考查 if语句第一个 if语句,先判断条件,发现 ab 不成立,不再执行下列的语句,直接执行最后的 printf输出语句,然后结束程序,整个过程 c的值没有发生变化。13.在 C语言中,函数返回值的类型最终取决于A) 函数定义时在函数首部所说明的函数类型 B) return 语句中表达式值的类型C) 调用函数时主调函数所传递的实参类型 D) 函数定义时形参的类型(分数:1.00)A. B.C.D.解析:解析 在 C语言中,应当在定义函数时指定函数值的类型,凡不加类型说明的函数,一律按整型处理。在定义函数时,对函数值说明的类型一般应该和 return语句中的表达式类型一致。如果函数值的类型
33、和 return语句中的表达式类型不一致,则以函数类型为主,即函数类型决定返回值的类型。14.有下列程序:#inelude stdio.hmain()int x=8;for(;x0;x-)if(x%3) printf(“%d,“,x-);continue;printf(“%d,“,-x);程序的运行结果是( )。A) 7,4,2 B) 8,7,5,2 C) 9,7,6,4 D) 8,5,4,2(分数:2.00)A.B.C.D. 解析:解析 “x-”表示先执行程序,再令 x的值减 1;而“-x”表示令 x的值减 1,再执行程序。x=8时,x%2 为非 0值,执行语句printtr(“%d,“,
34、x-); continue;),输出“8,”,此时经过 x-,x 的值变为 7,跳出此次循环;执行 x-,x=6,x%3=0,后面语句不执行,执行语句 print(“%d,“,-x);,输出“5,”:执行 for语句中的 x-,得到 x=5,输出“5,”判断 x%3,输出“4,”,执行两次 x-后,x=2,执行printf(“d,“,x-);continue;后,输出“2,”;然后执行两次 x-后,x=0,不符合“x0”,循环全部结束。15.现有如下程序段#include “stdio.h“main()int k30=12,324,45,6,768,98,21,34,453,456;int c
35、ount=0,i=0;while(Li)if(ki%2=0|ki%5=0)count+;i+; printf(“%d,%d/n“,count,i);则程序段的输出结果为A) 7,8 B) 8,8 C) 7,10 D) 8,10(分数:1.00)A.B.C.D. 解析:解析 在 C语言中,定义一维数组的语句一般形式如下:类型名 数组名常量表达式;一维数组的引用形式为:数组名下标表达式。count 表示能被 2整除或被 5整除的个数,i 则计算有多少个数组元素。16.有下列函数定义:int fun(double a,double B) return a*b;若下列选项中所用变量都已正确定义并赋值,
36、错误的函数调用是( )。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);(分数:2.00)A.B.C. D.解析:解析 本题考查函数调用时的参数传递。C 项中第一个参数的表达式不正确,因此不能得到正确的结果。17.有以下程序,其中 k的初值为八进制数#include stdiohmain()intk=011;printf(“%d/n“,k+);程序运行后的输出结果是A) 12 B) 11 C) 10 D) 9A.B.C.D. 解析:解析 011 转换成十进制为 9,并且 k+表示先使用 k
37、的值,再使 k的值加 1,所以输出值为 9。18.表达式8-2的值是( )。A) 整数 6 B) 字符 6 C) 表达式不合法 D) 字符 8(分数:2.00)A. B.C.D.解析:解析 在 C语言中,虽然字符都是变为其对应的 ASCII 码值来参与算术运算的,但字符间的相对位置关系还是不变的,字符 8和字符 2的 ASCII码值相差仍是 6。19.下列程序中函数 reverse()的功能是将 a所指数组中的内容进行逆置。#includestdio.hvoid reverse(int a,int n)int i,t;for(i=0;in/2,i+)t=ai;ai=an-1-i;an-1-i=
38、t;main()int b10=1,2,3,4,5,6,7,8,9,10;int i,s=0;reverse(b,10);for(i=0;i3;i+)s+=bi;printf(“%d/n“,s);程序运行后的输出结果是( )。A) 27 B) 6 C) 25 D) 30(分数:2.00)A. B.C.D.解析:解析 本题考查函数调用时的参数传递。函数 reverse将数组 b进行了逆置,此时的 b10=10,9,8,7,6,5,4,3,2,1,后面 for语句的功能是将 b中的前 3个数累加,将结果放在 s中,最后将 s输出,结果 s=10+9+8=27。有下列程序:main()int i,j
39、,x=0;for(i=0,i2;i+)x+:for(j=0;j=3;j+)if(j%2)continue;x+;x+;printf(“x=%d/n“,x);程序执行后的输出结果是( )。Ax=4 Bx=8 Cx=6 Dx=12(分数:2.00)A.B. C.D.解析:解析 在第 1次外层 for循环中,首先 x+得到 x=1。进入到内层 for循环,只有循环 j的值为奇数时,变量 x的值才自加 1,所以在内层 for循环执行过程中,变量 x的值自加两次,当退出内层 for循环时,x=3,然后执行 x+,得到 x=4。在进入执行第 2次外层 for循环中,首先 x+得到 x=5。进入到内层 fo
40、r循环,只有循环变量 j的值为奇数时,变量 x的值才自加 1,所以在内层 for循环执行过程中,变量 x的值自加 1两次,当退出内层 for循环时,x=7,然后执行 x+,得到 x=8,所以打印输出变量 x的值为 8。A. B.C.D.解析:解析 C 语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。大写字母和小写字母被认为是两个不同的字符,用户在定义标识符时应尽量做到“见名知意”,且不允许使用关键字作标识符。20.有以下程序main()char a,b,c,d;scanf(“%c,%c,%d,%d“, printf(“*c,%c,%c,%c/n“, a,b
41、,c,d) ;若运行时从键盘上输入:6,5,65,66回车。则输出结果是_。A) 6,5,A,B B) 6,5,65,66 C) 6,5,6,5 D) 6,5,6,6(分数:1.00)A. B.C.D.解析:解析 在接收输入的时候,程序要求前两个输入为字符,后两个为整数,而输出的时候都是要求以字符的形式输出,此时应该进行 ASCII码的转换,c 和 d的输出应该就是 A和 B。21.有以下程序void f(int *q)int i=0;for(; i5;i+)(*q)+;main()int a5=1,2,3,4,5,i;f(a);for(i=0;i5;i+)printf(“%d,“,ai);程
42、序运行后的输出结果是_。(A) 2,2,3,4,5,(B) 6,2,3,4,5,(C) 1,2,3,4,5,(D) 2,3,4,5,6,(分数:2.00)A.B. C.D.解析:22.下面程序段的输出结果是( )。char a=“lanuage“,*p;p=a;while(*P! =u) printf(“%c“,*p-32); P+;A) LANGUAGE B) language C) LAN D) langUAGE(分数:1.00)A.B.C. D.解析:解析 本段程序的作用是输出字符串“lanuage“中字母 u之前的字符,并将其转化为大写字母。23.有以下程序:int f1(int x,
43、 int y) return xy? x:y; int f2(int x, int y) return xy? y:x; main()int a=4, b=3, c=5, d=2, e, f, g;e=f2(f1(a, b), f1(c, d); f=f1(f2(a, b) , f2(c, d);g=a+b+c+d-e-f;printf(“% d, %d, %d/n“, e, f, g);程序运行后的输出结果是_。A) 4, 3, 7 B) 3, 4, 7 C) 5, 2, 7 D) 2, 5, 7(分数:2.00)A. B.C.D.解析:解析 函数 f1是返回 x、y 中较大的一个,f2 是
44、返回 x、y 中较小的一个。因此 e=4,f=3,g=7。24.若有定义语句:int k23,*pk3;,则以下语句中正确的是_。(A) pk=k;(B) pk0=k12;(C) pk=k0;(D) pk1=k;(分数:2.00)A.B. C.D.解析:25.若有以下定义,则对 a数组元素地址的正确引用是( )。int a5,*p=a;A) p+5 B) *a+1 C) *s=*t; *t=k;s+;t-;if(*s)f(s,t):main()char str10=“abcdefg“,*P;P=str+strlen(str)/2+1:f(p,p-2);printf(“%s/n“,str);程序
45、运行后的输出结果是_。A) abcdefg B) gfedcba C) gbcdefa D) abedcfg(分数:2.00)A.B. C.D.解析:解析 本程序的作用是将字符串 str倒序。语句“p=str+strlen(str)/2+1;”用于将指针变量 p指向 e字符所在的储存单元,p-2 指向了 c字符所在的存储单元,在函数 f中将这两个存储单元的内容交换,并使得 f函数中指向 e字符的指针变量 s加 1。指向 c字符的指针变量 t减 1,然后继续将 s和 t指向的存储单元的内容进行交换,直到 s指向的存储单元的内容为空为止。28.已知大写字母 A的 ASCII码是 65,小写字母 a
46、的 ASCII码是 97。下列不能将变量 c中的大写字母转换为对应小写字母的语句是( )。A) c=(c-A)%26+a B) c=c+32C) c=c-A+a D) c=(A+C)%26-a(分数:2.00)A.B.C.D. 解析:解析 由题意可知,小写字符 a和大写字符 A的 ASCII代码相差为 32,所以选项 C)能将大写字符c的 ASCII代码转换为小写字符 c的 ASCII代码:选项 A)和 C)左侧的表达式都是大写字符 c与大写字符A的差与a的 ASCII代码的和就是小写字符 c的 ASCII代码。而选项 D)中应该是加上a,而不是减去a。29.若有以下说明和语句:struct
47、stint n;char*ch;struct st a3=5,“abc“7,“def“,9“,ghk“),*p=a;则值为 6的表达式是_。A) p+-n B) p-n+ C) (*p).n+ D) +Pn(分数:2.00)A.B.C.D. 解析:评析 根据结构变量的存储特点,p+l 意味着增加地址值为结构体数组 a的个元素所占的字节数,即 P使 p由 a0指向 a1起始地址。本题+p-n 得到 p指向的结构体变量中成员 n的值使之加1。因为 p指向数组 a起始地址,p-n 的值为 5,再执行自加 l运行,结果为 6。30.有以下程序#include stdio.h#include string.hvoid fun(char *s,int n)char *t; int i,j;for(i=0;in-1;+)for(j=i+1;jn;j+)if(strlen(si