1、二级 C语言分类模拟题 533及答案解析(总分:51.00,做题时间:90 分钟)一、选择题(总题数:35,分数:51.00)1.以下数据库除 _外,均为严格意义上的 DBMS系统。(分数:2.00)A.OracleB.AccessC.Sybase的 PowerBuilderD.SQL Server2.下面描述中,不属于软件危机表现的是_。(分数:1.00)A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高3.在软件设计中,不属于过程设计工具的是_。(分数:1.00)A.PDL(过程设计语言)B.PAD图C.N-S图D.DFD图4.以下叙述中正确的是_。(分数:1.
2、00)A.数组下标的下限是 1B.数组下标的下限由数组中第一个非零元素的位置决定C.数组下标的下限由数组中第一个被赋值元素的位置决定D.char c1,c2,*c3,c440;是合法的变量定义语句5.以下针对全局变量的叙述错误的是_。(分数:1.00)A.全局变量的作用域是从定义位置开始至源文件结束B.全局变量是在函数外部任意位置上定义的变量C.用 extern说明符可以限制全局变量的作用域D.全局变量的生存期贯穿于整个程序的运行期间6.有以下程序 #include stdio.h int fun(int x,int y) if(x!=y) return(x+y)/2); else retur
3、n(x); main() int a=4,b=5,c=6; printf(“%d/n“,fun(2*a,fun(b,c); 程序运行后的输出结果是_。(分数:1.00)A.6B.3C.8D.127.若要使 int型变量 a、b、c、d 的值都为 0,以下写法中错误的是_。(分数:1.00)A.auto int a,b,c,d;a=b=c=d=0;B.auto int a=b=c=d=0;C.auto int a=0,b=a,c=b,d=c;D.static int a,b,c,d;8.若有定义 int x,y;并已正确给变量赋值,则下列选项中与表达式(x-y)?(x+):(y+)中的条件表达式
4、(x-y)等价的是_。(分数:2.00)A.(x-y0)B.(x-y0)C.(x-y0|x-y0)D.(x-y=0)9.若有以下程序段 int m=0xabc,n=0xabc; m-=n; printf(“%X/n“.m); 执行后输出结果是(分数:1.00)A.0X0B.0x0C.0D.0XABC10.有以下程序: #includestdio.h int f(int x); main() int n=1,m; m=f(f(f(n); printf(“%d/n“,m); int f(int x) return x*2; 程序的运行结果是_。(分数:2.00)A.8B.2C.4D.111.有以下
5、程序: #includestdio.h struct Sint n; int a20; void f(struct S *p) int i,j,t; for(i=0;iP-n-1;i+) for(j=i+1;jp-n;j+) if(p-aiP-aj)t=p-ai;p-ai=p-aj;p-aj=t; main() int i;struct S s=10,2,3,1,6,8,7,5,4,10,9; f( for(i=0;is.n;i+)printf(“%d,“,s.ai); 程序运行后的输出结果是_。(分数:1.00)A.1,2,3,4,5,6,7,8,9,10,B.10,9,8,7,6,5,4,
6、3,2,1,C.2,3,1,6,8,7,5,4,10,9,D.10,9,8,7,6,1,2,3,4,5,12.以下选项中,当 x为大于 1的奇数时,值为 0的表达式是_。(分数:1.00)A.x%2=0B.x/2C.x%2!=0D.x%2=113.下面不属于软件设计阶段任务的是_。(分数:1.00)A.制订软件确认测试计划B.数据库设计C.软件总体设计D.算法设计14.以下能正确定义一维数组的选项是_。(分数:2.00)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=“0
7、123“;15.下列程序的输出结果是 #include“stdio.h“ #define M(x,y) x%y main() int a,m=12,n=100; a=M(n,m); printf(“%d/n“,a-);(分数:1.00)A.2B.3C.4D.516.有以下程序 #includestdio.h main() int s; scanf(“%d“,s); while(s0) switch(s) case 1:pfinttf(“%d“,s+5); case 2:prinft(“%d“,s+4);break; case 3:prinft(“%d“,s+3); default: print
8、f(“%d“,s+1);break; scanf(“%d“,s); 运行时,若输入 1 2 3 4 5 0回车,则输出结果是_。(分数:2.50)A.6566456B.66656C.66666D.666665617.已知二叉树后序遍历序列是 CDABE,中序遍历序列是 CADEB,它的前序遍历序列是_。(分数:2.50)A.ABCDEB.ECABDC.EACDBD.CDEAB18.已定义了以下函数: fff(float x) print(“%d/n“, x*x); 该函数的类型是_。(分数:2.50)A.与参数 x的类型相同B.void类型C.int类型D.无法确定19.有以下程序段: #in
9、cludestdio.h int j;float y;char name50; scanf(“%2d%f%s“,j,y,name); 当执行上述程序段,从键盘上输入 55566 7777abc后,y 的值为_。(分数:1.00)A.566.0B.55566.OC.7777.0D.566777.020.有两个关系 R,S 如下: R A B C a 3 2 b 0 1 c 2 1 S A B a 3 b 0 c 2 由关系 R通过运算得到关系 S,则所使用的运算为_。(分数:1.00)A.选择B.投影C.插入D.连接21.算法的有穷性是指_。(分数:2.00)A.算法程序的运行时间是有限的B.算
10、法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用22.若有定义 int a; float b; double c; 程序运行时输入: 3 4 5回车 能把值 3输入给变量 a、4 输入给变量 b、5 输入给变量 c的语句是_。(分数:3.00)A.scanf(“%lf%lf%lf“, B.scanf(“%d%lf%lf“, C.scanf(“%d%f%f“, D.scanf(“%d%f%lf“, 23.以下叙述中正确的是_。(分数:2.00)A.分支结构是根据算术表达式的结果来判断流程走向的B.在 C语言中,逻辑真值和假值分别对应 1和 0C.对于浮点变量 x
11、和 y,表达式:x=y 是非法的,会出编译错误D.关系运算符两边的运算对象可以是 C语言中任意合法的表达式24.以下数组定义中错误的是_。(分数: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;25.有以下程序(说明:字母 A的 ASCII码值是 65): # include stdio.h void fun(char*s) while(*s) if(*s%2) printf(“%c“,*s); s+; main() char a=“BYTE“; Fun(a);printf(“/n
12、“); 程序运行后的输出结果是_。(分数:1.00)A.BYB.BTC.YTD.YE26.有以下程序: void fun2(char a, char b) printf(“%c%c“, a, b); char a=“A“, b=“B“; void fun1()a=“C“; b=“D“; main() fun1(); printf(“%c%c“, a, b); fun2(“E“, “F“); 程序的运行结果是_。(分数:2.50)A.CDEFB.ABEFC.ABCDD.CDAB27.有以下程序 #includestdio.h double f(double x); main() double a
13、=0;int i; for(i=0;i30;i+=10)a+=f(double)i); printf(“%3.0f/n“,a); double f(double x) (return x*x+1; 程序运行后的输出结果是_。(分数:2.00)A.503B.401C.500D.140428.以下选项中,合法的数值型常量是_。(分数:1.00)A.3.1415B.“A“C.092D.0xDH29.有以下定义语句,编译时会出现编译错误的是_。(分数:1.00)A.char a=“/x2d“;B.char a=“/n“;C.char a=“a“;D.char a=“aa“;30.不属于对象构成成份的是
14、_。(分数:1.00)A.属性B.规则C.方法(或操作)D.标识31.下面描述中,不属于软件危机表现的是_。(分数:1.00)A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高32.有以下程序 #include stdio.h #include string.h struct A int a; char b10; double c; ; void f(struct A t); main() struct A a=1001,“ZhangDa“,1098.0; f(a); printf(“%d,%s,%6.1f/n“,a.a,a.b,a.c); void f(struc
15、t A t) t.a=1002; strcpy(t.b,“ChangRong“); t.c=1202.0; 程序运行后的输出结果是_。(分数:1.00)A.1002,ChangRong,1202.0B.1001,ZhangDa,1098.0C.1001,ChangRong,1098.0D.1002,ZhangDa,1202.033.以下程序依次把从终端输入的字符存放到 f文件中,用#作为结束输入的标志,则在横线处应填入的选项是_。 #includestdio.h main() FILE *fp; char ch; fp=fopen(“fname“, “w“); while(ch=getchar
16、()!=“#“)fputc(_); fclose(fp); (分数:2.00)A.chB.fp, chC.ch, fpD.ch, “fname“34.冒泡排序在最坏情况下的比较次数是_。(分数:1.00)A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/235.有以下程序: #includestdio.h main() int i=5; do if(i%3=1) if(i%5=2) printf(“*%d“, i);break; i+; while(i!=0); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.*2*6B.*3*5C.*5D.*7二级
17、C语言分类模拟题 533答案解析(总分:51.00,做题时间:90 分钟)一、选择题(总题数:35,分数:51.00)1.以下数据库除 _外,均为严格意义上的 DBMS系统。(分数:2.00)A.OracleB.Access C.Sybase的 PowerBuilderD.SQL Server解析:解析 目前流行的 DBMS均为关系数据库系统,如 ORACLE、Sybase 的 Power Builder及 IBM的DB2、微软的 SQL Server等,它们均为严格意义上的 DBMS系统。另外有一些小型的数据库,如微软的Visual FoxPro和 Access等,它们只具备数据库管理系统的
18、一些简单功能,不是严格意义上的 DBMS系统。2.下面描述中,不属于软件危机表现的是_。(分数:1.00)A.软件过程不规范 B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高解析:解析 软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。因此本题答案为 A。3.在软件设计中,不属于过程设计工具的是_。(分数:1.00)A.PDL(过程设计语言)B.PAD图C.N-S图D.DFD图 解析:解析 数据流图 DFD是结构化分析方法最主要的一种图形
19、工具,不属于过程设计工具。4.以下叙述中正确的是_。(分数:1.00)A.数组下标的下限是 1B.数组下标的下限由数组中第一个非零元素的位置决定C.数组下标的下限由数组中第一个被赋值元素的位置决定D.char c1,c2,*c3,c440;是合法的变量定义语句 解析:解析 C 语言规定,数组下标值的下限一律为 0,对于一维数组 amax(max是一个编泽时可知的值)来说,它的第一个和最后一个元素分别是 a0和 amax-1。所以,数组下标值的下限与数组中元素的位置无关,A、B、C 选项错误。5.以下针对全局变量的叙述错误的是_。(分数:1.00)A.全局变量的作用域是从定义位置开始至源文件结束
20、B.全局变量是在函数外部任意位置上定义的变量C.用 extern说明符可以限制全局变量的作用域 D.全局变量的生存期贯穿于整个程序的运行期间解析:解析 在不同编译单位内用 extern说明符来扩展全局变量的作用域,extern 可以将全局变量作用域扩展到其他文件,而不是限制全局变量的作用域,答案为 C选项。6.有以下程序 #include stdio.h int fun(int x,int y) if(x!=y) return(x+y)/2); else return(x); main() int a=4,b=5,c=6; printf(“%d/n“,fun(2*a,fun(b,c); 程序运
21、行后的输出结果是_。(分数:1.00)A.6 B.3C.8D.12解析:解析 本题中第一次调用为“fun(8,fun(5,6)”,因为“fun(5,6)”返回值为 5,所以第二次调用为“fun(8,5)=6”,因此选择 A。7.若要使 int型变量 a、b、c、d 的值都为 0,以下写法中错误的是_。(分数:1.00)A.auto int a,b,c,d;a=b=c=d=0;B.auto int a=b=c=d=0; C.auto int a=0,b=a,c=b,d=c;D.static int a,b,c,d;解析:解析 选项 B中,使用 auto int定义了整型 a,但 b、c、d 都是
22、未定义的变量,所以不能做右值使用,错误;选项 A、C 都是正确的定义和初始化;选项 D中,static 变量定义了 a、b、c、d,由于未初始化,在程序运行时首先将这四个变量赋值为 0,正确。故本题答案为 B选项。8.若有定义 int x,y;并已正确给变量赋值,则下列选项中与表达式(x-y)?(x+):(y+)中的条件表达式(x-y)等价的是_。(分数:2.00)A.(x-y0)B.(x-y0)C.(x-y0|x-y0) D.(x-y=0)解析:9.若有以下程序段 int m=0xabc,n=0xabc; m-=n; printf(“%X/n“.m); 执行后输出结果是(分数:1.00)A.
23、0X0B.0x0C.0 D.0XABC解析:解析 本题考核的知识点是 C 语言中的自反赋值运算符。 “m-=n”相当于“m=m-n”,两个相等的数相减,其值为 0。所以, C 选项为所选。10.有以下程序: #includestdio.h int f(int x); main() int n=1,m; m=f(f(f(n); printf(“%d/n“,m); int f(int x) return x*2; 程序的运行结果是_。(分数:2.00)A.8 B.2C.4D.1解析:解析 第一次调用 m=f(f(f(1),第二次为 m=f(f(2),第三次为 m=f(4),即返回值为 8。11.有
24、以下程序: #includestdio.h struct Sint n; int a20; void f(struct S *p) int i,j,t; for(i=0;iP-n-1;i+) for(j=i+1;jp-n;j+) if(p-aiP-aj)t=p-ai;p-ai=p-aj;p-aj=t; main() int i;struct S s=10,2,3,1,6,8,7,5,4,10,9; f( for(i=0;is.n;i+)printf(“%d,“,s.ai); 程序运行后的输出结果是_。(分数:1.00)A.1,2,3,4,5,6,7,8,9,10, B.10,9,8,7,6,5
25、,4,3,2,1,C.2,3,1,6,8,7,5,4,10,9,D.10,9,8,7,6,1,2,3,4,5,解析:解析 结构体 s中 n代表数组的实际长度,a 是个定长数组。函数 f()对结构体 s内的 a数组元素使用冒泡法进行递增排序。因此最终数组的元素是一个递增序列。故答案为 A选项。12.以下选项中,当 x为大于 1的奇数时,值为 0的表达式是_。(分数:1.00)A.x%2=0 B.x/2C.x%2!=0D.x%2=1解析:解析 算术运算符的优先级高于关系运算符的优先级,所以当 x为大于 1的奇数时,A 选项的值为假,即 0。B 选项的值为不定值,但绝对不是 0。C 选项的值为真,即
26、 1。D 选项的值为真,即 1。13.下面不属于软件设计阶段任务的是_。(分数:1.00)A.制订软件确认测试计划 B.数据库设计C.软件总体设计D.算法设计解析:解析 软件设计阶段的主要任务包括两个:一是进行软件系统的可行性分析,确定软件系统的建设是否值得,能否建成;二是进行软件的系统分析,了解用户的需求,定义应用功能,详细估算开发成本和开发周期。14.以下能正确定义一维数组的选项是_。(分数:2.00)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“;解
27、析:解析 A 中初值的个数大于 a的定义的长度,错误。C 中 a被定为字符却给它赋值为数值,错误。D中 a是整型数组却给它赋值为字符串,错误。15.下列程序的输出结果是 #include“stdio.h“ #define M(x,y) x%y main() int a,m=12,n=100; a=M(n,m); printf(“%d/n“,a-);(分数:1.00)A.2B.3C.4 D.5解析:解析 带参数的宏定义命令行形式如下: #define宏名(形参表)替换文本 在编译的时候编译预处理程序用“替换文本”来替换宏,即 M(n,m)被替换为 n%m,之后计算,将计算的结果赋给 a。注意,宏
28、替换是在编译时由预处理程序完成的,宏替换不占用运行的时间,而函数调用是在程序运行时进行的,在函数的调用过程中需要占用一系列的处理时间。16.有以下程序 #includestdio.h main() int s; scanf(“%d“,s); while(s0) switch(s) case 1:pfinttf(“%d“,s+5); case 2:prinft(“%d“,s+4);break; case 3:prinft(“%d“,s+3); default: printf(“%d“,s+1);break; scanf(“%d“,s); 运行时,若输入 1 2 3 4 5 0回车,则输出结果是_
29、。(分数:2.50)A.6566456 B.66656C.66666D.6666656解析:解析 第一次循环输出 65;然后 s接收到 2,第二次循环输出 6;s 接收到 3,第三次循环输出 6 4;接收到 4,第四次循环输出 5;接收到 5,第五次循环输出 6;接收到 0,结束循环,所以答案为 D。17.已知二叉树后序遍历序列是 CDABE,中序遍历序列是 CADEB,它的前序遍历序列是_。(分数:2.50)A.ABCDEB.ECABDC.EACDB D.CDEAB解析:解析 由于后序遍历的最后一个元素为 E,所以 E为根结点,所以它的前序遍历的首个元素为 E,故排除 A和 D选项。由于中序
30、遍历中,元素 B在元素根结点 E的后面,所以 B为二叉树的右子树,并且该二叉树右子树只有一个元素,所以前序遍历的最后一个元素应为 B,故选项 C为正确选项,即该二叉树的前序遍历序列是 EACDB。18.已定义了以下函数: fff(float x) print(“%d/n“, x*x); 该函数的类型是_。(分数:2.50)A.与参数 x的类型相同B.void类型C.int类型 D.无法确定解析:解析 函数返回值类型由函数头部的返回值类型决定,特别地,如果函数头部没有显示的说明返回值类型,则在 C中一般是默认当作返回 int型,本题中 fff(float x),则返回值类型为 int型。因此正确
31、答案为 C。19.有以下程序段: #includestdio.h int j;float y;char name50; scanf(“%2d%f%s“,j,y,name); 当执行上述程序段,从键盘上输入 55566 7777abc后,y 的值为_。(分数:1.00)A.566.0 B.55566.OC.7777.0D.566777.0解析:解析 它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。其中的格式命令可以说明最大域宽。在百分号(%)与格式码之间的整数用于限制从对应域读入的最大字符数。所以 j的值为 55,y 的值为 166.0,字符数组 name为 7777ab
32、e。20.有两个关系 R,S 如下: R A B C a 3 2 b 0 1 c 2 1 S A B a 3 b 0 c 2 由关系 R通过运算得到关系 S,则所使用的运算为_。(分数:1.00)A.选择B.投影 C.插入D.连接解析:解析 投影运算是从关系模式中挑选若干属性组成新的关系,这是从列的角度进行的运算,相当于对关系进行垂直分解。本题中,S 是在原有关系 R的内部进行的,是由 R中原有的那些域的列所组成的关系,因此选择 B。21.算法的有穷性是指_。(分数:2.00)A.算法程序的运行时间是有限的 B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使
33、用解析:解析 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。22.若有定义 int a; float b; double c; 程序运行时输入: 3 4 5回车 能把值 3输入给变量 a、4 输入给变量 b、5 输入给变量 c的语句是_。(分数:3.00)A.scanf(“%lf%lf%lf“, B.scanf(“%d%lf%lf“, C.scanf(“%d%f%f“, D.scanf(“%d%f%lf“, 解析:解析 int,float,double 对应的格式控制符分别为%d,%f,%lf,所以答案选择 D。23.以下叙述中正确的是
34、_。(分数:2.00)A.分支结构是根据算术表达式的结果来判断流程走向的B.在 C语言中,逻辑真值和假值分别对应 1和 0C.对于浮点变量 x和 y,表达式:x=y 是非法的,会出编译错误D.关系运算符两边的运算对象可以是 C语言中任意合法的表达式 解析:解析 逻辑真值和假值分别对应非零和零;对于浮点变量 x和 y,表达式“x=y”是合法的;分支结构是根据表达式的真假来判断流程走向的。所以选择 D。24.以下数组定义中错误的是_。(分数: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
35、,6;解析:解析 C 选项中 x23定义的是一个 2行 3列的二维数组,而在给数组元素赋值时却赋成了 3行,因此错误。25.有以下程序(说明:字母 A的 ASCII码值是 65): # include stdio.h void fun(char*s) while(*s) if(*s%2) printf(“%c“,*s); s+; main() char a=“BYTE“; Fun(a);printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.BYB.BTC.YTD.YE 解析:解析 fun()函数的意思是当*s%2=0 的时候就输出并且 s自加 1次,然后判断。所以可知只有
36、第2和第 4个位置上的才符合要求,所以答案为 D。26.有以下程序: void fun2(char a, char b) printf(“%c%c“, a, b); char a=“A“, b=“B“; void fun1()a=“C“; b=“D“; main() fun1(); printf(“%c%c“, a, b); fun2(“E“, “F“); 程序的运行结果是_。(分数:2.50)A.CDEF B.ABEFC.ABCDD.CDAB解析:解析 在函数 fun1()之前定义了全局字符变量 a和 b。这两个变量的作用域是从其定义处开始到整个程序末结束。在函数 fun1()之内定义了两个
37、变量 a和 b,并且分别初始化为字符“C“和“D“。27.有以下程序 #includestdio.h double f(double x); main() double a=0;int i; for(i=0;i30;i+=10)a+=f(double)i); printf(“%3.0f/n“,a); double f(double x) (return x*x+1; 程序运行后的输出结果是_。(分数:2.00)A.503 B.401C.500D.1404解析:解析 for 循环进入循环体的 i分别为 0 10 20,调用 f函数返回分别为 1 101 401,累加为503,所以选择 A。28.
38、以下选项中,合法的数值型常量是_。(分数:1.00)A.3.1415 B.“A“C.092D.0xDH解析:解析 数值型常量包括整型常量和实型常量。整型常量有三种:十进制常量,用 09 表示,不能以 0开头;八进制常量,用 07 表示,必须用 0开头;十六进制常量,用 09 和 AF(af)表示,必须以 0x或 0X开头。实型常量:用带小数点的数字表示,其值有两种表达形式,分别为十进制小数形式和指数形式。3.1415 为实型常量,A 选项正确。“A”为长度为 1的字符串常量,B 选项错误。092 按照格式来说是八进制整型常量,但是八进制不会出现 9,故 C选项错误。0xDH 按照格式说是十六进
39、制整型常量,但是不应该出现 H,D 选项错误。29.有以下定义语句,编译时会出现编译错误的是_。(分数:1.00)A.char a=“/x2d“;B.char a=“/n“;C.char a=“a“;D.char a=“aa“; 解析:解析 D 选项不能将一个字符串赋值给一个字符变量,所以选择 D。30.不属于对象构成成份的是_。(分数:1.00)A.属性B.规则 C.方法(或操作)D.标识解析:解析 一个对象通常可由对象名、属性和操作 3部分组成,对象名唯一标识一个对象。故答案为B选项。31.下面描述中,不属于软件危机表现的是_。(分数:1.00)A.软件过程不规范 B.软件开发生产率低C.
40、软件质量难以控制D.软件成本不断提高解析:解析 软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。所以选择 A选项。32.有以下程序 #include stdio.h #include string.h struct A int a; char b10; double c; ; void f(struct A t); main() struct A a=1001,“ZhangDa“,1098.0; f(a); printf(“%d,%s,%6.1f/
41、n“,a.a,a.b,a.c); void f(struct A t) t.a=1002; strcpy(t.b,“ChangRong“); t.c=1202.0; 程序运行后的输出结果是_。(分数:1.00)A.1002,ChangRong,1202.0B.1001,ZhangDa,1098.0 C.1001,ChangRong,1098.0D.1002,ZhangDa,1202.0解析:解析 f 函数是值传递,不会改变 main函数中 t的值,所以结果为 B。33.以下程序依次把从终端输入的字符存放到 f文件中,用#作为结束输入的标志,则在横线处应填入的选项是_。 #includestdi
42、o.h main() FILE *fp; char ch; fp=fopen(“fname“, “w“); while(ch=getchar()!=“#“)fputc(_); fclose(fp); (分数:2.00)A.chB.fp, chC.ch, fp D.ch, “fname“解析:解析 fputc 使用形式为:fputc(字符量,文件指针),所以答案选择 C。34.冒泡排序在最坏情况下的比较次数是_。(分数:1.00)A.n(n+1)/2B.nlog2nC.n(n-1)/2 D.n/2解析:解析 对 n个结点的线性表采用冒泡排序,在最坏情况下,需要经过 n/2次的从前往后的扫描和n/
43、2次的从后往前的扫描,需要的比较次数为 n(n-1)/2。35.有以下程序: #includestdio.h main() int i=5; do if(i%3=1) if(i%5=2) printf(“*%d“, i);break; i+; while(i!=0); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.*2*6B.*3*5C.*5D.*7 解析:解析 dowhile 语句是先执行后判断,所以第一次先执行循环体,判断 i%3=1的条件,由于 i为 5,所以余数为 2,条件不成立,执行 i+,i 的值为 6,判断 while条件为真;第二次执行循环体,同第一次循环的执行过程一样,i 的值变为 7,判断 while条件为真;第三次执行循环体,此时 i%3=1,条件成立,再判断 i%5=2也成立,打印*与 i的值,即*7,然后执行 break语句,跳出循环程序结束。所以选择 D选项。