1、二级 C 语言分类模拟题 513 及答案解析(总分:52.50,做题时间:90 分钟)一、选择题(总题数:35,分数:52.50)1.以下程序段的输出结果是 char s=“/141/141abc/t“; printf (“%d/n“,strlen(s);(分数:1.00)A.9B.12C.13D.142.结构化程序所要求的基本结构不包括_。(分数:2.00)A.顺序结构B.GOTO 跳转C.选择(分支)结构D.重复(循环)结构3.下面程序的运行结果是_。 for(i=3;i7;i+)printf(i%2)?(“*%d/n“):(“#%d/n“),i);(分数:2.50)A.*3#4*5*6B
2、.#3*4#5*6C.#3*4#5#6D.*3#4*5#64.有以下程序 #includestdio.h 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); 程序执行后的输出结果是_。(分数:2.00)A.x=8B.x=4C.x=6D.x=125.设某棵树的度为 3,其中度为 3,1,0 的节点个数分别为 3,4,15。则该树中总节点数为_。(分数:1.00)A.22B.30C.35D.不可能有这样的树6.有以下程序: #includestdio.
3、h main() char c25=“6938“,“8254“,*p2; int i,j,s=0; for(i=0;i2;i+)pi=ci; for(i=0;i2;i+) for(j=0;pij0;j+=2)s=10*s+pij-“0“; printf(“%d/n“,s); 程序运行后的输出结果是_。(分数:1.00)A.6938B.9824C.4528D.63857.在一个 C 程序中( )。(分数:1.00)A.main 函数必须出现在所有函数之前B.main 函数可以在任何地方出现C.main 函数必须出现在所有函数之后D.main 函数必须出现在固定位置8.有以下程序 #include
4、stdio.h main() int i=1; i=ii; printf(“%d/n“,i); 程序运行后的输出结果是_。(分数:1.00)A.0B.-1C.1D.79.阅读以下程序 #include stdio.h main() int case; float printF; printf(“请输入 2 个数:“); scanf(“%d%f“, printf(“%d%f/n“,case,printF); 该程序在编译时产生错误,其出错原因是_。(分数:1.00)A.定义语句出错,case 是关键字,不能用作用户自定义标识符B.定义语句出错,pfintF 不能用作用户自定义标识符C.定义语句无
5、错,scanf 不能作为输入函数使用D.定义语句无错,printf 不能输出 case 的值10.有以下程序 main( ) int i,s=0; for(i=1;il0;i+=2) s+=i+1 printf(“%d/n“,s); 程序执行后的输出结果是 _。(分数:2.00)A.自然数 19 的累加和B.自然数 110 的累加和C.自然数 19 中奇数之和D.自然数 110 中偶数之和11.有三个关系 R、S 和 T 如下: RA B C a l 2 b 2 1 c 3 1 SA D c 4 TA B C D c 3 1 4 则由关系 R 和 S 得到关系 T 的操作是_。(分数:1.00
6、)A.自然连接B交C.投影D并12.程序段:int x=12; double y=3.141593; printf(“%d%8.6f“, x, y);的输出结果是_。(分数:1.00)A.123.141593B.123.141593C.12,3.141593D.123.141593013.有以下程序 #includestdio.h main() int y=10; while(y-); printf(“y=%d/n“,y); 程序执行后的输出结果是_。(分数:1.00)A.y=-1B.y=0C.y=1D.while 构成无限循环14.有以下程序 #includestdio.h int fun(
7、) static int x=1; x*=2;return x; main() int i,s=1; for(i=1;i=2;i+)s=fun(); printf(“%d/n“,s); 程序运行后的输出结果是_。(分数:1.00)A.0B.1C.4D.815.下列关于 C 语言文件的叙述中正确的是_。(分数:1.00)A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件D.文件由字符序列组成,其类型只能是文本文件16.下列叙述中正确的是_。(分数:1.00)A.算法的空间复杂度与算法所处理的
8、数据存储空间有关B.算法的空间复杂度是指算法程序控制结构的复杂程度C.算法的空间复杂度是指算法程序中指令的条数D.压缩数据存储空间不会降低算法的空间复杂度17.有以下程序: void ss(char *s,char t) while(*s) if(*s=t)*s=t-“a“+“A“; s+; main() char strl100=“abcddfefdbd“,c=“d“; ss(strl,c); printf(“%s/n“,strl); 程序运行后的输出结果是_。(分数:2.00)A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd18.以下
9、叙述中正确的是_。(分数:2.50)A.关系运算符两边的运算对象可以是 C 语言中任意合法的表达式B.在 C 语言中,逻辑真值和假值分别对应 1 和 0C.对于浮点变量 x 和 y,表达式:x=y 是非法的,会出编译错误D.分支结构是根据算术表达式的结果来判断流程走向的19.下列定义变量的语句中错误的是_。(分数:2.00)A.int_int;B.double int_;C.char For;D.float US $;20.有以下程序 #includestdio.h #includestring.h typedef structchar name9;char sex;float score2;
10、)STU; STU f(STU a) STU b=“Zhao“,“in“,85.0,90.0);int i; strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i2;i+) a.scorei=b.scorei; return a; main() STU c=“Qian“,“f“,95.0,92.0,d; d=f(c);printf(“%s,%c,%2.0f,%2.0f“,d.name,d.sex,d.score0,d.score1); 程序的运行结果是 _ 。(分数:1.00)A.qian,f,95,92B.qian,m,85,90C.ZhaO,m,85,
11、90D.Zhao,f,95,9221.有如下程序: #include stdio.h main() char*p,old_str10=“wind“; int password; scanf(“%d“, p = old_str; while(*p) printf(“%c“,*p + password); p+; printf(“/n“); 程序运行时,从键盘输入 2回车,输出结果是_。(分数:1.00)A.ykpfB.windC.xjoeD.222222.以下能正确定义一维数组的选项是_。(分数:2.50)A.int a5=0, 1, 2. 3, 4, 5;B.char a=0, 1, 2. 3
12、, 4, 5;C.char a=“A“, “B“, “C“;D.int a5=“0123“;23.C 语言中运算对象必须是整型运算符的是(分数:1.00)A.%=B./C.=D.=24.以下选项中叙述正确的是_。(分数:1.00)A.函数体必须由开始B.C 程序必须由 main 语句开始C.C 程序中的注释可以嵌套D.C 程序中的注释必须在一行完成25.有以下程序: #includestdio.h #includestring.h main() char a10=“abcd“; printf(“%d, %d/n“, strlen(a), sizeof(a); 程序运行后的输出结果是(分数:2.
13、00)A.7, 4B.4, 10C.8, 8D.10, 1026.设 x,y,z 均为实型变量,代数式 (分数:2.00)A.x/y*zB.x%y%zC.x/y/zD.x*z/y27.下列不合法的用户标识符是_。(分数:2.50)A.j2_KEYB.DoubleC.4dD._8_28.已定义以下函数 int fun(int*p)return*p; fun 函数的返回值是_。(分数:2.00)A.一个整数B.不确定的值C.形参 p 中存放的值D.形参 p 的地址值29.以下程序的输出结果是_。 #includestdio.h main() int a=1,b=3; if(+a0) else pr
14、intf(“%d,%d/n“,b,a); (分数:2.50)A.2,2B.1,3C.3,2D.3,130.以下选项中不能用作 C 程序合法常量的是_。(分数:2.00)A.1,234B./123C.123D.“/x7G“31.软件生命周期是指_。(分数:1.00)A.软件产品从提出、实现、使用、维护到停止使用、退役的过程B.软件的需求分析、设计与实现C.软件的开发与管理D.软件的实现和维护32.下面属于软件设计建模工具的是_。(分数:1.00)A.DFD 图(数据流程图)B.程序流程图(PFD 图)C.用例图(USE_CASE 图)D.网络工程图33.有如下程序: #include stdio
15、.h int*sum(int data) static int init = 0; init += data; return main() int i,*p; for(i=1; i=4; i+) sum(i); p = sum(0); printf(“%d/n“,*p); 程序运行后的输出结果是_。(分数:1.00)A.15B.0C.1D.1034.有以下程序 #includestdio.h #includestdlib.h void fun(int *p1, int *p2, int *s) s=(int *)malloc(sizeof(int); *s=*p1+*(p2+); main()
16、 int a2=1, 2, b2=10, 20, *s=a; fun(a, b, s); printf(“%d/n“, *s); 程序运行后的输出结果是_。(分数:2.00)A.1B.10C.11D.235.设有定义:double x=2.12;,以下不能完整输出变量 x 值的语句是_。(分数:1.00)A.printf(“x=%5.0f/n“,x);B.printf(“x=%f/n“,x);C.printf(“x=%lf/n“,x);D.printf(“x=%0.5f/n“,x);二级 C 语言分类模拟题 513 答案解析(总分:52.50,做题时间:90 分钟)一、选择题(总题数:35,分
17、数:52.50)1.以下程序段的输出结果是 char s=“/141/141abc/t“; printf (“%d/n“,strlen(s);(分数:1.00)A.9 B.12C.13D.14解析:解析 本题考核的知识点是字符串的长度。字符数组中可以存放字符串,但字符数组的长度并不是字符串的长度,字符串的长度是指字符数组中存放的有效字符个数,即,“/0“之前的字符数。 字符数组 s 中依次存放的字符是: “/“1“4“1“141“a“b“c“/t“和最后一个字符串结束标记 “/0“,故字符串的长度是 9。所以,4 个选项中 A 为所选。2.结构化程序所要求的基本结构不包括_。(分数:2.00)
18、A.顺序结构B.GOTO 跳转 C.选择(分支)结构D.重复(循环)结构解析:解析 1966 年 Boehm 和 Jacopini 证明了程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式的结构化程序设计方法,因此本题答案为 B。3.下面程序的运行结果是_。 for(i=3;i7;i+)printf(i%2)?(“*%d/n“):(“#%d/n“),i);(分数:2.50)A.*3#4*5*6B.#3*4#5*6C.#3*4#5#6D.*3#4*5#6 解析:解析 本题考查 printf 函数的输出格式和条件表达式“?:”的使用。printf 函数输出时“*%
19、d/n”和“#%d/n”中的“#”和“*”都是直接输出。条件表达式的基本格式为:“a?b:c”。它的运算规则为:当 a 为非 0 时,整个表达式的值取 b 的值,当 a 为 0 时,整个表达式取 c 的值。4.有以下程序 #includestdio.h 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); 程序执行后的输出结果是_。(分数:2.00)A.x=8 B.x=4C.x=6D.x=12解析:解析 本题考查的是 for 循环的嵌套。外循环的循环
20、变量 i 从 0 递增到 1 会循环 2 次,内循环的循环变量 j 从 0 递增到 3 会循环 4 次。但是内循环中有一条 if 语句,每当 j%2 为真,即 j 为奇数时会跳过下面的 x+;语句,所以 4 次内循环只有 2 次执行到 x+;语句,再加上外循环中包含的 2 条 x+;语句,所以每次外循环会使 x 自增 4 次,2 次外循环下来 x 的值为 8。故应该选择 A。5.设某棵树的度为 3,其中度为 3,1,0 的节点个数分别为 3,4,15。则该树中总节点数为_。(分数:1.00)A.22B.30 C.35D.不可能有这样的树解析:解析 在树结构中,一个节点所拥有的后件个数称为该节点
21、的度,所有节点中最大的度称为树的度,树中的节点数即为树中所有节点的度数之和再加 1。假设本题中度为 2 的节点数为 n,总节点数为m,m=33+14+n2+1,叶子节点数 15=m-(3+4+n),得 n=8,则 m=9+4+82+1=30。故答案为 B 选项。6.有以下程序: #includestdio.h main() char c25=“6938“,“8254“,*p2; int i,j,s=0; for(i=0;i2;i+)pi=ci; for(i=0;i2;i+) for(j=0;pij0;j+=2)s=10*s+pij-“0“; printf(“%d/n“,s); 程序运行后的输出
22、结果是_。(分数:1.00)A.6938B.9824C.4528D.6385 解析:解析 本题中首先是将二维字符数组 c 赋值指针数组 p,然后遍历 p 找到两个字符串中的偶数位置的字符并组成一个数值输出,根据代码执行即可得到结果为 6385。7.在一个 C 程序中( )。(分数:1.00)A.main 函数必须出现在所有函数之前B.main 函数可以在任何地方出现 C.main 函数必须出现在所有函数之后D.main 函数必须出现在固定位置解析:解析 一个完整的 C 语言程序有且仅有一个主函数(main()函数)。程序总从 main()函数的第一条语句开始执行,到 main()函数的最后一条
23、语句结束,其他函数都是在执行 main()函数时,通过函数调用或嵌套调用而得以执行的。C 语言规定,main()函数在程序中的位置是任意的,故选项 A、选项 C 和选项D 均不正确。所以,B 选项为所选。8.有以下程序 #includestdio.h main() int i=1; i=ii; printf(“%d/n“,i); 程序运行后的输出结果是_。(分数:1.00)A.0 B.-1C.1D.7解析:解析 是按位异或,11 结果为 0,答案选择 A。9.阅读以下程序 #include stdio.h main() int case; float printF; printf(“请输入 2
24、 个数:“); scanf(“%d%f“, printf(“%d%f/n“,case,printF); 该程序在编译时产生错误,其出错原因是_。(分数:1.00)A.定义语句出错,case 是关键字,不能用作用户自定义标识符 B.定义语句出错,pfintF 不能用作用户自定义标识符C.定义语句无错,scanf 不能作为输入函数使用D.定义语句无错,printf 不能输出 case 的值解析:解析 用户自定义标识符不能使用关键字,case 是关键字之一,所以选择 A。10.有以下程序 main( ) int i,s=0; for(i=1;il0;i+=2) s+=i+1 printf(“%d/n
25、“,s); 程序执行后的输出结果是 _。(分数:2.00)A.自然数 19 的累加和B.自然数 110 的累加和C.自然数 19 中奇数之和D.自然数 110 中偶数之和 解析:解析 本题中 s=(1+1)+(3+1)+(5+1)+(7+1)+(9+1)=2+4+6=8+10。11.有三个关系 R、S 和 T 如下: RA B C a l 2 b 2 1 c 3 1 SA D c 4 TA B C D c 3 1 4 则由关系 R 和 S 得到关系 T 的操作是_。(分数:1.00)A.自然连接 B交C.投影D并解析:解析 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同
26、的属性组,并且在结果中把重复的属性列去掉,所以根据 T 中元素可以判断 R 和 S 做的是自然连接操作。12.程序段:int x=12; double y=3.141593; printf(“%d%8.6f“, x, y);的输出结果是_。(分数:1.00)A.123.141593 B.123.141593C.12,3.141593D.123.1415930解析:解析 本题考查 printf 函数的输出格式控制符,%m.nf 表示指定输出的实型数据的宽度为 m(包含小数点),并保留 n 位小数。但输出数据的小数位大于 n 时,截去右边多余的小数,并对截去部分的第一位小数做四舍五入处理;当输出数
27、据的小数位小于 n 时,在小数位的最右边补 0,使输出数据部分宽度为n。若给出的总宽度 m 小于 n 加上整数位数和小数点,则自动突破 m 的限制;反之,数字右对齐,左边补空格。本题中 3.141593 数值长度为 8,小数位数为 6,因此左端没有空格,故正确答案为 A。13.有以下程序 #includestdio.h main() int y=10; while(y-); printf(“y=%d/n“,y); 程序执行后的输出结果是_。(分数:1.00)A.y=-1 B.y=0C.y=1D.while 构成无限循环解析:解析 当 y 为 0 时,y-表达式为 0,条件为假,循环结束,执行判
28、断条件后 y 为-1,所以选择A。14.有以下程序 #includestdio.h int fun() static int x=1; x*=2;return x; main() int i,s=1; for(i=1;i=2;i+)s=fun(); printf(“%d/n“,s); 程序运行后的输出结果是_。(分数:1.00)A.0B.1C.4 D.8解析:解析 第一次循环返回 2,第二次循环返回 4,所以输出 4,答案选择 C。15.下列关于 C 语言文件的叙述中正确的是_。(分数:1.00)A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文
29、本文件C.文件由数据序列组成,可以构成二进制文件或文本文件 D.文件由字符序列组成,其类型只能是文本文件解析:解析 本题考查文件的概念,文件是由数据序列组成,可以构成二进制文件或文本文件,所以答案为 C 选项。16.下列叙述中正确的是_。(分数:1.00)A.算法的空间复杂度与算法所处理的数据存储空间有关 B.算法的空间复杂度是指算法程序控制结构的复杂程度C.算法的空间复杂度是指算法程序中指令的条数D.压缩数据存储空间不会降低算法的空间复杂度解析:解析 算法的时间复杂度是指执行这个算法所需要的内存空间,包括 3 个部分:输入数据所占的存储空间;程序本身所占的存储空间;算法执行过程中所需要的额外
30、空间。为了降低算法的空间复杂度,主要应减少输入数据所占的存储空间以及额外空间,通常采用压缩存储技术。故 A 选项正确。17.有以下程序: void ss(char *s,char t) while(*s) if(*s=t)*s=t-“a“+“A“; s+; main() char strl100=“abcddfefdbd“,c=“d“; ss(strl,c); printf(“%s/n“,strl); 程序运行后的输出结果是_。(分数:2.00)A.ABCDDEFEDBDB.abcDDfefDbD C.abcAAfefAbAD.Abcddfefdbd解析:18.以下叙述中正确的是_。(分数:2
31、.50)A.关系运算符两边的运算对象可以是 C 语言中任意合法的表达式 B.在 C 语言中,逻辑真值和假值分别对应 1 和 0C.对于浮点变量 x 和 y,表达式:x=y 是非法的,会出编译错误D.分支结构是根据算术表达式的结果来判断流程走向的解析:解析 逻辑真值和假值分别对应非零和零;对于浮点变量 x 和 y,表达式“x=y”是合法的;分支结构是根据表达式的真假来判断流程走向的。所以选择 A。19.下列定义变量的语句中错误的是_。(分数:2.00)A.int_int;B.double int_;C.char For;D.float US $; 解析:解析 C 语言规定,变量命名必须符合标识符
32、的命名规则。D 选项中包含了非法字符“$”,所以错误。标识符由字母、数字或下划线组成,且第一个字符必须是大小写英文字母或者下划线,而不能是数字。大写字符与小写字符被认为是两个不同的字符,所以 For 不是关键字 for。20.有以下程序 #includestdio.h #includestring.h typedef structchar name9;char sex;float score2;)STU; STU f(STU a) STU b=“Zhao“,“in“,85.0,90.0);int i; strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i2
33、;i+) a.scorei=b.scorei; return a; main() STU c=“Qian“,“f“,95.0,92.0,d; d=f(c);printf(“%s,%c,%2.0f,%2.0f“,d.name,d.sex,d.score0,d.score1); 程序的运行结果是 _ 。(分数:1.00)A.qian,f,95,92B.qian,m,85,90C.ZhaO,m,85,90 D.Zhao,f,95,92解析:解析 f()函数的功能是对形参 a 的各个成员用结构体变量 b 的各个成员进行赋值后,返回变量a。21.有如下程序: #include stdio.h main(
34、) char*p,old_str10=“wind“; int password; scanf(“%d“, p = old_str; while(*p) printf(“%c“,*p + password); p+; printf(“/n“); 程序运行时,从键盘输入 2回车,输出结果是_。(分数:1.00)A.ykpf B.windC.xjoeD.2222解析:解析 程序执行过程为:定义字符数组 str 并且初始化为:“wind”,定义 password 并通过scanf 函数从键盘为其赋值 2。定义指针 p 并使其指向字符串。通过 while 循环,将字符数组中每一个字符的 ASCII 码加
35、 2,并且按字符格式输出每一个字符。程序运行后输出结果是:ykpf,故 A 选项正确。22.以下能正确定义一维数组的选项是_。(分数:2.50)A.int a5=0, 1, 2. 3, 4, 5;B.char a=0, 1, 2. 3, 4, 5; C.char a=“A“, “B“, “C“;D.int a5=“0123“;解析:解析 数组下标从 0 开始,A 选项中所赋值的个数超过了数组的长度;C 选项中定义 a 为字符型变量,而不是数组,赋值错误;D 选项中,整型数组不能赋字符串。23.C 语言中运算对象必须是整型运算符的是(分数:1.00)A.%= B./C.=D.=解析:解析 C 语
36、言规定:求余运算符“%”的运算对象必须是整型。复合赋值运算符“%=”中包含%运算,它的运算对象也必须是整型。24.以下选项中叙述正确的是_。(分数:1.00)A.函数体必须由开始 B.C 程序必须由 main 语句开始C.C 程序中的注释可以嵌套D.C 程序中的注释必须在一行完成解析:解析 函数体是函数首部下面的花括号内的部分,所以函数体必须由开始,A 选项正确。一个源程序文件可以包括预处理命令、全局声明、函数定义,程序总是从。main 函数开始执行的,不是 main 语句,B 选项错误。C 程序中允许两种注释,以/开头的单行注释;以/*开始,以*/结束的块式注释,D 选项错误。函数可以嵌套,
37、注释不能嵌套,C 选项错误。25.有以下程序: #includestdio.h #includestring.h main() char a10=“abcd“; printf(“%d, %d/n“, strlen(a), sizeof(a); 程序运行后的输出结果是(分数:2.00)A.7, 4B.4, 10 C.8, 8D.10, 10解析:解析 strlen()用来返回字符串的长度,而 sizeof()返回的是一个对象或者类型所占的内存字节数,即数组所占的内存。26.设 x,y,z 均为实型变量,代数式 (分数:2.00)A.x/y*zB.x%y%zC.x/y/z D.x*z/y解析:27
38、.下列不合法的用户标识符是_。(分数:2.50)A.j2_KEYB.DoubleC.4d D._8_解析:28.已定义以下函数 int fun(int*p)return*p; fun 函数的返回值是_。(分数:2.00)A.一个整数 B.不确定的值C.形参 p 中存放的值D.形参 p 的地址值解析:解析 返回值为指针变量指向的数据,该数据已被定义为整型,因此 A 选项正确。29.以下程序的输出结果是_。 #includestdio.h main() int a=1,b=3; if(+a0) else printf(“%d,%d/n“,b,a); (分数:2.50)A.2,2B.1,3C.3,2
39、 D.3,1解析:解析 解答本题的关键在于 if 语句条件中的表达式。初始时 a=1,b=3,所以“+a=20”,因此“+a0”为假;因为是进行逻辑与( init += data; return main() int i,*p; for(i=1; i=4; i+) sum(i); p = sum(0); printf(“%d/n“,*p); 程序运行后的输出结果是_。(分数:1.00)A.15B.0C.1D.10 解析:解析 static 变量又称为静态变量,编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的
40、存储单元,值是上一次函数调用结束时的值。若定义时未赋初值,在编译时,系统自动赋初值为 0;若定义时赋初值,则仅在编译时赋初值一次,程序运行后不再给变量赋初值。程序执行过程为:执行 for 循环,i=1,调用函数 sum(1),data=1,init=0,init=init+data=1;i=2,调用函数 sum(2),data=2,init=1,init=init+data=3;i=3,调用函数 sum(3),data=3,init=3,init=init+data=6;i=4,调用函数 sum(4),data=4,init=6,init=init+data=10;i=5 退出 for 循环。
41、调用函数 sum(0),data=0,init=10,ini=init+data=10,返回指向 init 的指针,输出 init=10。故 D 选项正确。34.有以下程序 #includestdio.h #includestdlib.h void fun(int *p1, int *p2, int *s) s=(int *)malloc(sizeof(int); *s=*p1+*(p2+); main() int a2=1, 2, b2=10, 20, *s=a; fun(a, b, s); printf(“%d/n“, *s); 程序运行后的输出结果是_。(分数:2.00)A.1 B.10
42、C.11D.2解析:解析 *s=a 将 s 指向数组 a,fun 函数操作的是新开辟的空间不会对数组 a 里的数据发生变化,所以最后输出 a0为 1,答案选择 A。35.设有定义:double x=2.12;,以下不能完整输出变量 x 值的语句是_。(分数:1.00)A.printf(“x=%5.0f/n“,x); B.printf(“x=%f/n“,x);C.printf(“x=%lf/n“,x);D.printf(“x=%0.5f/n“,x);解析:解析 float 类型变量有效位数为 67 位,double 类型变量有效位数为 1516 位。printf 函数控制字符%f 输出 floa
43、t 类型,%lf 输出 double 类型。对于 float 或 double 型数据,在指定数据输出宽度的同时,也可以指定小数位的位数,格式为%m.nf,表示数据输出总的宽度为 m 位,其中小数部分占 n 位。当数据的小数位多于指定宽度 n 时,截去右边多余的小数,并对截去的第一位小数做四舍五入处理;而当数据的小数位少于指定宽度 n 时,在小数的右边补零;当 m 小于有效位数时,整数部分输出所有有效数字并且自动对齐,小数部分按照 n 指定位数输出。A 选项按照 float 格式输出数据,宽度为 5 位,保留小数0 位,输出为 2,不能完整输出 x,选择 A 选项。B 选项按照 float 格式输出数据,输出为 2.120000。C 选项按照 double 格式输出数据,输出为 2.120000。D 选项按照 float 格式输出数据,保留小数位数为 5,输出为 2.12000。