1、二级 C语言模拟 641及答案解析(总分:170.00,做题时间:90 分钟)一、选择题(总题数:40,分数:60.00)1.有以下程序 #include stdio.h void main() int a=1,b=0; printf(%d,“,b=(a+)+(a+); printf(“%d/n“,a+b); 程序运行后的输出结果是_。(分数:2.50)A.4,6B.2,5C.3,5D.2,62.有以下程序: #includestdio.h main() int a34=1,3,5,7,9,11,13,15,17,19,21,23,(*p)4=a,i,j,k=0; for(i=0;i3;i+)
2、 for(j=0;j2;j+)k=k+*(*(p+i)+j); printf(“%d/n“,k); 程序运行后的输出结果是_。(分数:1.00)A.108B.68C.99D.603.有以下程序: #includestdio.h main() char X=“A“; x=(x=“A“ printf(“%c/n“, x); 程序的输出结果是_。(分数:2.50)AABaCZDz4.若有正确定义语句: double x=5.16894; 语句 printf(“%f/n“, (int)(x*1000+0.5)/(double)1000);的输出结果是(分数:2.00)A.输出格式说明与输出项不匹配,输
3、出无定值B.5.170000C.5.168000D.5.1690005.有以下程序: #includestdio.h main() int x=1, y=0; if(!x)y+; else if(x=0) if(x)y+=2; else y+=3; printf(“%d/n“, y); 程序运行后的输出结果是_。(分数:1.00)A.3B.2C.1D.06.有三个关系 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并7.有以下
4、程序: #includestdio.h main() int c=0, k; for(k=1; k3; k+) switch(k) default: c+=k; case2: c+; break; case4: c+=2; break; printf(“%d/n“, c); 程序运行后的输出结果是_。(分数:1.00)A.3B.5C.7D.98.有以下程序: #includesdtio.h #includestring.h main() int i,len; char b=“Welcome you to Beijing!“; len=strlen(b); for(i=0;ilen;i+) if
5、(bi=“) strcpy(b,b+i+1); i=0; printf(“%s/n“,b); 程序运行后的输出结果是_。(分数:1.00)A.Beijing!B.toBeijing!C.WelcomeyoutoBeijing!D.youtoBeijing!9.下列选项中不属于结构化程序设计原则的是_。(分数:1.00)A.可封装B.自顶向下C.模块化D.逐步求精10.已定义以下函数: int fun(int *p) return *p; fun函数返回值是_。(分数:2.50)A.一个整数B.不确定的值C.形参 p中存放的值D.形参 p的地址值11.下列叙述中正确的是_。(分数:1.00)A.
6、栈是“先进先出”的线性表B.队列是“先进后出”的线性表C.循环队列是非线性结构D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构12.有以下程序: #includestdio.h int f(int n); main() int a=3, s; s=f(a); s=s+f(a); printf(“%d/n“, s); int f(int n) static int a=1; n+=a+; return n; 程序运行后的输出结果是_。(分数:1.00)A.7B.8C.9D.1013.以下选项中,能用作用户标识符的是_。(分数:2.00)A._0_B.8_8C.voidD.unsign
7、ed14.运算符内的数据类型只能是_。(分数:1.00)A.int和 charB.floatC.doubleD.char15.在数据库系统的内部结构体系中,索引属于_。(分数:2.50)A.模式B.内模式C.外模式D.概念模式16.有以下程序: #includestdio.h main() int m=1,n=2,*p= r=p; p=q; q=r; printf(“%d,%d,%d,%d/n“,m,n,*p,*q); 程序的运行结果是_。(分数:2.00)A.2,1,1,2B.1,2,1,2C.2,1,2,1D.1,2,2,117.若 a=3,b=4,c=5,d=6,则条件表达式 ab?a:
8、cd?c:d 的值是_。(分数:2.00)A.4B.3C.2D.118.数据库管理系统中负责数据模式定义的语言是_。(分数:1.00)A.数据定义语言B.数据管理语言C.模式描述语言D.数据控制语言19.下列说法不正确的是 _ 。(分数:2.00)A.调用函数时,实参可以是表达式B.调用函数时,实参与形参可以共用内存单元C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等D.调用函数时,实参与形参的类型必须一致20.以下叙述中正确的是_。(分数:1.00)A.只能在函数体内定义变量,其他地方不允许定义变量B.常量的类型不能从字面形式上区分,需要根据类型名来决定C.预定义的标识
9、符是 C语言关键字的一种,不能另作他用D.整型常量和实型常量都是数值型常量21.设 x=015,则 x=x017的值是_。(分数:2.50)A.00001111B.11111101C.00000010D.1100000022.对图书进行编目时,图书有如下属性:ISBN 书号,书名,作者,出版社,出版日期。能作为关键字的是_。(分数:1.00)A.ISBN书号B.书名C.作者,出版社D.出版社,出版日期23.数据库系统的三级模式不包括_。(分数:1.00)A.概念模式B.内模式C.外模式D.数据模式24.若有定义: float x=1.5; int a=1, b=3, c=2; 则正确的 swi
10、tch语句是_。(分数:1.00)A.switch(a+b)case 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“);25.若变量已正确定义,在 if(W)printf(“%d/n“,k);中,以下不可替代 W的是_。(分数:1.
11、00)A.ab+cB.ch=getchar()C.a=b+cD.a+26.下列叙述中错误的是_。(分数:1.00)A.在数据库系统中,数据的物理结构必须与逻辑结构一致B.数据库技术的根本目标是要解决数据的共享问题C.数据库设计是指在已有数据库管理系统的基础上建立数据库D.数据库系统需要操作系统的支持27.下面程序的运行结果是_。 y=5;x=14;y=(x=3*y,x+6),x-1); print f(“x=%d,y=%d“,x,y);(分数:2.50)A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=2728.有以下结构体说明、变量定义和赋值语句 struct S
12、TD char name10; int age; char sex; s5,*ps; ps= 则以下 scanf函数调用语句有错误的是_。(分数:1.00)A.scantf(“%s“, s0.name);B.scanf(“%d“, C.scanf(“%c“, D.scanf(“%d“, ps-age);29.下面描述中错误的是_。(分数:1.50)A.系统总体结构图支持软件系统的详细设计B.软件设计是将软件需求转换为软件表示的过程C.数据结构与数据库设计是软件设计的任务之一D.PAD图是软件详细设计的表示工具30.有以下程序: #include studio. h #define F(X, Y
13、) (X)*(Y) main ( ) int a=3, b=4; printf(“%d/n“, F(a+, b+); (分数:1.00)A.12B.15C.16D.2031.以下叙述中错误的是_。(分数:1.00)A.用户定义的函数中可以没有 return语句B.用户定义的函数中可以有多个 return语句,以便可以调用一次返回多个函数值C.用户定义的函数中若没有 return语句,则应当定义函数为 void类型D.函数的 return语句中可以没有表达式32.下述程序执行的输出结果是_。 # includestdio.h main() char a24; strcpy(a, “are“);
14、strcpy(a1,“you“); a03=“; printf(“%s/n“,a); (分数:1.00)A.areyouB.youC.areD.33.以下程序的输出结果是_。 typedef unionlong a1; int b3; char c10; S; S t; main() printf(“%d/n“,sizeof(t);(分数:2.00)A.32B.16C.10D.2034.若有定义语句 char c=“/101“; 则变量 c在内存中占_。(分数:2.50)A.2个字节B.1个字节C.3个字节D.4个字节35.以下选项中有语法错误的是_。(分数:1.00)A.char*str=“
15、guest“;B.char str10=“guest“;C.char*str3; strt=“guest“;D.char str310; str1=“guest“;36.若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是_。(分数:2.50)A.a=(b=4)=3;B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);37.有以下程序 #includestdio.h main() int a1,a2;char c1,c2; scanf(“%d%c%d%c“, printf(“%d,%c,%d,%c“,a1,c1,a2,c2); 若想通过键盘输入,使得
16、 a1的值为 12,a2 的值为 34,c1 的值为字符 a,c2 的值为字符 b,程序输出结果是:12,a,34,b 则正确的输入格式是_。 A B12a34bCR C12,a,34,bCR D (分数:1.00)A.B.C.D.38.下列叙述中错误的是_。(分数:2.50)A.C程序可以由多个程序文件组成B.一个 C语言程序只能实现一种算法C.C程序可以由一个或多个函数组成D.一个 C函数可以单独作为一个 C程序文件存在39.下列叙述中正确的是_。(分数:1.00)A.程序可以作为算法的一种表达方式B.算法的有穷性是指算法的规模不能太大C.算法的复杂度用于衡量算法的控制结构D.算法的效率与
17、数据的存储结构无关40.若定义了以下函数: void f() *p(double*)malloc (10 * sizeof (double); p是该函数的形参,要求通过 p把动态分配存储单位的地址传回主调函数,则形参 p的正确定义应当是 ( )(分数:1.00)A.double*pB.float* *pC.double* *pD.float*p二、程序填空题(总题数:1,分数:30.00)41.给定程序中,函数 fun的功能是:将 a所指 35矩阵中第 k列的元素左移到第 0列,第 k列以后的每列元素依次左移,原来左边的各列依次绕到右边。 例如,有下列矩阵: 1 2 3 4 5 1 2 3
18、4 5 1 2 3 4 5 若 k为 2,程序执行结果为 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序如下。 #includestdio.h #define M 3 #define N 5 void fun(int(*a)N,int k) int i,j,p,temp; /*found*/ for(p=1;p= 1;p+) for(i=0;iM;i+) temp=ai0; /*found*/ for(j
19、=0;j 2;j+) aij=aij+1; /*found*/ aiN-1= 3; main() int xMN= 1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,i,j; printf(“The array before moving:/n/n“); for(i=0;iM;i+) ( for(j=0;jN;j+)printf(“%3d“,xij); printf(“/n“); fun(x,2); printf(“The array after moving:/n/n“); for(i=0;iM;i+) for(j=0;jN;j+)printf(“%3d“,xij); printf
20、(“/n“); (分数:30.00)三、程序修改题(总题数:1,分数:40.00)42.下列给定程序中,函数 proc()的功能是:计算 n!。例如,若输入:6,则输出:6!=720.000000。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h #includeconio.h double proc(int n) double result=1.0; /*found* if n=0 return 1.0; if(n1 void main() int n; printf(“Inpu
21、t N:“); scanf(“%d“, printf(“/n/n%d!=%1f/n/n“, n, proc(n); (分数:40.00)_四、程序设计题(总题数:1,分数:40.00)43.函数 fun的功能是:将 a、b 两个两位正整数合并成一个新的整数放在 c中。合并的方式是:将 a中的十位和个位数依次放在变量 c的百位和个位上,b 中的十位和个位数依次放在变量 c的干位和十位上。 例如,当 a=45,b=12,调用该函数后 c=1425。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #inclu
22、deconio.h #includestdio.h void fun(int a,int b,long*c) main() int a,b; long c; printf(“Input a,b:“); scanf(“%d%d“,a,b); fun(a,b,c); printf(“The result is:%ld/n“,c); (分数:40.00)_二级 C语言模拟 641答案解析(总分:170.00,做题时间:90 分钟)一、选择题(总题数:40,分数:60.00)1.有以下程序 #include stdio.h void main() int a=1,b=0; printf(%d,“,b=
23、(a+)+(a+); printf(“%d/n“,a+b); 程序运行后的输出结果是_。(分数:2.50)A.4,6B.2,5 C.3,5D.2,6解析:解析 在主函数中定义了两个整型变量 a和 b,并把它们的初值分别设置为 1和 0;在第二条语句中,首先计算 b=a+a,然后 a自增两次,因此第二句结束时,b=2,a=3,然后第三句,a+b=5。2.有以下程序: #includestdio.h main() int a34=1,3,5,7,9,11,13,15,17,19,21,23,(*p)4=a,i,j,k=0; for(i=0;i3;i+) for(j=0;j2;j+)k=k+*(*(
24、p+i)+j); printf(“%d/n“,k); 程序运行后的输出结果是_。(分数:1.00)A.108B.68C.99D.60 解析:解析 该题首先给二维数组赋值 a34=1,3,5,79,11,13,1517,19,21,23;。(*p)4=a,指针 p指向二维数组 a的首地址,接下来执行 for循环。首先 i=0,j=0 时 k=k+*(*(p+0)+0)=1(a00);然后 i=0,j=1 时 k=k+*(p+0)+1)=4(a01);然后 j=2时,跳出 j的循环,执行 i的循环 i=1,j=0时 k=k+*(*(p+1)+0)=13(a10);依此类推一直到 i=3时跳出全部循
25、环。循环语句在这里的功能是累加二维数组第 1列和第 2列的元素,累加结果为 60。3.有以下程序: #includestdio.h main() char X=“A“; x=(x=“A“ printf(“%c/n“, x); 程序的输出结果是_。(分数:2.50)AABa CZDz解析:解析 因为在 ASCII码中,它的大写比小写刚好小 32,比如“A“的 ASCII是 65,那么“a“的 ASCII就是 97。x=(x=“A“ 语句 printf(“%f/n“, (int)(x*1000+0.5)/(double)1000);的输出结果是(分数:2.00)A.输出格式说明与输出项不匹配,输出
26、无定值B.5.170000C.5.168000D.5.169000 解析:5.有以下程序: #includestdio.h main() int x=1, y=0; if(!x)y+; else if(x=0) if(x)y+=2; else y+=3; printf(“%d/n“, y); 程序运行后的输出结果是_。(分数:1.00)A.3B.2C.1D.0 解析:解析 因为 x!=0,所以不执行外分支语句,最后结果为 0。6.有三个关系 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得到关
27、系 T的操作是_。(分数:1.00)A.自然连接 B交C.投影D并解析:解析 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,因此根据 T中元组可以判断关系 R和 S做的是自然连接操作,答案为A。7.有以下程序: #includestdio.h main() int c=0, k; for(k=1; k3; k+) switch(k) default: c+=k; case2: c+; break; case4: c+=2; break; printf(“%d/n“, c); 程序运行后的输出结果是_。(分数:1.00)A.3 B
28、.5C.7D.9解析:解析 本题考查了 switch开关语句,当表达式与某一个 case后面的常量表达式相等时,就执行case后面的语句,若没有匹配,则执行 default后面的语句,各个 case和 default的出现次序不影响结果,执行完一个 case语句,流程就转移到下一个 case并继续执行。因此在 case的分支后,加 break语句来跳出 switch语句。当 k=1时,switch 语句中没有相对应的 case,所以执行 default语句,此时 c为 1,没有遇到 break语句,则执行 case2,c+,此时 c的值在下次使用前加 1等于 2,break 跳出。继续 for
29、循环,当 k=2时,执行 case2,c 再次自加值为 3,遇到 break跳出。当 k=3时,不符合循环,则输出 c的结果,答案为 3。8.有以下程序: #includesdtio.h #includestring.h main() int i,len; char b=“Welcome you to Beijing!“; len=strlen(b); for(i=0;ilen;i+) if(bi=“) strcpy(b,b+i+1); i=0; printf(“%s/n“,b); 程序运行后的输出结果是_。(分数:1.00)A.Beijing! B.toBeijing!C.Welcomeyo
30、utoBeijing!D.youtoBeijing!解析:解析 for 循环的作用是每次遇到空格,将空格后面的字符移动到数组的最前面。因此数组最后的状态是“Beijing!/0g!/0ng!/0eijing!/0”,但是 printf(“%s“)打印时遇到/0 自动结束。因此,打印结果为 Beijing!。故答案为 A选项。9.下列选项中不属于结构化程序设计原则的是_。(分数:1.00)A.可封装 B.自顶向下C.模块化D.逐步求精解析:解析 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用 goto语句,因此本题答案为 A。10.已定义以下函数: int fun(int *p)
31、 return *p; fun函数返回值是_。(分数:2.50)A.一个整数 B.不确定的值C.形参 p中存放的值D.形参 p的地址值解析:解析 返回值为指针变量指向的数据,该数据已被定义为整型。因此 A选项正确。11.下列叙述中正确的是_。(分数:1.00)A.栈是“先进先出”的线性表B.队列是“先进后出”的线性表C.循环队列是非线性结构D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 解析:解析 栈是“先进后出”的线性表,所以 A选项错误;队列是“先进先出”的线性表,所以 B选项错误;循环队列是线性结构的线性表,所以 C选项错误。12.有以下程序: #includestdio.
32、h int f(int n); main() int a=3, s; s=f(a); s=s+f(a); printf(“%d/n“, s); int f(int n) static int a=1; n+=a+; return n; 程序运行后的输出结果是_。(分数:1.00)A.7B.8C.9 D.10解析:解析 本题考查函数的调用。当执行 s=f(a)时,进入 fun函数,n=n+(a+),n 的值为 3,a 的值为 1,a+的意思是先用 a的值,再将 a加 1为 2,所以 n的结果为 4,也就是主函数中 f(a)的结果为 4;返回主函数,执行 s=s+f(a),s 为 4,再次调用函数
33、,此时 n仍为 3,a 的值刚才已经自加 2,所以计算后n的值为 5,a 自加 1为 3。返回主函数,f(a)的结果为 5,所以 s=4+5=9。13.以下选项中,能用作用户标识符的是_。(分数:2.00)A._0_ B.8_8C.voidD.unsigned解析:解析 C 语言中标识符由字母、下画线、数字组成,且开头必须是字母或下画线。另外,关键字不能作为标识符。B 中以数字 8开头,所以错误。C 与 D中用的是关键字 void与 unsigned,所以错误。14.运算符内的数据类型只能是_。(分数:1.00)A.int和 char B.floatC.doubleD.char解析:解析 运算
34、符中必须是整型数,选项 B、C 错误;另外 char类型可以作为整数,所以选项 A正确;选项 D中没有 int类型。故本题答案为 A选项。15.在数据库系统的内部结构体系中,索引属于_。(分数:2.50)A.模式B.内模式 C.外模式D.概念模式解析:解析 内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及 hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。16.有以下程序: #includestdio.h main() int m=1,n=2,*p= r=p; p=q; q=r;
35、printf(“%d,%d,%d,%d/n“,m,n,*p,*q); 程序的运行结果是_。(分数:2.00)A.2,1,1,2B.1,2,1,2C.2,1,2,1D.1,2,2,1 解析:解析 int m=1,n=2,*p= int a=1, b=3, c=2; 则正确的 switch语句是_。(分数:1.00)A.switch(a+b)case 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(
36、“*/n“);case 2.0:printf(“*/n“);D.switch(a+b)case 1:printf(“*/n“);case c:printf(“*/n“);解析:解析 switch 语句的一般形式为: switch(表达式) case常量表达式 1:语句 1; case常量表达式 2:语句 2; default:语句 n; 其中 switch后的表达式只能是整型或字符型,故 C选项错误;case 后面必须是常量表达式,故 D选项错误;switch()右括号后面不能有分号,故选项 B错误,因此答案选 A选项。25.若变量已正确定义,在 if(W)printf(“%d/n“,k);中
37、,以下不可替代 W的是_。(分数:1.00)A.ab+c B.ch=getchar()C.a=b+cD.a+解析:解析 选项 A是非法的表达式,C 语言中没有运算符。26.下列叙述中错误的是_。(分数:1.00)A.在数据库系统中,数据的物理结构必须与逻辑结构一致 B.数据库技术的根本目标是要解决数据的共享问题C.数据库设计是指在已有数据库管理系统的基础上建立数据库D.数据库系统需要操作系统的支持解析:解析 数据库应用系统中的核心问题是设计一个能满足用户需求、性能良好的数据库,这就是数据库设计,因此本题答案为 A。27.下面程序的运行结果是_。 y=5;x=14;y=(x=3*y,x+6),x
38、-1); print f(“x=%d,y=%d“,x,y);(分数:2.50)A.x=27,y=27B.x=12,y=13C.x=15,y=14 D.x=y=27解析:解析 本题考查的是逗号表达式。逗号表达式的求解步骤是先求解表达式 1,然后依次求解表达式 2,直到表达式 N的值。整个逗号表达式的值就是最后一个表达式 N的值。表达式“(x=3*y,x+6)”中,“x=15”。表达式“y=x-1=14”。28.有以下结构体说明、变量定义和赋值语句 struct STD char name10; int age; char sex; s5,*ps; ps= 则以下 scanf函数调用语句有错误的是
39、_。(分数:1.00)A.scantf(“%s“, s0.name);B.scanf(“%d“, C.scanf(“%c“, D.scanf(“%d“, ps-age); 解析:解析 ps-age 不是地址,不能用于 scanf函数中。所以选择 D。29.下面描述中错误的是_。(分数:1.50)A.系统总体结构图支持软件系统的详细设计 B.软件设计是将软件需求转换为软件表示的过程C.数据结构与数据库设计是软件设计的任务之一D.PAD图是软件详细设计的表示工具解析:解析 详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的
40、细节,因此 A描述错误。30.有以下程序: #include studio. h #define F(X, Y) (X)*(Y) main ( ) int a=3, b=4; printf(“%d/n“, F(a+, b+); (分数:1.00)A.12 B.15C.16D.20解析:解析 本题考核的知识点是宏与自增运算符的综合运用在程序中先用表达式将宏替换掉,则输出语句中的表达式为(a+)*(b+),而 a+的值为 3,b+的值为 4。因此最后的值为 3*4=12。所以,4 个选项中选项 A符合题意。31.以下叙述中错误的是_。(分数:1.00)A.用户定义的函数中可以没有 return语句
41、B.用户定义的函数中可以有多个 return语句,以便可以调用一次返回多个函数值 C.用户定义的函数中若没有 return语句,则应当定义函数为 void类型D.函数的 return语句中可以没有表达式解析:解析 本题重点考查函数返回值的相关知识,函数的值只能通过 return语句返回主调函数,在函数中允许有多个 return语句,但每次调用只能有一个 return语句被执行,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。因此 B选项正确。32.下述程序执行的输出结果是_。 # includestdio.h main() char a24; s
42、trcpy(a, “are“); strcpy(a1,“you“); a03=“; printf(“%s/n“,a); (分数:1.00)A.areyou B.youC.areD.解析:解析 strcpy 实现的功能是复制,该操作把 are复制到 a中,a03=“,且 strcpy(a1,“you“)把 you复制到 a1中,故输出 a为“areyou”。33.以下程序的输出结果是_。 typedef unionlong a1; int b3; char c10; S; S t; main() printf(“%d/n“,sizeof(t);(分数:2.00)A.32B.16C.10 D.20
43、解析:34.若有定义语句 char c=“/101“; 则变量 c在内存中占_。(分数:2.50)A.2个字节B.1个字节 C.3个字节D.4个字节解析:解析 char 类型变量占 1个字节。答案选择 B。35.以下选项中有语法错误的是_。(分数:1.00)A.char*str=“guest“;B.char str10=“guest“;C.char*str3; strt=“guest“;D.char str310; str1=“guest“; 解析:解析 在 D选项中,首先定义了一个二维数组 str,str1=“guest“,在赋值时使用一个字符串进行赋值是错误的,所以答案选择 D。36.若有
44、定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是_。(分数:2.50)A.a=(b=4)=3; B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);解析:解析 这道题目主要考察赋值表达式,对于赋值表达式来说,赋值号“=”的左边一定为变量名,右边为一个 C语言合法的表达式。37.有以下程序 #includestdio.h main() int a1,a2;char c1,c2; scanf(“%d%c%d%c“, printf(“%d,%c,%d,%c“,a1,c1,a2,c2); 若想通过键盘输入,使得 a1的值为 12,a2 的值为 34,c1 的
45、值为字符 a,c2 的值为字符 b,程序输出结果是:12,a,34,b 则正确的输入格式是_。 A B12a34bCR C12,a,34,bCR D (分数:1.00)A.B. C.D.解析:解析 在输入多个数据时,如果格式控制串中没有非格式字符,则认为所有输入的字符均为有效字符。因此应按选项 B的顺序输入数据。38.下列叙述中错误的是_。(分数:2.50)A.C程序可以由多个程序文件组成B.一个 C语言程序只能实现一种算法 C.C程序可以由一个或多个函数组成D.一个 C函数可以单独作为一个 C程序文件存在解析:解析 一个 C语言程序能实现多种算法,所以 B错误。39.下列叙述中正确的是_。(分数:1.00)A.程序可以作为算法的一种表达方式 B.算法的有穷性是指算法的规模不能太大C.算法的复杂度用于衡量算法的控制结构D.算法的效率与数据的存储结构无关解析:解析 算法的有穷性是指操作步骤有限且能在有限时间内完成,如果一个算法执行耗费的时间太长,即使最终得出了正确结果,也是没有意义的,故 B选项错误。一个算法复杂度的高低体现在运行该算法所需要的计算机资源的多少,故 C选项错误。算法的效率是指算法执行的时间,算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量,这就与算法本身设计的优劣以及具体的编程实现有关,数据的存