1、二级 C 语言分类模拟题 540 及答案解析(总分:54.50,做题时间:90 分钟)一、选择题(总题数:40,分数:54.50)1.若有定义:int a,b,c;以下程序段的输出结果是_。 a=11;b=3;c=0; printf(“%d/n“,c=(a/b,a%b);(分数:1.00)A.2B.0C.3D.12.C 语言中,下列不合法的字符常量是_。(分数:1.00)A.“/xff“B.“/65“C.“ if(a+ else printf(“F“); printf(“a=%d,b=%d/n“,a,b); 程序运行后的输出结果是_。(分数:1.00)A.Ta=1,b=2B.Fa=0,b=2C
2、.Fa=1,b=1D.Ta=0,b=15.在 C 语言中引用数组元素时,其数组下标的数据类型只能是 _ 。(分数:1.00)A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式6.以下选项中关于程序模块化的叙述错误的是_。(分数:1.00)A.把程序分成若干相对独立的模块,可便于编码和调试B.把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块C.可采用自低向上、逐步细化的设计方法把若干独立模块组装成所要求的程序D.可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序7.有以下程序: #include stdio.h int fun() static
3、int x=1; x*=2; return x; main( ) int i,s=1; for(i=1; i=3; i+ +) s*=fun(); printf(“%d/n“,s); 程序运行后的输出结果是_。(分数:2.50)A.10B.30C.0D.648.以下说法不正确的是_。(分数:2.00)A.C 程序是以函数为基本单位的,整个程序由函数组成B.C 语言程序的一条语句可以写在不同的行上C.C 程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写D.C 程序的每个语句都以分号结束9.有以下程序: #includestdio.h #includestdlib.h void f
4、un(int*p1,int*p2,int*s) s=(int*)calloc(1,sizeof(int); *s=*p1+*p2; free(s); main() int a2=1,2,b2=140,501,*q=a; fun(a,b,q); printf(“%d/n“,*q); 程序运行后的输出结果是_。(分数:1.00)A.42B.41C.1D.010.有下列程序: #includestdio.h main() int a=6,i; for(i=1;i=3;i+) if(a5)break; if(a%2)a+=2;continue; a=a+4; printf(“%d,%d“,i,a);
5、程序执行后的输出结果是_。(分数:1.00)A.4,9B.3,18C.4,18D.4,211.下列说法正确的是_。(分数:1.00)A.条件运算符是单目运算符B.条件运算符是双目运算符,因为它有 2 个运算符号C.条件运算符是三目运算符,因为它有 3 个运算对象D.条件运算符的优先级高于赋值运算符和逻辑运算符12.若有定义: float x=1.5; int a=1,b=3,c=2; 则正确的 switch 语句是_。(分数:2.50)A.switch(a+b)case 1:printf(“*/n“);case 2+1:printf(“*/n“);B.switch(int)x);case 1:
6、 printf(“*/n“);case 2: printf(“*/n“);C.switch(x)case 1.0:printf(“*/n“);case 2.0:printf(“*/n);D.switch(a+b)case 1: printf(“*/n“);case c: printf(“*/n“);13.有以下程序: #includestdio.h main() int k=5; while(-k) printf(“%d“,k-=3); printf(“/n“); 执行后的输出结果是_。(分数:2.50)A.1B.2C.4D.死循环14.有以下程序: #includestdio.h ain()
7、 int a=3; a+=a-=a*a; printf(“%d/n“,a); 程序运行后的输出结果是_。(分数:1.00)A.0B.9C.3D.-1215.在软件开发中,需求分析阶段产生的主要文档是_。(分数:1.00)A.可行性分析报告B.软件需求规格说明书C.概要设计说明书D.集成测试计划16.以下叙述正确的是 _ 。(分数:1.00)A.在 C 语言程序中,main 函数必须位于程序的最前面B.C 语言程序的每行中只能写一条语句C.C 语言本身没有输入输出语句D.在对一个 C 语言程序进行编译的过程,可发现注释中的拼写错误17.有三个关系 R、S 和 T 如下: R A B C a 1
8、2 b 2 1 c 3 1 S A D c 4 T A B C D c 3 1 4 则由关系 R 和 S 得到关系 T 的操作是_。(分数:1.00)A.自然连接B交C.投影D并18.表达式 3.6-5/2+1.2+5%2 的值是_。(分数:1.00)A.3.8B.4.8C.3.3D.4.319.以下选项中表示一个合法的常量是(说明:符号口表示空格)_。(分数:1.00)A.999B.0XabC.123E0.2D.2.7e20.概要设计中要完成的任务是_。(分数:2.50)A.系统结构和数据结构的设计B.系统结构和过程的设计C.过程和接口的设计D.数据结构和过程的设计21.设有定义: stru
9、ct complex int real.unreal; data1=1,8,data2; 则以下赋值语句中错误的是_。(分数:2.00)A.data2=data1;B.data2=(2,6);C.data2.real=data1.real;D.data2.real=data1.unreal;22.已知字符A的 ASCII 代码值是 65,字符变量 c1 的值是A,c2 的值是D。则执行语句printf(“%d,%d“,c1,c2-2);的输出结果是_。(分数:1.00)A.65,68B.A,68C.A,BD.65,6623.以下选项中叙述错误的是_。(分数:2.00)A.在 C 程序的同一函数
10、中,各复合语句内可以定义变量,其作用域仅限本复合语句内B.C 程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值C.C 程序函数中定义的自动变量,系统不自动赋确定的初值D.C 程序函数的形参不可以说明为 static 型变量24.以下程序的执行结果是_。 #include stdio.h union un int i; char c2; main() union un x; x.c0=10; x.c1=1; printf(“/n% d“, x.i); (分数:2.50)A.266B.11C.265D.13825.逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是_。(分数:1.0
11、0)A.关系模型B.谓词模型C.物理模型D.实体联系模型26.对两个数组 a 和 b 进行下列初始化: char m=“1234567“; char n=“1“, “2“, “3“, “4, “5“, “6“, “7“; 则下列叙述正确的是_。(分数:2.50)A.数组 m 与数组 n 完全相同B.数组 m 与数组 n 长度相同C.数组 m 比数组 n 长 1D.数组 m 与数组 n 中都存放字符串27.有以下程序: #include stdio.h int fun(int a,int b) static int m=0, i=2; i+=m+1; m=i+a+b; return m; mai
12、n() int k=4, m=1, p; p = fun(k,m); printf(“%d,“ .p); p = fun(k,in); printf(“%d/n“ ,p); 程序运行后的输出结果是_。(分数:1.00)A.8,17B.8,16C.8,8D.8,2028.有以下程序: # include stdio.h # define N 3 void fun(int aN,int b) int i,j; for(i=0;iN;i+) bi=ai0; for(j=i;jN;j+) if(biaij) bi=aij; main() int XNN=1,2,3,4,5,6,7,8,9, yN,i;
13、 fun(x,y); for(i=0;iN;i+) printf(“%d,“,yi); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.2,4,8,B.3,6,9,C.3,5,7,D.1,3,5,29.有以下程序 #include stdio.h 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“); 程序的运行结果是_。(分数:1.00)A.C
14、D E FB.A B E FC.A B C DD.C D A B30.以下能够实现计算 5!的程序段是_。(分数:1.00)A.int fac=1,k=0;dok+;fac*=k;while(k5);B.int fac=0,k=1;dofac*=k;k+;while(k5);C.int fac=1,k=1;dok+;fac*=k;while(k=5);D.int fac=1,k=0;dofac*=k;k+;while(k5);31.以下对 C 语言函数的叙述中正确的是_。(分数:1.00)A.调用函数时,只能把实参的值传给形参,形参的值不能传给实参B.函数既能嵌套定义,又能递归定义C.函数必须
15、有返回值,否则不能使用D.程序中有调用关系的所有函数必须放在同一个源程序中32.以下程序段中的变量已定义为 int 类型,则 sum = pad = 5; pAd = sum+, pAd+, +pAd; printf(“%d/n“, pad); 程序段的输出结果是_。(分数:1.00)A.6B.4C.5D.733.下列叙述中正确的是_。(分数:1.00)A.为了建立一个关系,首先要构造数据的逻辑关系B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项C.一个关系的属性名表称为关系模式D.一个关系可以包括多个二维表34.不合法的十六进制数是(分数:2.00)A.oxffB.0XabcC.
16、0x11D.0x1935.以下叙述中正确的是_。(分数:1.00)A.在一个程序中,允许使用任意数量的#include 命令行B.在包含文件中,不得再包含其他文件C.#include 命令行不能出现在程序文件的中间D.虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接36.若有定义:“double a=22;int i=0,k=18;”,则不符合 C 语言规定的赋值语句是 _ 。(分数:1.00)A.a=a+,i+;B.i=(a+k)=(i+k);C.i=a%11;D.i=!a;37.有以下程序 #includestdio.h main() int a=1,b=3,c=5; i
17、nt*p1= *p=*p1*(*p2); printf(“%d/n“,c); 执行后的输出结果是_。(分数:1.00)A.4B.2C.1D.338.执行语句“for(i=1; i+4; );”后,变量 i 的值是_。(分数:2.50)A.3B.4C.5D.不定39.有以下程序: #includestdio.h main() char c6; int i=0; for(;i6;ci=getchar(),i+); for(i=O;i6;i+)putchar(ci); printf(“/n“); 如果从键盘上输入: ab回车 c回车 def回车 则输出结果为_。(分数:1.00)AaBaC.abD.
18、abcdefb b cc c dd def40.有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x 的值不为 3 的是(分数:1.00)A.if (ca) x=1;else if (ba) x=2;else x=3;B.if (a3) x=3;else if (ba) x=2;else x=1;C.if (aD.if (ab) x=b;if (bc) x=c;if (ca) x=a;二级 C 语言分类模拟题 540 答案解析(总分:54.50,做题时间:90 分钟)一、选择题(总题数:40,分数:54.50)1.若有定义:int a,b,c;以下程序段的输出结果是
19、_。 a=11;b=3;c=0; printf(“%d/n“,c=(a/b,a%b);(分数:1.00)A.2 B.0C.3D.1解析:解析 C 语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式的值作为整个逗号表达式的值。因此变量 c 的值为 a%b 即 11%3=2。故答案为A 选项。2.C 语言中,下列不合法的字符常量是_。(分数:1.00)A.“/xff
20、“B.“/65“C.“ if(a+ else printf(“F“); printf(“a=%d,b=%d/n“,a,b); 程序运行后的输出结果是_。(分数:1.00)A.Ta=1,b=2B.Fa=0,b=2C.Fa=1,b=1 D.Ta=0,b=1解析:解析 程序中判断 if 条件是否成立,a+先取值为 0,则(a+ x*=2; return x; main( ) int i,s=1; for(i=1; i=3; i+ +) s*=fun(); printf(“%d/n“,s); 程序运行后的输出结果是_。(分数:2.50)A.10B.30C.0D.64 解析:解析 在本题中,静态局部变量
21、 x 在静态存储区内分配存储单元,在程序整个运行期间都不释放。所以第一次循环 s 的值为 2,在第二次循环中,返回的 x 的值为 4,所以 s 的值为 8,第三次循环,返回的 x 的值为 8,所以 s 的值为 64。8.以下说法不正确的是_。(分数:2.00)A.C 程序是以函数为基本单位的,整个程序由函数组成B.C 语言程序的一条语句可以写在不同的行上C.C 程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写 D.C 程序的每个语句都以分号结束解析:9.有以下程序: #includestdio.h #includestdlib.h void fun(int*p1,int*p2,
22、int*s) s=(int*)calloc(1,sizeof(int); *s=*p1+*p2; free(s); main() int a2=1,2,b2=140,501,*q=a; fun(a,b,q); printf(“%d/n“,*q); 程序运行后的输出结果是_。(分数:1.00)A.42B.41C.1 D.0解析:解析 本题考查把数组名作为函数参数。执行 fun 函数后,s 的值并没有发生变化,仍然是指向a,所以输出结果为 1,选项 C 正确。10.有下列程序: #includestdio.h main() int a=6,i; for(i=1;i=3;i+) if(a5)brea
23、k; if(a%2)a+=2;continue; a=a+4; printf(“%d,%d“,i,a); 程序执行后的输出结果是_。(分数:1.00)A.4,9B.3,18C.4,18 D.4,2解析:解析 main()函数中,a 的初值为 6,for 循环首先判断 i 的值是否小于 5,若小于 5。执行 break语句终止循环;若不小于 5,接着判断 a 的奇偶性,若 a 是奇数,将 a 自增 2 后执行 continue 语句,执行下一轮循环;若 a 是偶数,将 a 自增 4;可见无论程序如何执行,a 的值只会增不会减。所以 for 循环过程中,两个 if 语句都不会执行,每次都是将 a
24、自增 4,又由 i 取值可以是 1,2,3 知变量 a 一共自增3 次,最终 i 的值为 4,a 的值为 18。故本题答案为 C 选项。11.下列说法正确的是_。(分数:1.00)A.条件运算符是单目运算符B.条件运算符是双目运算符,因为它有 2 个运算符号C.条件运算符是三目运算符,因为它有 3 个运算对象 D.条件运算符的优先级高于赋值运算符和逻辑运算符解析:解析 本题比较全面地考查了条件运算符的基本知识点,选项 C 的说法是正确的。12.若有定义: float x=1.5; int a=1,b=3,c=2; 则正确的 switch 语句是_。(分数:2.50)A.switch(a+b)c
25、ase 1:printf(“*/n“);case 2+1:printf(“*/n“); B.switch(int)x);case 1: printf(“*/n“);case 2: printf(“*/n“);C.switch(x)case 1.0:printf(“*/n“);case 2.0:printf(“*/n);D.switch(a+b)case 1: printf(“*/n“);case c: printf(“*/n“);解析:解析 B 选项的“switch(int)x);”语句中不应该有最后的分号。switch(expr1)中的 expr1 不能用浮点类型或 long 类型,也不能为
26、一个字符串,因此 C 错误。case 后面只能是常量表达式,因此 D 错误。13.有以下程序: #includestdio.h main() int k=5; while(-k) printf(“%d“,k-=3); printf(“/n“); 执行后的输出结果是_。(分数:2.50)A.1 B.2C.4D.死循环解析:解析 -k 先自减再使用,所以第一次判断条件即为 while(4),条件为真执行打印 k 的值 k=4-3,结果为 1,第二次判断条件即为 while(0),条件为假,结束循环,打印回车换行符,所以选择 A 选项。14.有以下程序: #includestdio.h ain()
27、int a=3; a+=a-=a*a; printf(“%d/n“,a); 程序运行后的输出结果是_。(分数:1.00)A.0B.9C.3D.-12 解析:解析 首先计算 a*a 结果为 9,执行 a=a-9,a 的值为-6,然后执行 a+=a,即 a=a+a=-6+(-6),所以值为-12。15.在软件开发中,需求分析阶段产生的主要文档是_。(分数:1.00)A.可行性分析报告B.软件需求规格说明书 C.概要设计说明书D.集成测试计划解析:解析 A 错误,可行性分析阶段产生可行性分析报告。C 错误,总体设计阶段产生概要设计说明书。D 错误,集成测试计划是在概要设计阶段编写的文档。B 正确,需
28、求规格说明书是需求分析阶段产生的主要文档,是后续工作如设计、编码等需要的重要参考文档。16.以下叙述正确的是 _ 。(分数:1.00)A.在 C 语言程序中,main 函数必须位于程序的最前面B.C 语言程序的每行中只能写一条语句C.C 语言本身没有输入输出语句 D.在对一个 C 语言程序进行编译的过程,可发现注释中的拼写错误解析:解析 考查 C 语言的几个基本概念。 解题要点 选项 A)中,main 函数可以放在程序的任何位置,不一定要放在程序的最前面,不论 main 函数放在什么位置,程序的执行却总是从 main 函数开始的;选项 B)中,因为 C 语言的语法限制不严格,所以可以多条语句放
29、在同一行上;选项 C)是正确的,C 语言中没有专门的输入输出语句,输入输出是通过使用输入输出库函数来实现的;选项 D)是错误的,因为 C 语言中的注释是不会被编译的。 考点链接 掌握算法的相关特性。17.有三个关系 R、S 和 T 如下: R A B C a 1 2 b 2 1 c 3 1 S A D c 4 T A B C D c 3 1 4 则由关系 R 和 S 得到关系 T 的操作是_。(分数:1.00)A.自然连接 B交C.投影D并解析:解析 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,因此根据 T 中元组可以判断关系
30、 R 和 S 做的是自然连接操作,答案为A。18.表达式 3.6-5/2+1.2+5%2 的值是_。(分数:1.00)A.3.8 B.4.8C.3.3D.4.3解析:解析 5/2 值为 2,5%2 值为 1,所以 3.6-2+1.2+1 值为 3.8。19.以下选项中表示一个合法的常量是(说明:符号口表示空格)_。(分数:1.00)A.999B.0Xab C.123E0.2D.2.7e解析:解析 当用指数形式表示浮点数据时,E 的前后都要有数据,并且 E 的后面数要为整数。20.概要设计中要完成的任务是_。(分数:2.50)A.系统结构和数据结构的设计 B.系统结构和过程的设计C.过程和接口的
31、设计D.数据结构和过程的设计解析:解析 在 C 语言中软件概要设计的基本任务是设计软件系统结构、数据结构及数据库设计、编写概要设计文档和概要设计文档评审。21.设有定义: struct complex int real.unreal; data1=1,8,data2; 则以下赋值语句中错误的是_。(分数:2.00)A.data2=data1;B.data2=(2,6); C.data2.real=data1.real;D.data2.real=data1.unreal;解析:解析 选项 B 需要强制转换数据类型,应改为(struct complex)2,6;。22.已知字符A的 ASCII 代
32、码值是 65,字符变量 c1 的值是A,c2 的值是D。则执行语句printf(“%d,%d“,c1,c2-2);的输出结果是_。(分数:1.00)A.65,68B.A,68C.A,BD.65,66 解析:解析 打印时以%d 整型格式打印输出,所以字符标量 c1 的值打印出来就是 65,从 c2-2 的值打印出来就是 68-2,即 66。所以选择 D。23.以下选项中叙述错误的是_。(分数:2.00)A.在 C 程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内B.C 程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值 C.C 程序函数中定义的自动变量,系统不自动
33、赋确定的初值D.C 程序函数的形参不可以说明为 static 型变量解析:解析 静态变量只赋值一次,下一次调用,还是使用上次遗留的值。答案选择 B。24.以下程序的执行结果是_。 #include stdio.h union un int i; char c2; main() union un x; x.c0=10; x.c1=1; printf(“/n% d“, x.i); (分数:2.50)A.266 B.11C.265D.138解析:解析 此题考查共用体的特征。int 类型变量 i 和字符数组 c 共用两个字节的存储单元,通常 c0位于低字节,c1位于高字节。因此,x.i=x.c1*25
34、6+x.c0=266,故选项 A 正确。25.逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是_。(分数:1.00)A.关系模型 B.谓词模型C.物理模型D.实体联系模型解析:解析 逻辑模型是面向数据库系统的模型,着重于在数据库系统一级的实现。成熟并大量使用的逻辑模型有层次模型、网状模型、关系模型和面向对象模型等。26.对两个数组 a 和 b 进行下列初始化: char m=“1234567“; char n=“1“, “2“, “3“, “4, “5“, “6“, “7“; 则下列叙述正确的是_。(分数:2.50)A.数组 m 与数组 n 完全相同B.数组 m 与数组 n 长度相同C.数
35、组 m 比数组 n 长 1 D.数组 m 与数组 n 中都存放字符串解析:解析 本题考查字符串数组和字符数组赋值的区别。“char m=“1234567“;”定义一个字符型数组并初始化,C 语言规定,在字符串的末尾自动加上串结束标记“/0“,因此数组 m 的长度是 8;而数组n 是按照字符方式对数组初始化,系统不加上串结束标记“/0“,因此数组 n 的长度是 7。27.有以下程序: #include stdio.h int fun(int a,int b) static int m=0, i=2; i+=m+1; m=i+a+b; return m; main() int k=4, m=1,
36、p; p = fun(k,m); printf(“%d,“ .p); p = fun(k,in); printf(“%d/n“ ,p); 程序运行后的输出结果是_。(分数:1.00)A.8,17 B.8,16C.8,8D.8,20解析:解析 static(变量又称为静态变量,编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。若定义时未赋初值,在编译时,系统自动赋初值为 0;若定义时赋初值,则仅在编译时赋初值一次,程序运行后不再给变量赋初值。程序执行过程为:调用函数,m=
37、0,i=2,i=i+m+1=3,m=8,返回 p=8,再次调用函数,m=8,i=3,i=i+m+1=12,m=12+4+1=17,返回p=17,故 A 选项正确。28.有以下程序: # include stdio.h # define N 3 void fun(int aN,int b) int i,j; for(i=0;iN;i+) bi=ai0; for(j=i;jN;j+) if(biaij) bi=aij; main() int XNN=1,2,3,4,5,6,7,8,9, yN,i; fun(x,y); for(i=0;iN;i+) printf(“%d,“,yi); printf(
38、“/n“); 程序运行后的输出结果是_。(分数:1.00)A.2,4,8,B.3,6,9, C.3,5,7,D.1,3,5,解析:解析 fun 函数功能是把数组 a 的每一行的最大值赋给 b,a 的第一行的最大值是 3,第二行的最大值是 6,第三行的最大值是 9,所以答案是 3,6,9。29.有以下程序 #include stdio.h 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(“
39、E“,“F“); 程序的运行结果是_。(分数:1.00)A.C D E F B.A B E FC.A B C DD.C D A B解析:解析 调用 fun1 函数将全局变量 a 和 b 赋值为C和D,然后输出全局变量 a 和 b,最后调用 fun2 输出局部变量 a 和 b 的值E和F。答案选择 A。30.以下能够实现计算 5!的程序段是_。(分数:1.00)A.int fac=1,k=0;dok+;fac*=k;while(k5); B.int fac=0,k=1;dofac*=k;k+;while(k5);C.int fac=1,k=1;dok+;fac*=k;while(k=5);D.i
40、nt fac=1,k=0;dofac*=k;k+;while(k5);解析:解析 dowhile 循环语句一般形式为:do循环体while(表达式),执行过程为:首先执行循环体,之后判断表达式,表达式成立(非 0)则再一次执行循环体,不成立(0)则退出循环。A 项,k=1,fac=1*1,判断 k5,条件成立进行下一次循环,直到 k=5,fac=1*2*3*4*5,k5 不成立退出循环,实现计算 5!。B 项,fac 从 0 开始,做乘法一直都是 0,无法实现 5!。C 项,k=2,fac=1*2,循环条件成立,直到 k=6,fac=1*2*3*4*5*6 才因循环条件不成立退出循环,实现 6
41、!。D 项:k=0,fac=1*0=0,之后做乘法一直为 0,无法实现 5!。31.以下对 C 语言函数的叙述中正确的是_。(分数:1.00)A.调用函数时,只能把实参的值传给形参,形参的值不能传给实参 B.函数既能嵌套定义,又能递归定义C.函数必须有返回值,否则不能使用D.程序中有调用关系的所有函数必须放在同一个源程序中解析:解析 C 语言不能嵌套定义函数,能递归定义函数,因此 B 选项错误;函数可以没有返回值,没有返回值的函数返回类型为 void,C 选项错误;程序有调用关系的所有函数可以不放在同一源程序中,D选项错误,答案为 A 选项。32.以下程序段中的变量已定义为 int 类型,则
42、sum = pad = 5; pAd = sum+, pAd+, +pAd; printf(“%d/n“, pad); 程序段的输出结果是_。(分数:1.00)A.6B.4C.5 D.7解析:解析 自增和自减运算符的两种用法:前置运算,运算符放在变量之前,规则是先使变量的值增(或减)1,然后以变化后表达式的值参与其他运算;后置运算,运算符放在变量之后,规则是变量先参与其他运算,然后再使变量的值增(或减)1。逗号表达式的计算过程是从左到右逐个求每个表达式的值,取最右边一个表达式的值作为该逗号表达式的值。逗号运算符的优先级低于赋值运算符。程序执行过程为:sum=5,pad=5;pAd=5,sum=
43、6,pAd=6,pAd=7。输出 pad,pad=5,故 C 选项正确。33.下列叙述中正确的是_。(分数:1.00)A.为了建立一个关系,首先要构造数据的逻辑关系 B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项C.一个关系的属性名表称为关系模式D.一个关系可以包括多个二维表解析:解析 元组分量的原子性要求二维表中元组的分量是不可分割的基本数据项。关系的框架称为关系模式。一个称为关系的二维表必须同时满足关系的 7 个性质。34.不合法的十六进制数是(分数:2.00)A.oxff B.0XabcC.0x11D.0x19解析:35.以下叙述中正确的是_。(分数:1.00)A.在一个程
44、序中,允许使用任意数量的#include 命令行 B.在包含文件中,不得再包含其他文件C.#include 命令行不能出现在程序文件的中间D.虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接解析:解析 本题考查预处理中文件包含的概念。包含文件中可以包含其他文件,故 B 选项错误;#include 可以出现在程序文件的中间,故 C 选项错误;包含文件被修改了,包含该文件的源程序必须重新进行编译和连接,故 D 选项错误。36.若有定义:“double a=22;int i=0,k=18;”,则不符合 C 语言规定的赋值语句是 _ 。(分数:1.00)A.a=a+,i+;B.i=(
45、a+k)=(i+k);C.i=a%11; D.i=!a;解析:解析 运算符%要求两个运算对象都为整型。选项 C 中 a 为 double 型,不符合要求。37.有以下程序 #includestdio.h main() int a=1,b=3,c=5; int*p1= *p=*p1*(*p2); printf(“%d/n“,c); 执行后的输出结果是_。(分数:1.00)A.4B.2C.1D.3 解析:解析 c 的值为 a 乘以 b 的值,为 3。所以答案选择 D。38.执行语句“for(i=1; i+4; );”后,变量 i 的值是_。(分数:2.50)A.3B.4C.5 D.不定解析:解析
46、for 循环结束时,i+的值应为 4,i 自加后此时应为 5,故选择 C 选项。39.有以下程序: #includestdio.h main() char c6; int i=0; for(;i6;ci=getchar(),i+); for(i=O;i6;i+)putchar(ci); printf(“/n“); 如果从键盘上输入: ab回车 c回车 def回车 则输出结果为_。(分数:1.00)AaBaC.ab D.abcdefb b cc c dd def解析:解析 1getchar():此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。 2putchar():此函数的作用是向终端输出一个字符,也可以输出控制字符。 本题在输入字符时,ab 和 c 后面的回车符分别赋给了 c2和 c4,所以,正确答案为 C。 40.有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x 的值不为 3 的是(分数:1.00)A.if (ca) x=1;else if (ba) x=2;else x=3;B.if (a3) x=3;else if (ba) x=2;else x=1;C.if (aD.if (ab