1、全国计算机等级考试二级 C 语言真题 2006 年 4 月及答案解析(总分:82.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.下列选项中小属于结构化程序设计方法的是_。(分数:1.00)A.自顶向下B.逐步求精C.模块化D.可复用2.两个或两个以上的模块之间关联的紧密程度称为_。(分数:1.00)A.耦合度B.内聚度C.复杂度D.数据传输特性3.下列叙述中正确的是_。(分数:1.00)A.软件测试应该由程序开发者来完成B.程序经调试后般不需要再测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对4.按照“后进先出”原则组织数据的数据结构是_。(分数
2、:1.00)A.队列B.栈C.双向链表D.二叉树5.下列描述中正确的是_。(分数:1.00)A.线性链表是线性表的链式存储结构B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根结点的二叉树是线性结构6.对如下二叉树 (分数:1.00)A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA7.在深度为 7 的满二叉树中,叶子结点的个数为_。(分数:1.00)A.32B.31C.64D.638.“商品”与“顾客”两个实体集之间的联系一般是_。(分数:1.00)A.对B.对多C.多对一D.多对多9.在 E-R 图中,用来表示实体的图形是_。(分数:1.00)A.矩形B.椭圆形C.菱
3、形D.三角形10.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是_。(分数:1.00)A.DB 包含 DBS 和 DBMSB.DBMS 包含 DB 和 DBSC.DBS 包含 DB 和 DBMSD.没有任何关系11.以下不合法的用户标识符是_。(分数:1.00)A.j2 KEYB.DoubleC.4dD._8_12.以下不合法的数值常量是_。(分数:1.00)A.011B.le1C.8.0E0.5D.0xabcd13.以下不合法的字符常量是_。(分数:1.00)A./018B./C./D./xcc14.表达式 3.6-5/21.25%2 的值是_。(分数:1.00)A
4、.4.3B.4.8C.3.3D.3.815.以下能正确定义字符串的语句是_。(分数:1.00)A.char str=/064;B.char str=“/x43“;C.char str=“;D.char str=“/0“;16.以下数组定义中错误的是_。(分数:1.00)A.int x3=0;B.int x23=1,2,3,4,5,6;C.int x3=1,2,3,4,5,6;D.int x3=1,2,3,4,5,6;17.若要求从键盘读入含有空格字符的字符串,应该使用函数_。(分数:1.00)A.getc ()B.gets()C.getchar()D.scanf()18.以下四个程序中,完全正
5、确的是_。(分数:1.00)A.#include stdih main(); /*programming*/ printf(“programming!/n“);B.#inc ludestdih main() /*/programming/*/ printf(“programming!/n“);C.#include stdih main() /*programming*/ printf(“programming!/n“);D.includestdih main() /*/*programming*/*/ printf(“programming!/n“);19.若有定义:float x=1.5;i
6、nt a=1,b=3,c=2;则正确的 switch 语句是_。(分数:1.00)A.switch ( case 1.0: printf(“*/n“); case 2.0: printf(“*/n“);B.switch ( (in; case 1: printf(“*/n“); case2: printf(“*/n“);C.switch (a case 1:printf(“*/n“); case 21: printf(“*/n“);D.switch (a) case 1: pfintf(“*/n“); case c: printf(“*/n“);20.若各选项中所有变量已正确定义,函数 fun
7、 中通过 return 语句返回一个函数值,以下选项中错误的程序是_。(分数:1.00)A.mam() x=fun(2,10); fioat fun(int a,int B.float fun (int a,int main() x=fun(i,; C.float fun (int in; main() x=fun(2,10); float fun (int a,int D.main() float fun (int i, int ; x=fun(i,; float fun (int a,int 22.要求通过 while 循环不断读入字符,当读入字母 N 时结束循环。若变量已正确定义,以下正
8、确的程序段是_。(分数:1.00)A.while(ch=getchar()! =N) printf(“%c“,c;B.while (ch=getchar()! =N) printf(“%c“,c;C.while (ch=getchar()=N) printf(“%c“,c;D.while(ch=getchan()=N) printf(“%c“,c;23.已定义以下函数 int fun(int *p) return *p; fun 函数返回值是_。(分数:1.00)A.不确定的值B.个整数C.形参 p 中存放的值D.形参 p 的地址值24.若有说明语句:double *p,a;则能通过 scan
9、f 语句正确给输入项读入数据的程序段是_。(分数:1.00)A.*p= scanf(“%lf,;B.*p= scanf(“%f“,;C.P= scanf(“%lf,*;D.p= scanf(“%lf“,;25.现有以下结构体说明和变量定义,如图所示,指针 p、q、r 分别指向个链表中连续的三个结点。 street node char data; struct node *next; *p,*q,*r; (分数:1.00)A.q-next=r-next; p-next=r,r-next=q;B.p-next=r,q-next=r-next;r-next=q;C.q-next=r-next;r-n
10、ext=q;p-next=r,D.r-next=q;P-next=r;q-next=r-next;26.有以下程序段 struct st int x;int *y;*pt; int a=1,2,b=3,4; struct st c2=10,a,20,b; pt=c; 以下选项中表达式的值为 11 的是_。(分数:1.00)A.*pt-yB.pt-xC.pt-xD.(pt)-x27.设 fp 为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为_。(分数:1.00)A.EOFB.非 0 值C.0D.NULL28.设有以下语句 int a=1,b=2,c; c=a(b2
11、); 执行后,c 的值为_。(分数:1.00)A.6B.7C.8D.929.有以下程序 #include stdio.h main() char c1,c2,c3,c4,c5,c6; scanf(“%c%c%c%c“, c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(“%c%c/n“,c5,c6); 程序运行后,若从键盘输入 (从第 1 列开始) 123 回车 45678 回车 则输山结果是_。(分数:1.00)A.1267B.1256C.1278D.124530.有以下程序 main() int y=10; while
12、(y-);printf(“y=%d/n“,y); 程序执行后的输出结果是_。(分数:1.00)A.y=0B.y=1C.y=1D.while 构成无限循环31.有以下程序 main() int a=0,b=0,c=0,d=0; if(a=1)b=1;c=2; else d=3; printf(“%d,%d,%d,%d/n“,a,b,c,d); (分数:1.00)A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错32.有以下程序 main() int i,j,x=0; for(i=0;i2;i) x; for(j=0;j=3;j) if(j%2) continue; x; x; p
13、rintf(“x=%d/n“,x); 程序执行后的输出结果是_。(分数:1.00)A.x=4B.x=8C.x=6D.x=1233.有以下程序 int fun1 (double a)return a*=a; int fun2 (double x,double y) double a=0,b=0; a=fun1(x);b=fun1(y); return(int)(a+b); main() double w;w=fun2(1.1,2.0); 程序执行后变量 W 中的值是_。(分数:1.00)A.5.21B.5C.5.0D.0.034.有以下程序 main() int i,t3=9,8,7,6,5,4
14、,3,2,1; for(i-0;i3;i) printf(“%d“,t2-ii); 程序执行后的输出结果是_。(分数:1.00)A.753B.357C.369D.75135.有以下程序 fun(char p10) int n=0,i; for(i=O;i7;i) if(piO=T)n; return n; main() char str10=“Mon“,“Tue“,“Wed“,“Thu“,“Fri“, “Sat“,“Sun“; printf(“%d/n“,fun(str); (分数:1.00)A.1B.2C.3D.036.有以下程序 main() int i,s=0,t=1,2,3,4,5,6
15、,7,8,9 ; for(i=0;i9;i=2) s=*(ti); printf(“%d/n“,s); (分数:1.00)A.45B.20C.25D.3637.有以下程序 void fun 1 (char *p) char *q; q=p; while(*q!=/0) (*q);q; main() char a=“Program“,*p; p=fun1(p);printf(“%s/n“,a); 程序执行后的输出结果是_。(分数:1.00)A.ProhsbnB.PrphsbnC.ProgsbnD.Program38.有以下程序 void swap(char *x,char *y) char t;
16、 t=*x;*x=*y;*y=t; main() char *s1=“abc“,*s2=“123“; swap(s1,s2); printf(“%s,%s/n“,s1,s2); 程序执行后的输出结果是_。(分数:1.00)A.123,abcB.abc,123C.1bc,a23D.321,cba39.有以下程序 int fun(int n) if(n=1) return 1; else return(nfun(n-1); main() int x; scanf(“%d“,x=fun(x);pfintf(“%d/n“,x); 执行程序时,给变量 x 输入 10,程序的输出结果是_。(分数:1.00
17、)A.55B.54C.65D.4540.有以下程序 int fun(int x,int n) static int sum=0,i; for(i=0;in;i) sum=xi; return sum; main() int a=1,2,3,4,5,b=6,7,8,9,s=0; s=fun(a,5)fun(b,4);printf(“%d/n“,s); 程序执行后的输出结果是_。(分数:1.00)A.45B.50C.60D.5541.有以下程序 main() union char ch2; int d; s; s.d=0x4321; printf(“%x,%x/n“,s.chO,s.ch1); 在
18、 16 位编译系统上,程序执行后的输出结果是_。(分数:1.00)A.21,43B.43,21C.43,00D.21,0042.有以下程序 main() char *p=“3697“,“2548“; int i,j; long num=0; for(i=0;i2;i) j=0; while(pij!=/0) if(pij-0)%2) num=10*numpij-0; j=2; printf(“%d/n“,num); 程序执行后的输出结果上_。(分数:1.00)A.35B.37C.39D.397543.执行以下程序后,test.txt 文件的内容是(若文件能正常打开)_。 #include st
19、dio.h main() FILE *fp; char *s1=“Fortran“,*s2=“Basic“; if(fp=fopen(“test.txt“,“wb“)=NULL) printf(“Cant open test.txt file/n“); exit(1); fwrite(s1,7,1,fp); /* 把从地址 s1 开始的 7 个字符写到 fp 所指文件中*/ f seek(fp, 0L,SEEK_SET);/*文件位置指针移到文件开头*/ fwrite(s2,5,1,fp); fclose(fp); (分数:1.00)A.BasicanB.BasicFortranC.Basic
20、D.FortranBasic44.以下叙述中错误的是_。(分数:1.00)A.C 语言源程序经编译后生成后缀为obj 的目标程序B.C 程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件C.用 C 语言编写的程序称为源程序,它以 ASC代码形式存放在个文本文件中D.C 言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令45.以下叙述中错误的是_。(分数:1.00)A.算法正确的程序最终定会结束B.算法正确的程序可以有零个输出C.算法正确的程序可以有零个输入D.算法正确的程序对于相同的输入定有个相同的结果46.以下叙述中错误的是_。(分数:1.00)A.C 程序必
21、须由个或个以上的函数组成B.函数调用可以作为个独立的语句存在C.若函数有返回值,必须通过 return 语句返回D.函数形参的值也可以传回给对应的实参47.设有以下定义和语句 char str20=“Program“,*p; p=str; 则以下叙述中正确的是_。(分数:1.00)A.*p 与 str0中的值相等B.sb 与 p 的类型完全相同C.str 数组长度和 p 所指向的字符串长度相等D.数组 str 中存放的内容和指针变量 p 中存放的内容相同48.以下叙述中错误的是_。(分数:1.00)A.C 程序中的#include 和#define 行均不是 C 语句B.除逗号运算符外,赋值运
22、算符的优先级最低C.C 程序中,j;是赋值语句D.C 程序中,、-、*、/、%号是算术运算符,司用于整型和实型数的运算49.以下叙述中正确的是_。(分数:1.00)A.预处理命令行必须位于 C 源程序的起始位置B.在 C 语言中,预处理命令行都以“#“开头C.每个 C 程序必须在开头包含预处理命令行:#includestdihD.C 语言的预处理不能实现宏定义和条件编译的功能50.以下叙述中错误的是_。(分数:1.00)A.可以通过 typedef 增加新的类型B.可以用 typedef 将已存在的类型用新的名字宋代表C.用 typedef 定义新的类型名后,原有类型名仍有效D.用 typed
23、ef 可以为各种类型起别名,但不能为变量起别名二、B填空题/B(总题数:16,分数:32.00)51.对长度为 10 的线性表进行冒泡排序,最坏情况下需要比较的次数为U 1 /U。(分数:2.00)填空项 1:_52.在面向对象方法中U 2 /U描述的是具有相似属性与操作的组对象。(分数:2.00)填空项 1:_53.在关系模型中,把数据看成是二维表,每个二维表称为个U 3 /U。(分数:2.00)填空项 1:_54.程序测试分为静态分析和动态测试。其中U 4 /U是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。(分数:2.00)填空项 1:_55.数据独立性
24、分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为U 5 /U。(分数:2.00)填空项 1:_56.若变量 a,b 已定义为 int 类型并赋值 21 和 55,要求用 printf 函数以 a=21,b=55 的形式输出,请写出完整的输出语句U 6 /U。(分数:2.00)填空项 1:_57.以下程序用于判断 a、b、c 能否构成三角形,若能,输出 YES,否贝愉出 NO。当给 a、b、c 输入三角形三条边长时,确定 a、b、c 能构成三角形的条件是需同时满足三个条件;abc,acb,bca。请填空。 main() float
25、 a,b,c; scanf(“%f%f%f, if(U 7 /U)printf(“YES/n“); /*a、b、c 能构成三角形*/ else printf(“NO/n“); /*a、b、c 不能构成三角形*/ (分数:2.00)填空项 1:_58.以下程序的输出结果是U 8 /U。 main() int a33=1,2,9,3,4,8,5,6,7,i,s=0; for(i=0;i3;i) s=-aiiai3-i-1; printf(“%d/n“,s); (分数:2.00)填空项 1:_59.当运行以下程序时,输入 abcd,程序的输出结果是:U 9 /U。 insert(char str)
26、int i; i=strlen(str); while(i0) str2*i=stri; str2*i-1:*; i-; printf(“%s/n“,str); main() char str40; scanf(“%s/n“,str); insert(str); (分数:2.00)填空项 1:_60.下面程序的运行结果是:U 10 /U。 fun(int t,int n) int i,m; if(n=1) return t0; else if(n=2) m=fun(t,n-1);return m; main() int a=11,4,6,3,8,2,3,5,9,2; printf(“%d/n“
27、,fun(a,10); (分数:2.00)填空项 1:_61.先有两个 C 程序文件 T18.c 和 myfun.c 同在 TC 系统目录(文件夹)下,其中 T18.c 文件如下: #includestdio.h #include “myfun.c“ main() fun(); printf“/n“); myfun.c 文件如下: void fun() char s80,c; int n=0; while(c=getchar()!=/n) sn=c; n-; while(n=O) printf(“%c“,sn-); 当编译连接通过后,运行程序 T18 时,输入 Thank!则输出结果是:U 1
28、1 /U。(分数:2.00)填空项 1:_62.以下函数 fun 的功能是返回 str 所指字符串中以形参 c 中字符开头的后续字符串的首地址,例如:str所指字符串为:Hello!,c 中的字符为 e,则函数返回字符串:ello!的首地址。若 str 所指字符串为空串或不包含 c 中的字符,则函数返回 NULL。请填空。 char *fun(char *str, char c) int n=0;char *p=str; if(p!=NULL) while(pn!=c if(pn=/0) return NULL; return(U 12 /U); (分数:2.00)填空项 1:_63.以下程序
29、的功能是:输出 100 以内(不含 100)能被 3 整除且个位数为 6 的所有整数,请填空。 main() int i,j; for(i=0; 13 ;i) j=i*106; if(U 14 /U)continue; printf(“%d “,j); (分数:2.00)填空项 1:_64.以下 isprime 函数的功能是判断形参 a 是否为素数,是素数,函数返回 1,否则返回 0。请填空。 int isprime(int a) int i; for(i=2;i=a/2;i) if(a%i=0)U 15 /U; U 16 /U; (分数:2.00)填空项 1:_65.以下程序的功能是输入任意
30、整数给 n 后,输出 n 行由大写字母 A 开始构成的三角形字符阵列图形。例如,输入整数 5 时 (注意:n 不得大于 10),程序运行结果如下: ABCDE FGHI JKL MN O 请天空完成该程序。 main() int i,j,n; char ch=A; scanf(“%d“, if(n11) for(i=1;i=n;i) for(j=1; j=n-i1;j) printf(“%2c“,ch); U17 /U; U 18 /U; else printf(“n is too large!/n“); printf(“/n“); (分数:2.00)填空项 1:_66.以下程序中函数 fun
31、 的功能是:构成个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数 disp 的功能是显示输出该单向链表中所有结点中的字符串。请填空完成函数 disp。 (分数:2.00)填空项 1:_全国计算机等级考试二级 C 语言真题 2006 年 4 月答案解析(总分:82.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.下列选项中小属于结构化程序设计方法的是_。(分数:1.00)A.自顶向下B.逐步求精C.模块化D.可复用 解析:知识点:结构化程序设计方法 评析:20 世纪 70 年代以来,提出了许多软件设计方法,主要有逐步求精:对复杂的
32、问题,应设计些子目标作过渡,逐步细化:自顶向下:程序设计时应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化;模块化:个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为个模块,而可复用是面向对象程序设计的个优点。2.两个或两个以上的模块之间关联的紧密程度称为_。(分数:1.00)A.耦合度 B.内聚度C.复杂度D.数据传输特性解析:知识点:耦台度 评析:耦合度是模块间互相连接的紧密程度的度量;内聚度是一个模块内部各个元素间彼此结合的紧密程
33、度的度量。3.下列叙述中正确的是_。(分数:1.00)A.软件测试应该由程序开发者来完成B.程序经调试后般不需要再测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对 解析:知识点:软件的测试与程序的调试 评析:程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于一定的调试工具去找出软件错误的具体位置。软件测试贯穿整个软件生命期,调试主要在开发阶段。为了达到更好的测试效果,应该由独立的第三方来构造测试。因为从心理学角度讲,程序人员或设计方在测试自己的程序时,要采取客观的态度是程度不同地存在障碍的。软件的运行和维护
34、是指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。4.按照“后进先出”原则组织数据的数据结构是_。(分数:1.00)A.队列B.栈 C.双向链表D.二叉树解析:知识点:栈和队列的定义 评析:栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的端进行插入或删除操作,是种“后进先出”的线性表;而队列只允许在表的端进行插入操作,在另端进行删除操作,是种“先进先出”的线性表。5.下列描述中正确的是_。(分数:1.00)A.线性链表是线性表的链式存储结构 B.栈与队列是非线性结构C.双向链表是非线性结构D.只
35、有根结点的二叉树是线性结构解析:知识点:线性结构与非线性结构的概念 评析:根据数据结构中各数据元素之间前后关系的复杂程度,般将数据结构分为两大类型;线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:有且只有个根结点;每个结点最多有个前件,也最多有个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。6.对如下二叉树 (分数:1.00)A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA 解析:知识点:二叉树的后序遍历 评析:后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最
36、后访问根结点;并且遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。7.在深度为 7 的满二叉树中,叶子结点的个数为_。(分数:1.00)A.32B.31C.64 D.63解析:知识点:二叉树的概念评析:所谓满二叉树是指这样的种二叉树:除最后一层外,每层上的所有结点都有两个子结点。这就是说,在满二叉树中,每层上的结点数都达到最大值,即在满二叉树的第 K 层上有 2K-1个结点,且深度为m 的满二叉树有 2m-1 个结点。树的最大层次际为树的深度。本题中深度为 7,故叶子结点数为 27-1=26=64。8.“商品”与“顾客”两个实体集之间的联系一般是_。(分数:1.00)A.对
37、B.对多C.多对一D.多对多 解析:知识点:Visual FoxPro 基础知识/关系数据库 评析:两个实体间的联系可以归纳为 3 种类型: 对联系:对的联系表现为主表中的每条记录只与相关表中的条记录相关联。 对多联系:对多的联系表现为主表中的每条记录与相关表中的多条记录相关联。 多对多联系:多对多的联系表现为个表中的多个记录在相关表中同样有多个记录其匹配。 本题中个顾客可以购买多种商品,同种商品可以有多个顾客购买,所以商品和顾客之间是多对多的联系。9.在 E-R 图中,用来表示实体的图形是_。(分数:1.00)A.矩形 B.椭圆形C.菱形D.三角形解析:知识点:实体联系模型及 E-R 图 评
38、析:E-R 图中用矩形表示实体集,用椭圆表示属性,用菱形表示联系。10.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是_。(分数:1.00)A.DB 包含 DBS 和 DBMSB.DBMS 包含 DB 和 DBSC.DBS 包含 DB 和 DBMS D.没有任何关系解析:知识点:数据库的基本概念:数据库,数据库管理系统,数据库系统 评析:数据库系统由如下几部分组成:数据库、数据库管理系统、数据库管理员、系统平台(硬件平台和软件平台)。11.以下不合法的用户标识符是_。(分数:1.00)A.j2 KEYB.DoubleC.4d D._8_解析:评析:C 语言规定标识符只
39、能由字母、数字和下划线三种符号组成,而且第个字符必须是字母或下划线。大写字母和小写字母被认为是两个不同的字符,用户在定义标识符时应做到“见名知意”,且不允许使用关键字作标识符。12.以下不合法的数值常量是_。(分数:1.00)A.011B.le1C.8.0E0.5 D.0xabcd解析:评析:数值常量区分为不同的类型,如 12、0、-3 为整型常量,4.6、-123 为实型常量,a,A为字符常量。实数常量有两种表示形式:十进制小数形式和指数形式。用指数形式表示必须注意字母e(或 E)之前必须有数字,且 e(或 E)后面的指数必须为整数。如:e3、7e3.5、8.0E0.5 都是不合法的。13.
40、以下不合法的字符常量是_。(分数:1.00)A./018 B./C./D./xcc解析:评析:C 语言的字符常量是用单引号(即撇号)括起来的一个字符。如a,A,?,$等都是字符常量。注意:a和A是不同的字符常量。除了以上形式的字符常量外,C 还允许用个“/“开头的字符序列。如/ddd表示 1 到 3 位八进制数所代表的字符,而八进制是由 0 到 7 这几个数字组成的,所以选项A 是不合法的字符常量。14.表达式 3.6-5/21.25%2 的值是_。(分数:1.00)A.4.3B.4.8C.3.3D.3.8 解析:评析:此题考核的是算术运算符的运算规则,算术运算符的结合方向为“自左至右”,先按
41、运算符的优先级别高低次序执行,同时在 C 中两个整数相除或求余数其结果依旧为整数。计算后结果为 3.8。15.以下能正确定义字符串的语句是_。(分数:1.00)A.char str=/064;B.char str=“/x43“;C.char str=“;D.char str=“/0“; 解析:评析:C 语言中,字符串是用对双引号括起来的字符序列,并用字符型数组来存放,故选项A、C 不属于字符串,选项 B 定义的是个字符变量 str,却用来存放字符串,显然也不正确,所以选项 D正确。16.以下数组定义中错误的是_。(分数:1.00)A.int x3=0;B.int x23=1,2,3,4,5,6
42、; C.int x3=1,2,3,4,5,6;D.int x3=1,2,3,4,5,6;解析:评析:C 语言中,二维数组中元素的排列顺序是:先按行存放,再按列存放,并且要有足够的空间来保证定义的数组长度始终大于等于需要存放的元素的长度。选项 B 中行数定义为 2 行,但实际却需要存放 3 行元素故不正确。17.若要求从键盘读入含有空格字符的字符串,应该使用函数_。(分数:1.00)A.getc ()B.gets() C.getchar()D.scanf()解析:评析:函数 getchar()的作用是从终端(或系统隐含指定的输入设备)输入一个字符,且只能接受个字符(回车符也算是个字符),所以 g
43、etchar()不能用宋读入字符串。scanf()函数要求按定的格式来输入,若同时输入多个字符串,则以空格或回车分割,所以空格不能被识别为个字符,也就无法读入空格字符。函数 gets()的作用是从终端输入个字符串 (包括空格)至字符数组,直到遇到换行符为止,所以可以用来键盘读入空格字符。18.以下四个程序中,完全正确的是_。(分数:1.00)A.#include stdih main(); /*programming*/ printf(“programming!/n“);B.#inc ludestdih main() /*/programming/*/ printf(“programming!
44、/n“);C.#include stdih main() /*programming*/ printf(“programming!/n“); D.includestdih main() /*/*programming*/*/ printf(“programming!/n“);解析:评析:C 程序中注释用“/*”和“*/”括起来,它可以出现在程序中任何合适的地方。选项 A 中“main();”是个函数声明语句,下面的大括号及其内容作为个语句块,应放在程序的大括号中,故选取项 A 错误;选项 B 中的注释语句不正确,因为程序在编译时认别到两次“/*”作为注释的开始,但为识别到“*/”作为注释的结束,故选项 B 错误;选项 D 的“include”前缺少“#”,故选项 D 错误。19.若有定义:float x=1.5;int a=1,b=3,c=2;则正确的 switch 语句是_。(分数:1.00)A.switch ( case 1.0: printf(“*/n“); case 2.0: printf(“*/n“);B.switch ( (in; case 1: printf(“*/n“); case2: printf(“*/n“);C.switch (a case 1:printf(“*/n“); case 21: p