1、二级 C 语言模拟 649 及答案解析(总分:167.50,做题时间:90 分钟)一、选择题(总题数:40,分数:57.50)1.若有以下定义: struct ttchar name10;char sex;aa=“aaaa“,“F“,*p= 则错误的语句是_。(分数:1.00)A.scanf(“%c“,aa.sex);B.aa.sex=getchar( );C.printf(“%c/n“,(*p).sex);D.printf(“%c/n“,p-sex);2.有以下程序: #includestdio.h void fun(int a,int b) int t; t=a;a=b;b=t; main
2、() int c10=1,2,3,4,5,6,7,8,9,0,i; for(i=0;i10;i+=2)fun(ci,ci+1); for(i=0;i10;i+)printf(“%d,“,ci); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.1,2,3,4,5,6,7,8,9,0,B.2,1,4,3,6,5,8,7,0,9,C.0,9,8,7,6,5,4,3,2,1,D.0,1,2,3,4,5,6,7,8,9,3.若有定义语句: char *s1=“OK“,*s2=“OK“; 以下选项中,能够输出“OK”的语句是_。(分数:1.00)A.if(strcmp(s1,
3、s2)=0) puts(s1);B.if(strcmp(s1,s2)!=0) puts(s2);C.if(strcmp(s1,s2)=1) puts(s1);D.if(strcmp(s1,s2)!=0) puts(s1);4.若有定义语句:double x, y, *px, *py;执行了 px= py=之后,正确的输入语句是_。(分数:1.00)A.scanf(“%f%“, x, y);B.scanf(“%f%f“C.scanf(“%lf%lf“, px, py);D.scanf(“%lf%lf“, x, y);5.以下叙述中错误的是_。(分数:2.00)A.gets 函数用于从终端读入字符
4、串B.getchar 函数用于从磁盘文件读入字符C.fputs 函数用于把字符串输出到文件D.fwrite 函数用于以二进制形式输出数据到文件6.若变量已正确定义并赋值,以下符合 C 语言语法的表达式是(分数:1.00)A.a:=b+1B.a=b=c+2C.int 18.5%3D.a=a+7=c+b7.程序中已构成如下图所示的不带头结点的单向链表结构,指针变量 s、p、q 均已正确定义,并用于指向链表结点,指针变量 s 总是作为头指针指向链表的第一个结点。 (分数:2.00)A.首结点成为尾结点B.尾结点成为首结点C.删除首结点D.删除尾结点8.结构化程序设计的 3 种结构是_。(分数:2.5
5、0)A.顺序结构、选择结构、转移结构B.分支结构、等价结构、循环结构C.多分支结构、赋值结构、等价结构D.顺序结构、选择结构、循环结构9.在数据管理技术发展的三个阶段中,数据共享最好的是_。(分数:1.00)A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同10.下列叙述中正确的是_。(分数:1.00)A.对长度为 n 的有序链表进行查找,最坏情况下需要的比较次数为 nB.对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C.对长度为 n 的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D.对长度为 n 的有序链表进行对分查找,最坏情况下
6、需要的比较次数为(nlog2n)11.以下关于 C 语言函数参数传递方式的叙述正确的是_。(分数:1.00)A.数据只能从实参单向传递给形参B.数据可以在实参和形参之间双向传递C.数据只能从形参单向传递给实参D.C 语言的函数,参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用12.读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中 buffer 代表的是_。(分数:2.00)A.一个内存块的字节数B.一个整型变量,代表待读取的数据的字节数C.一个文件指针,指向待读取的文件D.一个内存块的首地址,代表读入数据存放的地址1
7、3.有以下程序 main() int x=1,3,5,7,2,4,6,0,i,j,k; for(i=0; i3 ; i+) for(j=2; j=i ; j-) if(xj+1xj) k=xj; xj=xj+1; xj+1=k; for(i=0; i3; i+) for(j=4; j7-i; j+) if(xjxj+1) k=xj; xj=xj+1; xj+1=k; for(i=0; i8; i+) printf(“%d“,xi); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.75310246B.01234567C.76310462D.1357024614.有以
8、下程序: #includestdio.h int f(int x,int y) return(y-x)*x); main() int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c); printf(“%d/n“,d); 程序运行后的输出结果是_。(分数:1.00)A.7B.10C.8D.915.数据库应用系统中的核心问题是_。(分数:2.00)A.数据库设计B.数据库系统设计C.数据库维护D.数据库管理员培训16.有以下程序: #include stdio.h main( ) if(“/0“ = 0) putchar(“1“); if(“0“ = 0)putchar(“2“)
9、; if(“a“b“) putchar(“3“); 程序运行后的输出结果是_。(分数:1.00)A.1B.123C.23D.317.函数 fseek(pf,OL,SEEK_END)中的 SEEK_END 代表的起始点是_。(分数:1.00)A.文件开始B.文件末尾C.文件当前位置D.以上都不对18.若二维数组 a 有 m 列,则在 aij之前的元素个数为_。(分数:2.50)A.j*m+iB.i*m+jC.i*m+j-1D.i*m+j+119.以下定义语句中正确的是_。(分数:1.00)A.int a=b=0;B.char A=65+1,b=“b“;C.float a=1,*b=a,*c=b;
10、D.double a=0.0;b=1.1;20.已知函数 fun 的定义如下: void fun(int x,int y), int k; for(k=0;ky;k+) Xk+=y; 若 main 函数中有声明“int a1=10:”及调用 fun 函数的语句,则正确的 fum 函数调用形式是_。(分数:2.50)A.fun(a,a0);B.fun(a0,a0);C.fun(D.fun(a0,21.设 x=011050,则 x=x void func2(int i); char st=“hello, friend!“; void func1(int i) pnintf(“% c1, sti);
11、 if(i3) i+=2; func2(i); void func2(int i) printf(“%c“, sti); if(i3) i+=2; func1(i); main() int i=0; func1(i); printf(“/n“); (分数:1.00)A.hlloB.heelC.hloD.hlm24.有以下程序 #includestdio.h main() FILE*fp;int i,a6=1,2,3,4,5,6; fp=fopen(“d2.dat“,“w+“); for(i=0;i6;i+)fptintf(fp,“%d/n“,ai); rewind(fp); for(i=0;i
12、6;i+)fscanf(fp,“%d“,a5-i); fclose(fp); for(i=0;i6;i+)printf(“%d,“,ai); 程序运行后的输出结果是_。(分数:1.00)A.6,5,4,3,2,1,B.1,2,3,4,5,6,C.4,5,6,1,2,3,D.1,2,3,3,2,1,25.有以下程序: #includestdio.h main() int i,t3=9,8,7,6,5,4,3,2,1; for(i=0;i3;i+) printf(“%d“,t2-ii); 程序的运行结果是_。(分数:2.00)A.3 5 7B.7 5 3C.3 6 9D.7 5 126.软件生命周
13、期是指_。(分数:1.00)A.软件产品从提出、实现、使用、维护到停止使用、退役的过程B.软件的需求分析、设计与实现C.软件的开发与管理D.软件的实现和维护27.表达式“5“-“1“的值是_。(分数:2.50)A.整数 4B.字符 4C.表达式不合法D.字符 628.有以下程序: # include stdio.h void fun(char *c) while(*c) if(*c=“a“*c=“z“)*c=*c-(“a“-“A“); c+; main() char s81; gets(s); fun(;) puts(s); 当执行程序时从键盘输入 Hello Beijing回车,则程序的输出
14、结果是_。(分数:1.00)A.hello beijingB.Hello BeijingC.HELLO BEIJINGD.hELLO Beijing29.设变量已正确定义并赋值,以下正确的表达式是_。(分数:1.00)A.x=y+z+5,+yB.int(15.8%5)C.x=y*5=x+zD.x=25%5.030.设 C 语言中,float 类型数据占 4 字节,则 double 类型数据占_字节。(分数:2.00)A.1B.2C.8D.431.下列程序的输出结果是_。 int i=010,J=10; printf(“%d,%d/n“,+i,j-);(分数:2.00)A.11,10B.9,10
15、C.010,9D.10,932.有以下程序(注:字符 a 的 ASCH 码值为 97): #includestdio.h main() char*s=“abc“; do printf(“%d“,*s%10);+s; while(*s); 程序运行后的输出结果是_。(分数:1.00)A.789B.abcC.7890D.97989933.结构化程序所要求的基本结构不包括_。(分数:1.00)A.顺序结构B.GOTO 跳转C.选择(分支)结构D.重复(循环)结构34.具有 3 个结点的二叉树有(分数:1.00)A.2 种形态B.4 种形态C.7 种形态D.5 种形态35.有以下程序: #includ
16、estdio.h int m=12; int fun(int x,int y) static int m=3; m=x*y-m; return(m); main() int a=7,b=5; m=fun(a,b)/m; printf(“%d/n“,fun(a,b)/m); 程序运行后的输出结果是_。(分数:1.00)A.2B.1C.3D.036.字符串“/“abcd/123/xAB/t“的长度是( )。(分数:1.00)A.8B.17C.9D.1037.有以下程序: #define f(X)(X*X) main() int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+
17、2); printf(“%d,%d/n”,i1,i2); 程序运行后的输出结果是 _ 。(分数:1.00)A.64,28B.4,4C.4,3D.64,6438.设 x,y,z 均为实型变量,代数式 (分数:1.00)A.x/y*zB.x%y%zC.x/y/zD.x*z/y39.对于下列定义,不正确的叙述是 _ 。 union data int a; char b; double c; x=y;(分数:2.00)A.变量 x 所占内存的长度等于成员 c 的长度B.变量 x 的地址和它的各成员地址都是相同的C.可以在定义时对 x 初始化D.不能对变量 x 赋值,故 x=y 非法40.算法的时间复杂
18、度是指(分数:2.00)A.算法所处理的数据量B.算法的执行时间C.算法在执行过程中所需要的基本运算次数D.算法程序中的语句或指令条数二、程序填空题(总题数:1,分数:30.00)41.请补充函数 proc(),该函数可以统计一个长度为 n 的字符串在另一个字符串中出现的次数。 例如,假定输入的字符串为:asd ascasdfg asd as as mlosd,子字符串为 asd,则应输出 3。 注意:部分源程序给出如下。 请勿改动函数 main()和其他函数中的任何内容,仅在函数 proc()的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includ
19、estdio.h #includestring.h #includeconio.h int proc(char *str, char *sub) int n; char *p, *r; 1; while(*str) p=str; r=sub; while(*r) if( 2) r+; p+; else break; if( 3) n+; str+; return n; void main() char str81, sub3; int n; system(“CLS“); printf(“输入主字符串:“); gets(str); printf(“输入子字符串:“); gets(sub); pu
20、ts(str); puts(sub); n=proc(str, sub); printf(“n=%d/n“, n); (分数:30.00)三、程序修改题(总题数:1,分数:40.00)42.下列给定程序中,函数 proc()的功能是求出数组中最小数和次最小数,并把最小数和 arr0中的数对调,次最小数和 arr1中的数对调。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h #includeconio.h #includestdio.h #define M 20 void proc(i
21、nt *arr, int n) int i, m, t, k; /*found* for(i=0; in; i+) m=i; for(k=i; kn; k+) if(arrkarrm) /*found* k=m; t=arri; arri=arrm; arrm=t; void main() int bM=11, 5, 12, 0, 3, 6, 9, 7, 10, 8, n=10, i; system(“CLS“); for(i=0; in; i+) printf(“%d“, bi); printf(“/n“); proc(b, n); for(i=0; in; i+) printf(“%d“,
22、 bi); printf(“/n“); (分数:40.00)_四、程序设计题(总题数:1,分数:40.00)43.编写函数 fun,函数的功能是求出小于或等于 lim 的所有素数并放在 aa 数组中,函数返回所求出的素数的个数。函数 fun 中给出的语句仅供参考。 注意:部分源程序存在文件 PROG1.C 中。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入编写的若干语句。 给定源程序如下。 #includestdio.h #define MAX 100 int fun(int lim,int aaMAX) /*以下代码仅供参考*/ int i,j,k=0;
23、 /*其中变量 k 用于统计素数个数*/ for(i=2;i=lim;i+) /*以下找出小于或等于 lim 的素数存入 aa 数组中并统计素数个数*/ return k; main() int limit,i,sum; int aaMAX; printf(“输入一个整数:“); scanf(“%d“, sum=fun(limit,aa); for(i=0;isum;i+) if(i%10=0 printf(“%5d“,aai); (分数:40.00)_二级 C 语言模拟 649 答案解析(总分:167.50,做题时间:90 分钟)一、选择题(总题数:40,分数:57.50)1.若有以下定义:
24、 struct ttchar name10;char sex;aa=“aaaa“,“F“,*p= 则错误的语句是_。(分数:1.00)A.scanf(“%c“,aa.sex); B.aa.sex=getchar( );C.printf(“%c/n“,(*p).sex);D.printf(“%c/n“,p-sex);解析:解析 sex 是一个 char 类型变量,不是地址,A 项应为 scanf(“%c“,。2.有以下程序: #includestdio.h void fun(int a,int b) int t; t=a;a=b;b=t; main() int c10=1,2,3,4,5,6,7
25、,8,9,0,i; for(i=0;i10;i+=2)fun(ci,ci+1); for(i=0;i10;i+)printf(“%d,“,ci); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.1,2,3,4,5,6,7,8,9,0, B.2,1,4,3,6,5,8,7,0,9,C.0,9,8,7,6,5,4,3,2,1,D.0,1,2,3,4,5,6,7,8,9,解析:解析 函数调用中发生的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化,所以数组 c 中的元素的值并没有
26、变化,选择 A 选项。3.若有定义语句: char *s1=“OK“,*s2=“OK“; 以下选项中,能够输出“OK”的语句是_。(分数:1.00)A.if(strcmp(s1,s2)=0) puts(s1);B.if(strcmp(s1,s2)!=0) puts(s2);C.if(strcmp(s1,s2)=1) puts(s1);D.if(strcmp(s1,s2)!=0) puts(s1); 解析:解析 strcmp 函数比较字符串大小,区分大小写,所以当 s1、s2 不相等输出 s1 就会输出“OK”,答案选择 D。4.若有定义语句:double x, y, *px, *py;执行了
27、px= py=之后,正确的输入语句是_。(分数:1.00)A.scanf(“%f%“, x, y);B.scanf(“%f%f“C.scanf(“%lf%lf“, px, py); D.scanf(“%lf%lf“, x, y);解析:解析 本题考查 scanf 函数,其格式为:scanf(控制格式,地址表列),其中地址表列中应为要赋值变量的地址。本题要为变量 x 和 y 赋值,并定义了两个指针分别指向 x 和 y,因此取得变量 x 和 y 的地址的方法有两种。一种是使用取地址符号“,其中 buffer 代表的是_。(分数:2.00)A.一个内存块的字节数B.一个整型变量,代表待读取的数据的字
28、节数C.一个文件指针,指向待读取的文件D.一个内存块的首地址,代表读入数据存放的地址 解析:解析 fread(void*buffer,size t size,size t count,FILE*stream)的功能是从一个文件流中读数据,读取 count 个元素,每个元素 size 字节,如果调用成功,返回 count。buffer 用于接收数据的内存地址,大小至少是 size*count 字节;size 是单个元素的大小,单位是字节;count 是元素的个数,每个元素是 size 字节;stream 是输入流。13.有以下程序 main() int x=1,3,5,7,2,4,6,0,i,j
29、,k; for(i=0; i3 ; i+) for(j=2; j=i ; j-) if(xj+1xj) k=xj; xj=xj+1; xj+1=k; for(i=0; i3; i+) for(j=4; j7-i; j+) if(xjxj+1) k=xj; xj=xj+1; xj+1=k; for(i=0; i8; i+) printf(“%d“,xi); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.75310246 B.01234567C.76310462D.13570246解析:解析 在程序中,第一个 for 循环内部实现的是对数组中前四个元素进行降序排序,第
30、二个 for循环内部实现的是对数组后四个元素进行升序排序,因此数组 x 中的最后结果应该是前四个降序,后四个升序。最终结果为7,5,3,1,0,2,4,6。14.有以下程序: #includestdio.h int f(int x,int y) return(y-x)*x); main() int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c); printf(“%d/n“,d); 程序运行后的输出结果是_。(分数:1.00)A.7B.10C.8D.9 解析:解析 调用 f(a,b)函数返回 3,调用 f(a,c)函数返回 6,所以外层调用 f(f(a,b),f(a,c),即
31、调用 f(3,6)函数返回 9。15.数据库应用系统中的核心问题是_。(分数:2.00)A.数据库设计 B.数据库系统设计C.数据库维护D.数据库管理员培训解析:解析 数据库应用系统中的核心问题是数据库的设计。16.有以下程序: #include stdio.h main( ) if(“/0“ = 0) putchar(“1“); if(“0“ = 0)putchar(“2“); if(“a“b“) putchar(“3“); 程序运行后的输出结果是_。(分数:1.00)A.1 B.123C.23D.3解析:解析 /0是转义字符,表示空字符,故“/0“=0 成立,输出 1;0是字符常量和 0
32、不等,a和b都是字符常量,因为“b“a“,不执行 if 后面的语句,所以最后输出只有 1,故答案为 A选项。17.函数 fseek(pf,OL,SEEK_END)中的 SEEK_END 代表的起始点是_。(分数:1.00)A.文件开始B.文件末尾 C.文件当前位置D.以上都不对解析:解析 SEEK_SET 代表文件的开始,SEEK_END 代表文件末尾,SEEK_CUR 代表文件当前位置。18.若二维数组 a 有 m 列,则在 aij之前的元素个数为_。(分数:2.50)A.j*m+iB.i*m+j C.i*m+j-1D.i*m+j+1解析:解析 在 C 语言中,由于二维数组在内存中是按照行优
33、先的顺序存储的(即先顺序存储第 0 行元素,再存第 1 行元素,依次类推),且下标的起始值为 0,因此在 aij之前的元素有 i*m+j 个。19.以下定义语句中正确的是_。(分数:1.00)A.int a=b=0;B.char A=65+1,b=“b“; C.float a=1,*b=a,*c=b;D.double a=0.0;b=1.1;解析:20.已知函数 fun 的定义如下: void fun(int x,int y), int k; for(k=0;ky;k+) Xk+=y; 若 main 函数中有声明“int a1=10:”及调用 fun 函数的语句,则正确的 fum 函数调用形式
34、是_。(分数:2.50)A.fun(a,a0);B.fun(a0,a0);C.fun( D.fun(a0,解析:21.设 x=011050,则 x=x void func2(int i); char st=“hello, friend!“; void func1(int i) pnintf(“% c1, sti); if(i3) i+=2; func2(i); void func2(int i) printf(“%c“, sti); if(i3) i+=2; func1(i); main() int i=0; func1(i); printf(“/n“); (分数:1.00)A.hlloB.h
35、eelC.hlo D.hlm解析:解析 考查函数的调用。函数调用的一般形式为:函数名(实参列表)。首先调用函数 func1(0),输出 st0=h。i 值变为 2,并调用函数 func2(2),输出 st2=1。i 值此时变为 4,又调用函数 func1(4),输出 st4=o。此时 i 值大于等于 3,执行完毕,因此,输出结果为 hlo。24.有以下程序 #includestdio.h main() FILE*fp;int i,a6=1,2,3,4,5,6; fp=fopen(“d2.dat“,“w+“); for(i=0;i6;i+)fptintf(fp,“%d/n“,ai); rewin
36、d(fp); for(i=0;i6;i+)fscanf(fp,“%d“,a5-i); fclose(fp); for(i=0;i6;i+)printf(“%d,“,ai); 程序运行后的输出结果是_。(分数:1.00)A.6,5,4,3,2,1, B.1,2,3,4,5,6,C.4,5,6,1,2,3,D.1,2,3,3,2,1,解析:解析 第一个循环将数组 a 里数据写入文件,rewind 函数将文件指针回到开头,第二个循环将文件里数据倒序写入 a 数组,第三个循环将 a 数组数据输入,则是 a 之前数据里的倒序,选择 A。25.有以下程序: #includestdio.h main() i
37、nt i,t3=9,8,7,6,5,4,3,2,1; for(i=0;i3;i+) printf(“%d“,t2-ii); 程序的运行结果是_。(分数:2.00)A.3 5 7 B.7 5 3C.3 6 9D.7 5 1解析:解析 二维数组 t3实际上指 t33=9,8,7,6,5,4,3,2,1,通过循环语句 for 语句可以得到 i=0,t20=3、i=1,t11=5、i=2,t02=7、i=3 时循环结束,即 t20=3、t11=5、t02=7,因此 A 选项正确。26.软件生命周期是指_。(分数:1.00)A.软件产品从提出、实现、使用、维护到停止使用、退役的过程 B.软件的需求分析、
38、设计与实现C.软件的开发与管理D.软件的实现和维护解析:解析 软件生命周期是指软件产品从提出、实现、使用、维护到停止使用、退役的过程。27.表达式“5“-“1“的值是_。(分数:2.50)A.整数 4 B.字符 4C.表达式不合法D.字符 6解析:解析 在 C 语言中,字符都是变为其对应的 ASCII 码值来参加算术运算的,但字符间的相对位置关系还是不变的,字符 5 和字符 1 的 ASCII 码值相差仍是 4。28.有以下程序: # include stdio.h void fun(char *c) while(*c) if(*c=“a“*c=“z“)*c=*c-(“a“-“A“); c+;
39、 main() char s81; gets(s); fun(;) puts(s); 当执行程序时从键盘输入 Hello Beijing回车,则程序的输出结果是_。(分数:1.00)A.hello beijingB.Hello BeijingC.HELLO BEIJING D.hELLO Beijing解析:解析 此程序是进行将小写字母变成大写字母的操作,所以答案为 C。29.设变量已正确定义并赋值,以下正确的表达式是_。(分数:1.00)A.x=y+z+5,+y B.int(15.8%5)C.x=y*5=x+zD.x=25%5.0解析:解析 B 选项与 D 选项中取模运算符%的左右两个操作数
40、均应为整数,所以 B、D 选项错误。C 选项中不能将 x+y 的值赋给表达式 y*5,所以 C 选项错误。30.设 C 语言中,float 类型数据占 4 字节,则 double 类型数据占_字节。(分数:2.00)A.1B.2C.8 D.4解析:31.下列程序的输出结果是_。 int i=010,J=10; printf(“%d,%d/n“,+i,j-);(分数:2.00)A.11,10B.9,10 C.010,9D.10,9解析:32.有以下程序(注:字符 a 的 ASCH 码值为 97): #includestdio.h main() char*s=“abc“; do printf(“%
41、d“,*s%10);+s; while(*s); 程序运行后的输出结果是_。(分数:1.00)A.789 B.abcC.7890D.979899解析:解析 因为小写字符 a,b,c 的 ASCII 码值分别勾 97,98,99,而在 do while 循环语句中,每次对字符的 ASCII 码值取余数并输出,所以分别输出 7,8,9。33.结构化程序所要求的基本结构不包括_。(分数:1.00)A.顺序结构B.GOTO 跳转 C.选择(分支)结构D.重复(循环)结构解析:解析 结构化程序包含的基本结构为顺序结构、循环结构、分支结构。34.具有 3 个结点的二叉树有(分数:1.00)A.2 种形态B
42、.4 种形态C.7 种形态D.5 种形态 解析:解析 考查二叉树的基础知识。 解题要点 具有 3 个结点的二叉树具有以下的几种形态: 35.有以下程序: #includestdio.h int m=12; int fun(int x,int y) static int m=3; m=x*y-m; return(m); main() int a=7,b=5; m=fun(a,b)/m; printf(“%d/n“,fun(a,b)/m); 程序运行后的输出结果是_。(分数:1.00)A.2B.1 C.3D.0解析:解析 局部变量覆盖全局变量,但是全局变量的声明周期还存在。fun()函数调用完成后
43、,由于 m为全局变量,其值被修改为 32,即函数的返回值为 32,此时 m=32/12。第二次调用 fun(a,b),函数的返回值为 3,此时 m=2,故输出为 1。所以答案为 B 选项。36.字符串“/“abcd/123/xAB/t“的长度是( )。(分数:1.00)A.8B.17C.9 D.10解析:解析 本题中的字符串出现了 5 个转义字符/、/“、/123、/xAB、/t 和 4 个字符a、b、c、d,所以字符串的长度是 9,选项 C 符合题意。37.有以下程序: #define f(X)(X*X) main() int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f
44、(2+2); printf(“%d,%d/n”,i1,i2); 程序运行后的输出结果是 _ 。(分数:1.00)A.64,28B.4,4C.4,3 D.64,64解析:解析 本题考查的是带参数的宏。宏替换与函数调用不同,前者是字面上的,在编译期间完成,后者是内容上的,在运行期间才进行。题目中第 1 条要替换的语句 i1=f(8)*f(4);展开后是 i1=(8*8)/(4*4);,结果使 i1=4。而第 2 条语句 i2=f(4+4)/f(2+2);展开后为 i2=(4+4*4+4)/(2+2*2+2);,结果使 i2=24/8=3。故应该选择 C)。38.设 x,y,z 均为实型变量,代数式
45、 (分数:1.00)A.x/y*zB.x%y%zC.x/y/z D.x*z/y解析:解析 运算符、/的结合顺序是从左到右,所以 x 先除以 y,再除以 z。39.对于下列定义,不正确的叙述是 _ 。 union data int a; char b; double c; x=y;(分数:2.00)A.变量 x 所占内存的长度等于成员 c 的长度B.变量 x 的地址和它的各成员地址都是相同的C.可以在定义时对 x 初始化 D.不能对变量 x 赋值,故 x=y 非法解析:解析 本题主要考查的知识点是联合体的内存使用。联合体所占用的内存空间为最长的成员所占用的空间,各个成员分量全部是从低地址方向开始使用内存单元。不能在定义共用体变量时对它初始化。40.算法的时间复杂度是指(分数:2.00)A.算法所处理的数据量B.算法的执行时间C.算法在执行过程中所需要的基本运算次数 D.算法程序中的语句或指令条数解析:解析 一个算法的时间复杂度是指执行这个算法所需的极端工作量。二、程序填空题(总题数:1,分数:30.00)41.请补充函数 proc(),该函数可以统计一个长度为 n 的字符串在另一个字符串中出现的次数。 例如,假定输入的字符串为:asd ascasdfg asd as as mlosd,子字符串为 a