1、二级 C 语言模拟 644 及答案解析(总分:161.00,做题时间:90 分钟)一、选择题(总题数:40,分数:61.00)1.设有定义:char s81;int i=0;,以下不能将一行(不超过 80 个字符)带有空格的字符串正确读入的语句或语句组是_。(分数:1.00)A.gets(s);B.while(si+=getchar()!=“/n“);si=“/0“;C.scanf(“%s“, s);D.doscanf(“%c“, while(si+!=“/n“);si=“/0“;2.若有定义语句:char s10=“1234567/0/0“;,则 strlen(s)的值是_。(分数:2.00
2、)A.7B.8C.9D.103.以下数组定义中错误的是_。(分数:1.00)A.int x3=1,2,3,4,5,6;B.int x3=0;C.int x23=1,2,3,4,5,6;D.int x23=1,2,3,4,5,6;4.以下选项中,当 x 为大于 1 的奇数时,值为 0 的表达式是_。(分数:1.00)A.x%2=1B.x/2C.x%2!=0D.x%2=05.若有以下程序: #includestdio.h void prtv(int*x) printf(“%d/n“, +*x); main() int a=25; prtv( 程序的输出结果是(分数:1.00)A.23B.24C.2
3、5D.266.若有定义语句:“int x=12, y=8, z;”,在其后执行语句“z=0.9+x/y;”,则 z 的值为_。(分数:1.00)A.1.9B.1C.2D.2.47.以下叙述中正确的是_。(分数:2.50)A.对于逻辑表达式:a+ +|b+ +,设 a 的值为 1,则求解表达式的值后,b 的值会发生改变B.对于逻辑表达式:a+ + s+; main() char a()=“BYTE“; fun(a); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.BTB.YEC.YTD.BY10.以下 C 语言用户标识符中,不合法的是_。(分数:1.00)A._1B
4、.AaBcC.a_bD.a-b11.有以下程序 #includestdio.h int fun(int x, int y) static int m=0, i=2; i+=m+1; m=i+x+y; return m; main() int j=1, m=1, k; k=fun(j, m); printf(“%d“, k); k=fun(j, m); printf(“%d/n“, k); 执行后的输出结果是_。(分数:2.00)A.5, 11B.5, 5C.11, 11D.11, 512.有以下程序: #include stdio.h #include string.h char * a =
5、“you“; char * b = “Welcome you to Beijing!“; main( ) char * p; p = b; while (*p!= *a)p+; p += strlen(a) + 1; printf(“%s/11“,p); 程序运行后的输出结果是_。(分数:1.00)A.Beijing!B.you to Beijing!C.Welcome you to Beijing!D.to Beijing!13.读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中 buffer 代表的是_。(分数:1.00)A.一个内存块的字节数B
6、.一个整型变量,代表待读取的数据的字节数C.一个文件指针,指向待读取的文件D.一个内存块的首地址,代表读入数据存放的地址14.有以下程序 #includestdio.h #define M 5 #define f(x, y) x*y+M main() int k; k=f(2, 3)*f(2, 3); printf(“%d/n“, k); 程序的运行结果是(分数:2.00)A.22B.41C.100D.12115.有以下程序: #include stdio.h main () FILE *pf; char *s1=“China“, *s2=“Beijing“; pf=fopen(“abc.da
7、t“, “wb+“); fwrite(s2, 7, 1, pf); fwrite(s1, 3, 1, pf); fclose (pf); 以上程序运行后,abc.dat 文件的内容是 _ 。(分数:1.00)A.ChinaB.BeijingC.BeijingChiD.BeijingChina16.有以下程序: #include stdio.h main( ) char a=“H“; a=(a=“A“ printf(“%c/n“,a); 程序运行后的输出结果是_。(分数:1.00)AHBhCADa17.定义如下变量: int n=10; 则下列循环的输出结果是( )。 while(n7) -n;
8、 printf(“%d/n“,n); (分数:1.00)A.1098B.987C.10987D.987618.下列叙述中正确的是_。(分数:1.00)A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D.在栈中,栈中元素不会随栈底指针与栈顶指针的变化而动态变化19.若有定义:int a,b;,通过语句 scanf(“%d;%d“,能把整数 3 赋给变量 a、5 赋给变量 b 的输入数据是_。(分数:2.00)A.3 5B.3,5C.3;5D.3520.以下程序的输出结果
9、是_。 #includestdio.h main() int a=4,b=3,c=2,d=1; printf(“%d“,ab?a:dc?d:b); (分数:2.50)A.1B.3C.2D.421.有以下程序: # include stdio.h main() int a=12,c; c=(a2)1; printf(“%d/n“,c); 程序运行后的输出结果是_。(分数:1.00)A.3B.50C.2D.9622.以下说法中正确的是_。(分数:2.50)A.C 语言程序的执行都是从程序的第一个函数开始B.在 C 语言程序中,要调用的函数必须在 main 函数中声明C.任何 C 语言程序的执行都是
10、从 main 函数开始D.C 语言程序中的 main 函数必须放在程序的最前面23.支持子程序调用的数据结构是_。(分数:1.00)A栈B树C.队列D.二叉树24.排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为_。(分数:1.00)A.希尔排序B.冒泡排序C.插入排序D.选择排序25.执行下列程序中的输出语句后,a 的值是 _ 。 main() int a; printf(“%d/n“,(a=2*3,a*5,a+7); (分数:2.00)A.17B.37C.6D.1326.下面程序的输出是_。 #includestdio.h #includestring.h ma
11、in() char p1=“WHO“,p2=“who“,str50=“xyz“; strcpy(str+1,strcat(p1,p2); printf(“%s“,str); (分数:2.00)A.xyzWHOwhoB.zWHOwhoC.zWHOwhoD.xWHOwho27.程序中头文件 type1.h 的内容是 #define N 5 #define M1 N*3 程序如下: #define “type1.h“ #define M2 N*2 main () int i; i=M1+M2; printf(“%d/n“, i); ) 程序编译后运行的输出结果是( )。(分数:1.00)A.10B.
12、20C.25D.3028.有以下程序: main() int y=1,x=2,z=3; printf(“%d,%d/n“,(Hx,y+),z+2); 执行后的输出结果是_。(分数:2.00)A.3,5B.2,5C.3,3D.1,529.对长度为 n 的线性表进行顺序查找,在最坏情况下,所需要的比较次数为(分数:1.00)A.log2nB.n/2CnD.n+130.以下叙述中正确的是_。(分数:2.00)A.由 printf 输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的B.scanf 和 printf 是 C 语言提供的输入和输出语句C.由 printf 输出的数据都隐含左对
13、齐D.赋值语句是一种执行语句,必须放在函数的可执行部分31.计算机能直接执行的程序是_。(分数:2.00)A.源程序B.目标程序C.汇编程序D.可执行程序32.以下叙述中正确的是_。(分数:2.50)A.关系运算符两边的运算对象可以是 C 语言中任意合法的表达式B.在 C 语言中,逻辑真值和假值分别对应 1 和 0C.对于浮点变量 x 和 y,表达式:x=y 是非法的,会出编译错误D.分支结构是根据算术表达式的结果来判断流程走向的33.若有以下程序 #includestdio.h main() int s=0, n; for(n=0; n4; n+) switch(n) default:s+=
14、4; case 1:s+=1; break; case 2:s+=2; break; case 3:s+=3; printf(“%d/n“, s); 则程序的输出结果是_。(分数:2.00)A.13B.10C.11D.1534.有以下程序: #includestdio.h main() int a=1,b=3,c=5; int * p1=a,*p2=b,*p=c; *p=*p1*(* p2); printf(“%d/n“,c); 程序执行后的输出结果是_。(分数:1.00)A.1B.2C.3D.435.软件生命周期是指_。(分数:2.50)A.软件产品从提出、实现、使用维护到停止使用退役的过程
15、B.软件从需求分析、设计、实现到测试完成的过程C.软件的开发过程D.软件的运行维护过程36.当 a=1、b=2、c=3、d=4 时,执行下面程序段后,x 的值是_。 if(ab) if(cd) x=1; else if(ac) if(bd) x=2; else x=3; else x=6; else x=7;(分数:2.50)A.1B.6C.3D.237.数据库管理系统是_。(分数:1.00)A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系统D.一种操作系统38.以下叙述中错误的是_。(分数:2.00)A.C 语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令B
16、.C 程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件C.用 C 语言编写的程序称为源程序,它以 ASCII 代码形式存放在一个文本文件中D.C 语言源程序经编译后生成后缀为.obj 的目标程序39.有以下程序: #includestdio.h #includestring.h typedef structchar name9;char sex;int score2;STU; STU f(STU a) STU b=“Zhao“,“m“,85,90; int i; strcpy(a.name“b.name); a.sex=b.sex; for(i=0;i2;i+)a.scor
17、ei=b.scorei; return a; main() STU c=“Qian“,“f“,95,92,d; d=f(c); printf(“%s,%c,%d,%d,“,d.name,d.sex,d.score0,d.score1); printf(“%s,%c,%d,%d/n“,c.name,c.sex,c.score0,c.score1); 程序运行后的输出结果是_。(分数:1.00)A.Zhao,m,85,90,Qian,f,95,92B.Zhao,m,85,90,Zhao,m,85,90C.Qian,f,95,92,Qian,f,95,92D.Qian,f,95,92,Zhao,m,
18、85,9040.下面函数的功能是_。 sss(s,t) char*s,*t; while(*s) return(*s-*t); (分数:2.00)A.将字符串 s 复制到字符串 t 中B.比较两个字符串的大小C.求字符串的长度D.将字符串 s 接续到字符串 t 中二、程序填空题(总题数:1,分数:30.00)41.请补充函数 proc(),该函数的功能是把数组 arr 中的奇数元素按原来的先后顺序放在原数组后面。 例如,原始数组为“33 67 42 58 25 76 85 16 41 55”,则输出结果为“42 58 76 16 33 67 25 85 41 55”。 注意:部分源程序给出如下
19、。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h #define M 10 void proc(int arr) int i, j=0, k=0; int bbM; for(i=0; iM; i+) if( 1) bbk+=arri; else arrj+=arri; for(i=0; ik; 2) arrj=bbi; void main() int i; int arrM=33, 67, 42, 58, 25, 76, 85, 16, 41, 55;
20、 system(“CLS“); printf(“/n*original list*/n“); for(i=0; iM; i+) printf(“%4d“, arri); proc(arr); printf(“/n*new list*/n“); for(i=0; iM; i+) printf(“%4d“, arri); (分数:30.00)三、程序修改题(总题数:1,分数:30.00)42.给定程序 MODI1.C 中 fun 函数的功能是:根据整型形参 m,计算如下公式的值。 (分数:30.00)_四、程序设计题(总题数:1,分数:40.00)43.请编写一个函数 fun,其功能是:将 ss
21、所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 例如,若输入“abc4Efg”,则应输出“aBc4EFg”。 注意:部分源程序存在文件 PROG1.C 中。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 给定源程序如下。 #includestdio.h #includestring.h void fun(char*ss) void main(void) char tt51; printf(“/nPlease enter an character string within 50 characters:/
22、n“); gets(tt); printf(“/n/nAfter changing,the string/n“%s“,tt); fun(tt); printf(“/nbecomes/n“%s“,tt); (分数:40.00)_二级 C 语言模拟 644 答案解析(总分:161.00,做题时间:90 分钟)一、选择题(总题数:40,分数:61.00)1.设有定义:char s81;int i=0;,以下不能将一行(不超过 80 个字符)带有空格的字符串正确读入的语句或语句组是_。(分数:1.00)A.gets(s);B.while(si+=getchar()!=“/n“);si=“/0“;C.s
23、canf(“%s“, s); D.doscanf(“%c“, while(si+!=“/n“);si=“/0“;解析:解析 字符串的输入不能使用 scanf(“%s“,s);而应该使用 gets(s)。所以选择 C 选项。2.若有定义语句:char s10=“1234567/0/0“;,则 strlen(s)的值是_。(分数:2.00)A.7 B.8C.9D.10解析:解析 strlen(s)即求字符串 s 的长度,遇到“/0“时结束统计。因此选项 A 为正确答案。3.以下数组定义中错误的是_。(分数:1.00)A.int x3=1,2,3,4,5,6;B.int x3=0;C.int x23
24、=1,2,3,4,5,6; D.int x23=1,2,3,4,5,6;解析:解析 C 选项中 x23定义的是一个 2 行 3 列的二维数组,而在给数组元素赋值时却赋成了 3 行,因此错误。4.以下选项中,当 x 为大于 1 的奇数时,值为 0 的表达式是_。(分数:1.00)A.x%2=1B.x/2C.x%2!=0D.x%2=0 解析:解析 x 为大于 1 的奇数,x%2 的值为 1,x%2=0 为假,所以选择 D。5.若有以下程序: #includestdio.h void prtv(int*x) printf(“%d/n“, +*x); main() int a=25; prtv( 程序
25、的输出结果是(分数:1.00)A.23B.24C.25D.26 解析:6.若有定义语句:“int x=12, y=8, z;”,在其后执行语句“z=0.9+x/y;”,则 z 的值为_。(分数:1.00)A.1.9 B.1C.2D.2.4解析:解析 此题考查除法运算,根据先乘除后加减,有括号先算括号的原则,先计算 x/y,即12/8=1,所以 z=0.9+1=1.9。7.以下叙述中正确的是_。(分数:2.50)A.对于逻辑表达式:a+ +|b+ +,设 a 的值为 1,则求解表达式的值后,b 的值会发生改变B.对于逻辑表达式:a+ + s+; main() char a()=“BYTE“; f
26、un(a); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.BTB.YE C.YTD.BY解析:解析 本题中执行 fun(a)时,会取字符串 a 的第一个字母 B,因为字母 B 的 ASCII 码值为 66,所以不会输出字母 B,函数只会输出 ASCII 码值为奇数的字母,字母 Y 的 ASClI 码值为 89,字母 T 的 ASCII码值为 84,字母 E 的 ASCII 码值为 69,因此 B 选项正确。10.以下 C 语言用户标识符中,不合法的是_。(分数:1.00)A._1B.AaBcC.a_bD.a-b 解析:解析 标识符主要由英文字母、数字和下划线构成
27、,并且首字符不能是数字,但可以是字母或者下划线。本题中,选项 A、B、C 均符合 C 语言标识符要求。选项 D 不合法,因为其虽然以字母为首字符,但中间的“-”(减号)不是 C 语言标识符的构成要素。11.有以下程序 #includestdio.h int fun(int x, int y) static int m=0, i=2; i+=m+1; m=i+x+y; return m; main() int j=1, m=1, k; k=fun(j, m); printf(“%d“, k); k=fun(j, m); printf(“%d/n“, k); 执行后的输出结果是_。(分数:2.00
28、)A.5, 11 B.5, 5C.11, 11D.11, 5解析:解析 声明静态局部变量:函数调用结束后,其占用的存储单元不释放,在下次该函数调用时,该变量保留上一次函数调用结束时的值。本题子函数 fun 中的变量 i 和 m 均为静态局部变量。因此第一次调用 fun 函数,返回 m 的值为 5,第二次再调用 fun 函数时,i 的值为 3,m 的值已经是 5 了,所以执行i+=m+1,i 的值变为 9,m=i+x+y=9+1+1=11。故本题答案为 A。12.有以下程序: #include stdio.h #include string.h char * a = “you“; char *
29、b = “Welcome you to Beijing!“; main( ) char * p; p = b; while (*p!= *a)p+; p += strlen(a) + 1; printf(“%s/11“,p); 程序运行后的输出结果是_。(分数:1.00)A.Beijing!B.you to Beijing!C.Welcome you to Beijing!D.to Beijing! 解析:解析 while 函数判断 p 指针指向地址的内容是否和 a 指针指向地址的内容相等,如果不是,则移动指针 p+1,当 p 指向* b 字符串中的y时,和*a 首地址元素相等,退出 whil
30、e 语句后,p 再向右移动 a 字符串长度+1 个单位地址,此时 p 指向t,输出t及剩余的字符串,答案为 D 选项。13.读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中 buffer 代表的是_。(分数:1.00)A.一个内存块的字节数B.一个整型变量,代表待读取的数据的字节数C.一个文件指针,指向待读取的文件D.一个内存块的首地址,代表读入数据存放的地址 解析:解析 fread(void *buffer,size_t size,size_t count,FILE*stream);函数的功能是从一个文件流中读数据,读取 count 个元素,每个
31、元素 size 字节。如果调用成功,则返回 count。buffer:用于接收数据的内存地址,大小至少是 size*count 字节。size:单个元素的大小,单位是字节。count:元素的个数,每个元素是 size 字节。stream:输入流。所以选择 D 选项。14.有以下程序 #includestdio.h #define M 5 #define f(x, y) x*y+M main() int k; k=f(2, 3)*f(2, 3); printf(“%d/n“, k); 程序的运行结果是(分数:2.00)A.22B.41 C.100D.121解析:15.有以下程序: #includ
32、e stdio.h main () FILE *pf; char *s1=“China“, *s2=“Beijing“; pf=fopen(“abc.dat“, “wb+“); fwrite(s2, 7, 1, pf); fwrite(s1, 3, 1, pf); fclose (pf); 以上程序运行后,abc.dat 文件的内容是 _ 。(分数:1.00)A.ChinaB.BeijingC.BeijingChi D.BeijingChina解析:解析 本题考查 fread 和 fwrite 函数的使用。fwrite(s2, 7, 1, pf);语句向文件写入字符串 s2, fwrite(s
33、1, 3, 1, pf);语句向文件写入 s1 的前 3 位,最终文件 abc.dat 的内容是 BeijingChi。16.有以下程序: #include stdio.h main( ) char a=“H“; a=(a=“A“ printf(“%c/n“,a); 程序运行后的输出结果是_。(分数:1.00)AHBh CADa解析:解析 条件运算符构成的选择结构的一般形式为:表达式 1?表达式 2:表达式 3。 其求值规则为:如果表达式 1 的值为真,则以表达式 2 的值作为条件表达式的值,否则以表达式 2 的值作为整个条件表达式的值。该题目中首先给字符变量 a 赋值为“H“。语句“a=(a
34、=“A“”即将大写字母变为小写字母。因此 B 选项正确。17.定义如下变量: int n=10; 则下列循环的输出结果是( )。 while(n7) -n; printf(“%d/n“,n); (分数:1.00)A.1098B.987 C.10987D.9876解析:解析 第 1 次循环,107,-n=9,输出 9。第 2 次循环,97,-n=8,输出 8。第 3 次循环,87,-n=7,输出 7。18.下列叙述中正确的是_。(分数:1.00)A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C.在栈中,栈底指针不变,栈中元素随
35、栈顶指针的变化而动态变化 D.在栈中,栈中元素不会随栈底指针与栈顶指针的变化而动态变化解析:解析 栈是先进后出的数据结构,在对栈操作的整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来完成,因此本题答案为 C。19.若有定义:int a,b;,通过语句 scanf(“%d;%d“,能把整数 3 赋给变量 a、5 赋给变量 b 的输入数据是_。(分数:2.00)A.3 5B.3,5C.3;5 D.35解析:解析 输入数据的格式必须与 scanf()的格式控制串完全匹配,所以输入时必须在 3 和 5 之间输入“;”。20.以下程序的输出结果是_。 #includestdio.h main
36、() int a=4,b=3,c=2,d=1; printf(“%d“,ab?a:dc?d:b); (分数:2.50)A.1 B.3C.2D.4解析:解析 条件表达式的格式为:“a?b:c“,它的功能是:当 a 为真时,表达式的值等于 b 的值;当 a为假时,表达式的值等于 c 的值。因为条件运算符的结合方向为“自右向左”。因此,当表达式中嵌套使用条件表达式时,应先计算右边的条件表达式,再计算左边的条件表达式。 题中应先计算“dc?d:b”的“dc”关系表达式的值,因为“d=1c=2”为真,所以取第一个表达式的值,即 d 的值作为整个表达式的值。接着计算“ab?a:d”,“a=4b=3”为假,
37、取第二个表达式的值,即 d 的值作为整个表达式的值。21.有以下程序: # include stdio.h main() int a=12,c; c=(a2)1; printf(“%d/n“,c); 程序运行后的输出结果是_。(分数:1.00)A.3B.50C.2D.96 解析:解析 本题考查左移运算符,左移运算符相当于乘以 2 即 2n,所以 a2=12*2*2=48,所以(a2)1=48*2=96。22.以下说法中正确的是_。(分数:2.50)A.C 语言程序的执行都是从程序的第一个函数开始B.在 C 语言程序中,要调用的函数必须在 main 函数中声明C.任何 C 语言程序的执行都是从
38、main 函数开始 D.C 语言程序中的 main 函数必须放在程序的最前面解析:23.支持子程序调用的数据结构是_。(分数:1.00)A栈 B树C.队列D.二叉树解析:解析 栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子程序时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,然后继续向下执行,这种调用方式符合栈的特点,因此本题的答案为 A。24.排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为_。(分数:1.00)A.希尔排序 B.冒泡排序C.插入排序D.选择排序解析:解析 希尔排序法
39、的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。25.执行下列程序中的输出语句后,a 的值是 _ 。 main() int a; printf(“%d/n“,(a=2*3,a*5,a+7); (分数:2.00)A.17B.37C.6 D.13解析:解析 本题考查逗号表达式。本题的返回值是 a+7,a=2*3=6,a+7=13(注意:本题问的是 a 的值,而不是程序的输出值)。26.下面程序的输出是_。 #includestdio.h #includestring.h main() char p1=“WHO“,p2=“who“,str50=“xyz“; strcpy(str+1
40、,strcat(p1,p2); printf(“%s“,str); (分数:2.00)A.xyzWHOwhoB.zWHOwhoC.zWHOwhoD.xWHOwho 解析:27.程序中头文件 type1.h 的内容是 #define N 5 #define M1 N*3 程序如下: #define “type1.h“ #define M2 N*2 main () int i; i=M1+M2; printf(“%d/n“, i); ) 程序编译后运行的输出结果是( )。(分数:1.00)A.10B.20C.25 D.30解析:解析 编译预处理时,用“type1.h”中的内容替代命令#includ
41、e“type1.h”。表达式“i=M1+M2” 经过宏替换为“i=5*3+5*2”即 i=25,所以最后输出的 i 的值为 25。所以 4 个选项中 C 正确。28.有以下程序: main() int y=1,x=2,z=3; printf(“%d,%d/n“,(Hx,y+),z+2); 执行后的输出结果是_。(分数:2.00)A.3,5B.2,5C.3,3D.1,5 解析:29.对长度为 n 的线性表进行顺序查找,在最坏情况下,所需要的比较次数为(分数:1.00)A.log2nB.n/2Cn D.n+1解析:解析 在长度为 n 的线性表中进行顺序查找,最坏情况下需要比较 n 次选项 C 正确
42、。30.以下叙述中正确的是_。(分数:2.00)A.由 printf 输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的B.scanf 和 printf 是 C 语言提供的输入和输出语句C.由 printf 输出的数据都隐含左对齐D.赋值语句是一种执行语句,必须放在函数的可执行部分 解析:31.计算机能直接执行的程序是_。(分数:2.00)A.源程序B.目标程序C.汇编程序D.可执行程序 解析:解析 计算机能直接执行的程序是二进制的可执行程序,扩展名为.exe。所以选择 D 选项。32.以下叙述中正确的是_。(分数:2.50)A.关系运算符两边的运算对象可以是 C 语言中任意合法
43、的表达式 B.在 C 语言中,逻辑真值和假值分别对应 1 和 0C.对于浮点变量 x 和 y,表达式:x=y 是非法的,会出编译错误D.分支结构是根据算术表达式的结果来判断流程走向的解析:解析 逻辑真值和假值分别对应非零和零;对于浮点变量 x 和 y,表达式“x=y”是合法的;分支结构是根据表达式的真假来判断流程走向的。所以选择 A。33.若有以下程序 #includestdio.h main() int s=0, n; for(n=0; n4; n+) switch(n) default:s+=4; case 1:s+=1; break; case 2:s+=2; break; case 3
44、:s+=3; printf(“%d/n“, s); 则程序的输出结果是_。(分数:2.00)A.13B.10C.11 D.15解析:解析 第一次循环,n 为 0,执行 s+=4 及 s+=1;break;第二次循环,n 为 1,执行s+=1;break;第三次循环,n 为 2,执行 s+=2;break;第四次循环,n 为 3,执行 s+=3:综合以上所述,s 值为 11,答案选择 C。34.有以下程序: #includestdio.h main() int a=1,b=3,c=5; int * p1=a,*p2=b,*p=c; *p=*p1*(* p2); printf(“%d/n“,c);
45、 程序执行后的输出结果是_。(分数:1.00)A.1B.2C.3 D.4解析:解析 该程序中 int*p1=a,*p2=b,*p=c;指定义三个指针变量,并赋值,即使 p1 指向a、p2 指向 b、p 指向 c。*p=*p1*(*p2);该条语句是给 p 所指的存储单元 c 赋值,就是 p1 所指的存储单元的值,即 a 的值,与 p2 所指的存储单元 b 的值相乘,也就是 c=a*b,等价于 c=1*3=3。因此 C 选项正确。35.软件生命周期是指_。(分数:2.50)A.软件产品从提出、实现、使用维护到停止使用退役的过程 B.软件从需求分析、设计、实现到测试完成的过程C.软件的开发过程D.
46、软件的运行维护过程解析:解析 软件生命周期(Systems DevelopmentLife Cyele,SDLC)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段。36.当 a=1、b=2、c=3、d=4 时,执行下面程序段后,x 的值是_。 if(ab) if(cd) x=1; else if(ac) if(bd) x=2; else x=3; else x=6; else x=7;(分数:2.50)A.1 B.6C.3D.2解析:解析 本题考查的是 if-else 语句。第一个 if 语句,先判断条件,发现 ab 条件成立,执行下面的语句。第二个 if 语句,先判断条件,发现 cd 条件成立,执行下面的语句 x=1。37.数据库管理系统是_。(分数:1.00)A.操作系统的一部分B.在操作系统支持下的系统软件 C.一