1、二级 C 语言分类模拟题 554 及答案解析(总分:59.00,做题时间:90 分钟)一、选择题(总题数:40,分数:59.00)1.若有定义 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“, 2.以下叙述正确的是_。(分数:1.00)A.C 语言程序是由过程和函数组成的B.C 语言函数可以嵌套调用,例如:f
2、un(fun(x)C.C 语言函数不可以单独编译D.C 语言中除了 main 函数,其他函数不可作为单独文件形式存在3.下面程序的输出结果是_。 #define a 121 const b=12; enum ca1,a2; main() printf(“%d,%d,%d“,sizeof(a),sizeof(b),sizeof(enum c); (分数:1.00)A.121,0,4B.2,2,2C.0,2,4D.0,2,24.设文件指针 fp 已定义,执行语句 fp=fopen(“file“,“w“);后,以下针对文本文件 file 操作叙述的选项中正确的是_。(分数:2.00)A.只能写不能读
3、B.写操作结束后可以从头开始读C.可以在原有内容后追加写D.可以随意读和写5.设有定义:int a10=0,1,2,3,4,5,6,7,8,9,*p=a,i;,若 0i9,则对 a 数组元素的引用错误的是_。(分数:1.00)A.a10B.*( ch=“A“+“5“-“3“; printf(“%d, %c/n“, ch, ch); 程序的输出结果是(分数:2.00)A.67,CB.B,CC.C,DD.不确定的值7.在 C 语言中,只有在使用时才占用内存单元的变量,其存储类型是(分数:2.00)A.auto 和 registerB.extern 和 registerC.auto 和 static
4、D.static 和 register8.在 C 语言中,不适用于局部变量的存储类说明符是 _(分数:1.00)A.autoB.registerC.staticD.extern9.以下选项中表示一个合法的常量是(说明:符号表示空格)_。(分数:1.00)A.999B.0XabC.123E0.2D.2.7e10.有以下程序: #includestdio.h int a=1; int f(int c) static int a=2; c=c+1; return(a+)+c; main() int i, k=0; for(i=0; i2; i+)int a=3; k+=f(a); k+=a; pri
5、ntf(“%d/n“, k); 程序运行结果是_。(分数:2.50)A.14B.15C.16D.1711.若已包括头文件string.h且已有定义 char s118,s2=“ABCDE“和 int i,现要将字符串 “ABCDE“赋给 s1,下列语句错误的是 _(分数:1.00)A.strcpy(s1,s2)B.strcpy(s1,“ABCDE“);C.s1=“ABCDE“;D.for(i=0;i6;i+)s1i=s2i;12.若有以下程序: #include stdio.h void f(int n); main() void f(int n); f(5); void f(int n) p
6、rintf(“% d/n“, n); 则以下叙述中,不正确的是_。(分数:1.00)A.若在主函数中对函数 f()进行说明,则只能在主函数中正确调用函数 f()B.若在主函数前对函数 f()进行说明,则在主函数和其他函数中都可以正确调用 f()C.对于以上程序,编译时系统会报错,提示对 f()函数重复说明D.函数 f()无返回值,所以可用 void 将其类型定义为无值型13.以下涉及字符串数组、字符指针的程序片段,没有编译错误的是_。(分数:1.00)A.char line;line=“=“:B.char *name10,*str;name=“Hello World“;C.char str11
7、0,str210=“prog.c“;str1=str2;D.char name10,*str=“Hello World“;14.下列程序执行后的输出结果是_。 void func(int*a,int b) b0=*a+6; main() int a,b5=0; a=0;b0=3; func( printf(“%d/n“,b0); (分数:2.00)A.6B.7C.8D.915.有以下程序 #includestdio.h int f(int n) int t=0,a=5; if(n/2)int a=6;t+=a+; elseint a=7;t+=a+; return t+a+; main() i
8、nt s=0,i=0; for(;i2;i+)s+=fi); printf(“%d/n“,s); 程序运行后的输出结果是_。(分数:1.00)A.24B.28C.32D.3616.若有如下说明,且 int 类型占两个字节,则正确的叙述为_。 struct st int a; int b2; a;(分数:2.50)A.结构体变量 a 与结构体成员 a 同名,定义是合法的B.程序只在执行到该结构体时才为结构体 st 分配存储单元C.程序运行时为结构体 st 分配 8 字节存储单元D.类型名 struct st 可以通过 extern 关键字提前引用17.若有以下程序 #includestdio.h
9、 #define S(x) x*x #define T(x)S(x)*S(x) main() int k=5, j=2; printf(“%d, %d/n“, S(k+j), T(k+j); 则程序的输出结果是_。(分数:2.00)A.17, 37B.49, 2401C.17, 289D.49, 28918.设有以下说明,则不正确的叙述是_。 union un int a; char b; float c; arr;(分数:2.50)A.arr 所占的内存长度等于成员 c 的长度B.arr 的地址和它的各成员的地址都是同一地址C.arr 可以作为函数参数D.不能在定义 arr 时对它初始化19
10、.有以下程序: #includestdio.h main() short c=124; c=c_; printf(“%d/n“, c); 若要使程序的运行结果为 248,应在横线处填入的是_。(分数:1.00)A.2B.|248C. char *a; a=s; for(i=0,j=0;ai!=“/0“;i+) if(ai=“0“j+;) sj=“/0“; main() char*s=“aa89gggh“;del(s);printf(“/n%s“,s);(分数:2.50)A.aaB.89C.ggghD.aa89gggh22.以下程序的输出结果是_。 main() char st20=“hello
11、/0/t/“; printf(“%d%d/n“,strlen(st), sizeof(st); (分数:1.00)A.9 9B.5 20C.13 20D.20 2023.下列叙述中,正确的是_。(分数:1.00)A.线性链表是线性表的链式存储结构B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根结点的二叉树是线性结构24.有如下程序: #includestdio.h struct pair int first,second; ; struct pair get_min_max(int*array,int len) int i; struct pair res; res.first=ar
12、ray0; res.second=array0; for(i=1;ilen;i+) if(arrayires.first) res.first=arrayi; if(arrayires.second) res.second=arrayi; return res; main() int array5=9,1,3,4; struet pair min_max=get_min_max(array,5) printf(“min=%d,max=%din“,min_max.first,min_max.second); 程序运行后的输出结果是_。(分数:1.00)A.min=1,max=9B.min=0,m
13、ax=9C.min=1,max=4D.min=0,max=425.有以下程序片段: y=-1; if(x!=0) if(x0) y=1; else y=0; 其能正确表示的数学函数关系是 A B C D (分数:2.00)A.B.C.D.26.设有以下定义和语句 int a32=1,2,3,4,5,6,*p3; p0=a1; 则*(p0+1)所代表的数组元素是(分数:1.00)A.a01B.a10C.a11D.a1227.以下叙述中错误的是( )。(分数:1.00)A.用户定义的函数中可以没有 return 语句B.用户定义的函数中可以有多个 return 语句,以便可以调用一次返回多个函数值
14、C.用户定义的函数中若没有 return 语句,则应当定义函数为 void 类型D.函数的 return 语句中可以没有表达式28.C 语言主要是借助_来实现程序模块化。(分数:1.00)A.定义函数B.定义常量和外部变量C.三种基本结构语句D.丰富的数据类型29.以下关于 switch 语句的叙述中正确的是_。(分数:1.00)A.所有 case 的标号都应当是连续的B.每个 case 语句标号后面可以没有 break 语句C.char 型常量不能做 case 的标号使用D.default 必须放在全部 case 的最后30.若有以下定义: char s100=“string“; 则下述函数
15、调用中,_是错误的。(分数:1.00)A.strlen(strcpy(s, “Hello“)B.strcat(s,strcpy(s1, “s“);C.puts(puts(“Tom“)D.! strcmp (“ “, s)31.若有定义语句“int a,b;double x;”,则下列选项中没有错误的是_。(分数:1.00)A.switch(x%2) case 0: a+;break;case 1:b+; break;default:a+;b+;B.switch(int) x/2.0) case 0: a+;break;case 1:b+; break;default:a+; b+;C.swit
16、ch(int) x%2) case 0: a+;break;case 1:b+;break;default:a+;b+;D.switch(int) (x)%2) case 0.0: a+;break;case 1.0:b+;break;default:a+;b+;32.若有以下定义和语句 ( ) int u010,vOx10,w10; printf(“%d,%d%d/n“,u,v,w); 则输出结果是(分数:1.00)A.8,16,10B.10,10,10C.8,8,10D.8,10,1033.逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是_。(分数:1.00)A.关系模型B.谓词模型C
17、.物理模型D.实体联系模型34.有以下程序 #includestdio.h main() int x,y,z; x=y=1; z=x+,y+,+y; printf(“%d,%d,%d/n“,x,y,z); 程序运行后的输出结果是_。(分数:1.00)A.2,3,1B.2,3,2C.2,3,3D.2,2,135.以下叙述中错误的是_。(分数:2.00)A.C 程序对预处理命令行的处理是在程序执行的过程中进行的B.预处理命令行的最后不能以分号表示结束C.#define MAX 是合法的宏定义命令行D.在程序中凡是以”#”开始的语句行都是预处理命令行36.C 源程序中不能表示的数制是_。(分数:1.
18、00)A.十六进制B.八进制C.十进制D.二进制37.下列叙述中错误的是_。(分数:1.00)A.算法的时间复杂度与问题规模无关B.算法的时间复杂度与计算机系统无关C.算法的时间复杂度与空间复杂度没有必然的联系D.算法的空间复杂度与算法运行输出结果的数据量无关38.下列选项中,能正确定义数组的语句是_。(分数:1.00)A.int num02008;B.int num;C.int N=2008;int numN;D.#define N 2008int numN;39.以下数据结构中不属于线性数据结构的是_。(分数:2.00)A.队列B.线性表C.二叉树D栈40.对于一个正常运行的 C 程序,以
19、下叙述中正确的是_。(分数:2.50)A.程序的执行总是从程序的第一个函数开始,在 main 函数结束B.程序的执行总是从 main 函数开始C.程序的执行总是从 main 函数开始,在程序的最后一个函数中结束D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束二级 C 语言分类模拟题 554 答案解析(总分:59.00,做题时间:90 分钟)一、选择题(总题数:40,分数:59.00)1.若有定义 int a; float b; double c; 程序运行时输入: 3 4 5回车 能把值 3 输入给变量 a、4 输入给变量 b、5 输入给变量 c 的语句是_。(分数:3.0
20、0)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。2.以下叙述正确的是_。(分数:1.00)A.C 语言程序是由过程和函数组成的B.C 语言函数可以嵌套调用,例如:fun(fun(x) C.C 语言函数不可以单独编译D.C 语言中除了 main 函数,其他函数不可作为单独文件形式存在解析:解析 C 语言程序是由主函数和若干子函数构成的,可以嵌套使用。主函数调用子函数,子函数在定义时
21、是并列的,子函数可相互调用或被多次调用。3.下面程序的输出结果是_。 #define a 121 const b=12; enum ca1,a2; main() printf(“%d,%d,%d“,sizeof(a),sizeof(b),sizeof(enum c); (分数:1.00)A.121,0,4B.2,2,2 C.0,2,4D.0,2,2解析:解析 sizeof 函数是取变量所占的存储空间的字节数,标识 a 代表常量 121;const b=12;,其中数据类型可以缺省,默认为整型;enum ca1,a2;定义了个枚举类型 enum c,a1,a2 为枚举元素,在C 编译时,对枚举元
22、素按常量处理,它们的值按定义顺序依次为 0,1。因此它们的字节数均为 2,2,2。4.设文件指针 fp 已定义,执行语句 fp=fopen(“file“,“w“);后,以下针对文本文件 file 操作叙述的选项中正确的是_。(分数:2.00)A.只能写不能读 B.写操作结束后可以从头开始读C.可以在原有内容后追加写D.可以随意读和写解析:解析 本题考查文件操作函数 fopen()的基础知识。以“w”方式打开文件,只能写不能读,故选项 A 正确。5.设有定义:int a10=0,1,2,3,4,5,6,7,8,9,*p=a,i;,若 0i9,则对 a 数组元素的引用错误的是_。(分数:1.00)
23、A.a10 B.*( ch=“A“+“5“-“3“; printf(“%d, %c/n“, ch, ch); 程序的输出结果是(分数:2.00)A.67,C B.B,CC.C,DD.不确定的值解析:7.在 C 语言中,只有在使用时才占用内存单元的变量,其存储类型是(分数:2.00)A.auto 和 register B.extern 和 registerC.auto 和 staticD.static 和 register解析:解析 在 C 语言中只有自动变量和寄存器变量在使用时才占用内存单元。8.在 C 语言中,不适用于局部变量的存储类说明符是 _(分数:1.00)A.autoB.regist
24、erC.staticD.extern 解析:9.以下选项中表示一个合法的常量是(说明:符号表示空格)_。(分数:1.00)A.999B.0Xab C.123E0.2D.2.7e解析:解析 当用指数形式表示浮点数据时,E 的前后都要有数据,并且 E 的后面数要为整数。10.有以下程序: #includestdio.h int a=1; int f(int c) static int a=2; c=c+1; return(a+)+c; main() int i, k=0; for(i=0; i2; i+)int a=3; k+=f(a); k+=a; printf(“%d/n“, k); 程序运行
25、结果是_。(分数:2.50)A.14 B.15C.16D.17解析:解析 在主函数中,k 的初值为 0,首先调用函数 f(3),返回值为 6,k 的值变为 6,而函数 int fun(int c)中的局部静态变量 a 等于 3。第二次调用函数 f(3)时,返回值为 7,所以 k=6+7=13。退出循环语句,k 再加上全局变量 a 的值 1,其最终的值为 14。11.若已包括头文件string.h且已有定义 char s118,s2=“ABCDE“和 int i,现要将字符串 “ABCDE“赋给 s1,下列语句错误的是 _(分数:1.00)A.strcpy(s1,s2)B.strcpy(s1,“
26、ABCDE“);C.s1=“ABCDE“; D.for(i=0;i6;i+)s1i=s2i;解析:解析 数组名 s1 是代表 s1 数组首地址的地址常量,而不是变量,因为“=”左边不能出现常量, 因此 sl=“ABCDE“的方法是错误的。12.若有以下程序: #include stdio.h void f(int n); main() void f(int n); f(5); void f(int n) printf(“% d/n“, n); 则以下叙述中,不正确的是_。(分数:1.00)A.若在主函数中对函数 f()进行说明,则只能在主函数中正确调用函数 f()B.若在主函数前对函数 f()
27、进行说明,则在主函数和其他函数中都可以正确调用 f()C.对于以上程序,编译时系统会报错,提示对 f()函数重复说明 D.函数 f()无返回值,所以可用 void 将其类型定义为无值型解析:解析 C 语言规定,在一个函数中调用另一个函数(即被调用函数)需要具备的条件有:首先被调用的函数必须是已经存在的函数(是库函数或用户自己定义的函数);如果使用库函数,一般还应该在本文件开头用“#include“命令;如果使用自定义函数,而且该函数与调用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数作声明。13.以下涉及字符串数组、字符指针的程序片段,没有编译错误的是_。(分数:1.00)A.c
28、har line;line=“=“:B.char *name10,*str;name=“Hello World“;C.char str110,str210=“prog.c“;str1=str2;D.char name10,*str=“Hello World“; 解析:解析 C 语言中,字符指针变量可以直接使用字符串赋值,而字符数组不能直接使用字符串或字符数组赋值,选项 A、B、C 错误,选项 D 正确。故本题答案为 D 选项。14.下列程序执行后的输出结果是_。 void func(int*a,int b) b0=*a+6; main() int a,b5=0; a=0;b0=3; func(
29、 printf(“%d/n“,b0); (分数:2.00)A.6 B.7C.8D.9解析:15.有以下程序 #includestdio.h int f(int n) int t=0,a=5; if(n/2)int a=6;t+=a+; elseint a=7;t+=a+; return t+a+; main() int s=0,i=0; for(;i2;i+)s+=fi); printf(“%d/n“,s); 程序运行后的输出结果是_。(分数:1.00)A.24 B.28C.32D.36解析:解析 第一次循环返回 12,第二次循环返回 12,累加结果为 24。16.若有如下说明,且 int 类
30、型占两个字节,则正确的叙述为_。 struct st int a; int b2; a;(分数:2.50)A.结构体变量 a 与结构体成员 a 同名,定义是合法的 B.程序只在执行到该结构体时才为结构体 st 分配存储单元C.程序运行时为结构体 st 分配 8 字节存储单元D.类型名 struct st 可以通过 extern 关键字提前引用解析:解析 本题主要考查结构体的用法:结构体变量 a 与结构体成员 a 同名,定义合法;在程序编译的时候结构的定义并不会使系统为该结构分配内存空间,只有在说明结构变量时才分配内存空间;int a 占 2 个字节,int b2占 4 个字节,共 6 个;类型
31、名“struct st”不可以通过 extern 关键字提前引用。17.若有以下程序 #includestdio.h #define S(x) x*x #define T(x)S(x)*S(x) main() int k=5, j=2; printf(“%d, %d/n“, S(k+j), T(k+j); 则程序的输出结果是_。(分数:2.00)A.17, 37 B.49, 2401C.17, 289D.49, 289解析:解析 S(k+j)展开后为 5+2*5+2 值为 17,T(k+j)展开后 5+2*5+2*5+2*5+2 值为 37,所以答案选择A。18.设有以下说明,则不正确的叙述是
32、_。 union un int a; char b; float c; arr;(分数:2.50)A.arr 所占的内存长度等于成员 c 的长度B.arr 的地址和它的各成员的地址都是同一地址C.arr 可以作为函数参数 D.不能在定义 arr 时对它初始化解析:解析 本题主要考查联合体的内存使用:联合体所占用的内存空间为最长的成员所占用的空间,int 占 2 个字节,char 占 1 个字节,float 占 4 个字节,所以 arr 所占的内存长度等于成员 c 的长度;arr 的地址和它的各成员的地址都是同一地址;不能直接对 arr 赋值,即不能在定义 arr 时对它初始化;arr 也不可以
33、作为函数参数。19.有以下程序: #includestdio.h main() short c=124; c=c_; printf(“%d/n“, c); 若要使程序的运行结果为 248,应在横线处填入的是_。(分数:1.00)A.2B.|248C. char *a; a=s; for(i=0,j=0;ai!=“/0“;i+) if(ai=“0“j+;) sj=“/0“; main() char*s=“aa89gggh“;del(s);printf(“/n%s“,s);(分数:2.50)A.aaB.89 C.ggghD.aa89gggh解析:22.以下程序的输出结果是_。 main() cha
34、r st20=“hello/0/t/“; printf(“%d%d/n“,strlen(st), sizeof(st); (分数:1.00)A.9 9B.5 20 C.13 20D.20 20解析:解析 从题目中可知,“/0“、“/t“、“/“分别为一个字符,而 sizeof 是求字节个数的函数,其中包括“/0“占的字节;strlen 函数是求数组长度的函数,其以“/0“结束,因此 strlen 的值为 5,sizeof 的值为 20。23.下列叙述中,正确的是_。(分数:1.00)A.线性链表是线性表的链式存储结构 B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根结点的二叉树是线性
35、结构解析:解析 根据数据结构中各数据元素之间前后关系的复杂程度,可将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:有且只有一个根结点;每个结点最多有一个前驱,也最多有一个后继。则称该数据结构为线性结构,也叫做线性表。若不满足上述条件,则称之为非线性结构。线性表、栈、队列和线性链表都是线性结构,而二叉树是非线性结构。24.有如下程序: #includestdio.h struct pair int first,second; ; struct pair get_min_max(int*array,int len) int i; struct pair res
36、; res.first=array0; res.second=array0; for(i=1;ilen;i+) if(arrayires.first) res.first=arrayi; if(arrayires.second) res.second=arrayi; return res; main() int array5=9,1,3,4; struet pair min_max=get_min_max(array,5) printf(“min=%d,max=%din“,min_max.first,min_max.second); 程序运行后的输出结果是_。(分数:1.00)A.min=1,
37、max=9B.min=0,max=9 C.min=1,max=4D.min=0,max=4解析:解析 在对数组进行初始化时,如果在说明数组时给出了长度,但没有给所有的元素赋予初始值,那么 c 语言将自动对余下的元素赋初值 0,则 array5=9,1,3,4,0。程序的执行过程为:调用函数get_min_max(array,5),将数组 array 的首地址传入函数,定义结构体变量 res,并为其成员赋值。for循环查找数组 array 的最小值 0,将其赋值给 res 的成员 firsf,查找数组最大值 9,并将其赋值给 res的成员 second。最后返回结构体变量 res,则 min_m
38、ax=res。输出 min_max.first=0,min_max.second=9。25.有以下程序片段: y=-1; if(x!=0) if(x0) y=1; else y=0; 其能正确表示的数学函数关系是 A B C D (分数:2.00)A.B.C. D.解析:26.设有以下定义和语句 int a32=1,2,3,4,5,6,*p3; p0=a1; 则*(p0+1)所代表的数组元素是(分数:1.00)A.a01B.a10C.a11 D.a12解析:解析 本题中首先定义了一个 3 行 2 列的数组 a,一个长度为 3 的指针数组 p,接着把地址 a1赋给 p0此时 p0为 a10的地址
39、,p0+1 为 a11的地址,故*(P0+1)代表的元素为 a11。27.以下叙述中错误的是( )。(分数:1.00)A.用户定义的函数中可以没有 return 语句B.用户定义的函数中可以有多个 return 语句,以便可以调用一次返回多个函数值 C.用户定义的函数中若没有 return 语句,则应当定义函数为 void 类型D.函数的 return 语句中可以没有表达式解析:解析 本题考查的是 return 语句。用户定义的函数有两种:一种是没有返回值的函数,函数类型必须为 void;另一种是有返回值的函数。在没有返回值的函数中可以没有 return 语句,所以选项 A)和 C)是正确的;
40、在没有返回值的函数中如果有 return 语句,该语句必须不带任何表达式,所以选项 D)也是正确的;用户定义的函数可以有多个 return 语句,但是只能返回一个函数值,所以应该选择 B)。28.C 语言主要是借助_来实现程序模块化。(分数:1.00)A.定义函数 B.定义常量和外部变量C.三种基本结构语句D.丰富的数据类型解析:解析 C 语言是由函数组成的,函数是 C 语言的基本单位。所以可以说 C 语言主要是借助定义函数来实现程序模块化。29.以下关于 switch 语句的叙述中正确的是_。(分数:1.00)A.所有 case 的标号都应当是连续的B.每个 case 语句标号后面可以没有
41、break 语句 C.char 型常量不能做 case 的标号使用D.default 必须放在全部 case 的最后解析:解析 switch 语句中,case 标号不需要是连续的,选项 A 错误;每个 case 语句标号后面可以没有 break 语句,此时程序会接着执行下一个 case 语句,选项 B 正确;case 标号后必须是常量表达式,可以是整型、char 型、枚举型或常量表达式,选项 C 错误;default 标号可以出现在 switch 语句体中任何标号位置上,选项 D 错误。故本题答案为 B 选项。30.若有以下定义: char s100=“string“; 则下述函数调用中,_是
42、错误的。(分数:1.00)A.strlen(strcpy(s, “Hello“)B.strcat(s,strcpy(s1, “s“);C.puts(puts(“Tom“) D.! strcmp (“ “, s)解析:解析 本题说明了字符串操作类函数的返回指针特性。一些典型的字符串操作函数返回值是字符指针,如 strcpy(s1, s2)和 strcat(s1, s2),这两个函数都返回 s1 的值。因此,选项 A、选项 B 正确。选项 D 中的连续两个“ “组成空字符串,调用正确。选项 C 中的错误来自函数 puts(),该函数的返回值是整数而不是字符串,因此,外层的函数调用使用了错误的实参数
43、。31.若有定义语句“int a,b;double x;”,则下列选项中没有错误的是_。(分数:1.00)A.switch(x%2) case 0: a+;break;case 1:b+; break;default:a+;b+;B.switch(int) x/2.0) case 0: a+;break;case 1:b+; break;default:a+; b+;C.switch(int) x%2) case 0: a+;break;case 1:b+;break;default:a+;b+; D.switch(int) (x)%2) case 0.0: a+;break;case 1.0
44、:b+;break;default:a+;b+;解析:解析 C 语言中,switch 语句中的表达式和 case 表达式都不能是浮点类型。所以选 C。32.若有以下定义和语句 ( ) int u010,vOx10,w10; printf(“%d,%d%d/n“,u,v,w); 则输出结果是(分数:1.00)A.8,16,10 B.10,10,10C.8,8,10D.8,10,10解析:33.逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是_。(分数:1.00)A.关系模型 B.谓词模型C.物理模型D.实体联系模型解析:解析 逻辑模型是面向数据库系统的模型,着重于在数据库系统一级的实现。成熟
45、并大量使用的逻辑模型有层次模型、网状模型、关系模型和面向对象模型等。34.有以下程序 #includestdio.h main() int x,y,z; x=y=1; z=x+,y+,+y; printf(“%d,%d,%d/n“,x,y,z); 程序运行后的输出结果是_。(分数:1.00)A.2,3,1 B.2,3,2C.2,3,3D.2,2,1解析:解析 对于表达式“z=x+,y+,+y;”,因为赋值运算符的优先级高于逗号运算符的优先级,所以可以将上式改成“(z=x+),(y+),(+y)”。然后从左向右先计算表达式 z=x+,因为 x+先使用后自增,所以 z 的值为 1,x 的值为 2。
46、再计算逗号表达式第二个表达式 y+,此时 y 的值为,y+的值为。最后计算第三个表达式+y,y 的值为 3。故本题答案为 A。35.以下叙述中错误的是_。(分数:2.00)A.C 程序对预处理命令行的处理是在程序执行的过程中进行的 B.预处理命令行的最后不能以分号表示结束C.#define MAX 是合法的宏定义命令行D.在程序中凡是以”#”开始的语句行都是预处理命令行解析:36.C 源程序中不能表示的数制是_。(分数:1.00)A.十六进制B.八进制C.十进制D.二进制 解析:解析 在 C 语言中整型常量可以用十进制、八进制和十六进制等形式表示,但不包括二进制,所以选择 D 选项。37.下列叙述中错误的是_。(分数:1.00)A.算法的时间复杂度与问题规模无关 B.算法的时间复杂度与计算机系统无关C.算法的时间复杂度与空间复杂度没有必然的联系D.算法的空间复杂度与算法运行输出结果的数据量无关解析:解析 算法的时间复杂度是指执行算法所需要的计算机工作量,而算法的计算机工作量是用算法所执行的基本运算次数来度量的,算法所执行的基本运算次数和问题的规模有关。算法的空间复