1、二级 C语言全真-2013 年 03月-1 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:40.00)1.设循环队列为 Q(1:m),其初始状态为 front=rear=m。经过一系列入队与退队运算后,front=20,rear=15。现要在该循环队列中寻找最小值的元素,最坏情况下需要比较的次数为_。 A.5 B.6 C.m-5 D.m-6(分数:1.00)A.B.C.D.2.某二叉树的前序序列为 ABCDEFG,中序序列为 DCBAEFG,则该二叉树的后序序列为_。 A.EFCDCBA B.DCBEFGA C.BCDGFEA D.DCBGFEA(
2、分数:1.00)A.B.C.D.3.下列叙述中错误的是_。 A.在链表中,如果每个节点有两个指针域,则该链表一定是非线性结构 B.在链表中,如果有两个节点的同一个指针域的值相等,则该链表一定是非线性结构 C.在链表中,如果每个节点有两个指针域,则该链表一定是线性结构 D.在链表中,如果有两个节点的同一个指针域的值相等,则该链表一定是线性结构(分数:1.00)A.B.C.D.4.下列叙述中错误的是_。 A.在带链队列中,队头指针和队尾指针都是在动态变化的 B.在带链栈中,栈顶指针和栈底指针都是在动态变化的 C.在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的 D.在带链队列中,队头指针和队
3、尾指针可以指向同一个位置(分数:1.00)A.B.C.D.5.软件生命周期中,确定软件系统要做什么的阶段是_。 A.需求分析 B.软件测试 C.软件设计 D.系统维护(分数:1.00)A.B.C.D.6.下面对软件测试和软件调试有关概念叙述错误的是_。 A.严格执行测试计划,排除测试的随意性 B.程序调试通常也称为 Debug C.软件测试的目的是发现错误和改正错误 D.设计正确的测试用例(分数:1.00)A.B.C.D.7.下面属于系统软件的是_。 A.财务管理系统 B.编译软件 C.编辑软件 word D.杀毒软件(分数:1.00)A.B.C.D.8.将 E-R图转换为关系模式时,E-R
4、图中的实体和联系都可以表示为_。 A.属性 B.键 C.关系 D.域(分数:1.00)A.B.C.D.9.有两个关系 R与 S如下,由关系 R和 S得到关系 T,则所使用的操作为_。 RA A1a 0b 1SB B1 B2f 3 k2n 2 x1TA A1 B B1 B2a 0 f 3 k2a 0 n 2 x1b 1 f 3 k2b 1 n 2 x1 A.并 B.自然连接 C.笛卡尔积 D.交(分数:1.00)A.B.C.D.10.在数据管理的三个发展阶段中,数据的共享性好且冗余度最小的是_。 A.人工管理阶段 B.文件系统阶段 C.数据库系统阶段 D.面向数据应用系统阶段(分数:1.00)A
5、.B.C.D.11.以下叙述中错误的是_。 A.书写风格良好的程序执行效率高 B.书写风格良好的程序易读性好 C.C程序可以在一行上写多条语句 D.C程序允许将一条语句分写在多行上(分数:1.00)A.B.C.D.12.在 C语言中,以下选项中不能正确表示 101000之值的是_。 A.1.0E4.0 B.1.FA C.10E3 D.1.0e4(分数:1.00)A.B.C.D.13.设有定义:int a=0,b=1,c=1;以下选项中,表达式值与其他三个不同的是_。 A.b=a=c B.a=b=c C.a=c=b D.c=a!=c(分数:1.00)A.B.C.D.14.设有两行定义语句:int
6、 scanf;float case;则以下叙述正确的是_。 A.两行定义语句都不合法 B.两行定义语句都合法 C.第 1行语句不合法 D.第 2行语句不合法(分数:1.00)A.B.C.D.15.设有定义:double x=2.12;,以下不能完整输出变量 x值的语句是_。 A.printf(“x=%5.0f/n“,x); B.printf(“x=%f/n“,x); C.printf(“x=%lf/n“,x); D.printf(“x=%0.5f/n“,x);(分数:1.00)A.B.C.D.16.设有定义:int a,b;float x,y;,则以下选项中对语句所作的注释叙述错误的是_。 A
7、.scanf(“%d%d%f“,/*多余的格式符%f 完全不起作用*/ B.scanf(“%d%d“,/*多余的输入项不能获得输入数据*/ C.scanf(“%d%d“,/*输入项与格式符类型不匹配,变量 b和 X得不到正确的输入数据+/ D.scanf(“Input:%d%d“,/*格式串中允许加入格式符以外的字符串*/(分数:1.00)A.B.C.D.17.有如下程序:#include stdio.hmain()int a = 0, b = 1;if(+a = b+)printf(“T“);elseprintf(“F“);printf(“a=%d,b=%d/n“,a,b);printf(“
8、/n“);程序运行后的输出结果是_。 A.Ta=0,b=1 B.Fa=1,b=2 C.Ta=1,b=2 D.Fa=0,b=2(分数:1.00)A.B.C.D.18.有如下程序:#include stdio.hmain()int i=1;for(printf(“%d“,i); i4; i+)printf(“%d“, i);printf(“/n“);程序运行后的输出结果是_。 A.1123 B.123 C.0123 D.001(分数:1.00)A.B.C.D.19.有如下程序:#include stdio.hmain()char ch=A;while(chD)printf(“%d“, ch-A);
9、ch+;printf(“/n“);程序运行后的输出结果是_。 A.ABC B.012 C.abc D.123(分数:1.00)A.B.C.D.20.有如下程序:#include stdio.hmain()if(/0 = 0) putehar(X);if(0 = 0) putehar(Y);if(ab) putchar(Z).printf(“/n“);程序运行后的输出结果是_。 A.X B.XYZ C.YZ D.Y(分数:1.00)A.B.C.D.21.有如下程序:#include stdio.hmain()char ch=M;while(ch !=K)ch-;putchar(ch);print
10、f(“/n“);程序运行后的输出结果是_。 A.MN B.LK C.OP D.MM(分数:1.00)A.B.C.D.22.有以下程序段:scanf(“%d%d%d“,if(ab) a=b;if(ac) a=c;printf(“%d/n“,a);该程序段的功能是_。 A.输出 a、b、c 中的最小值 B.输出 a、b、c 中的最大值 C.输出 a的原始值 D.输出 a、b、c 中值相等的数值(分数:1.00)A.B.C.D.23.以下关于函数的叙述中正确的是_。 A.函数调用必须传递实参 B.函数必须要有形参 C.函数必须要有返回值 D.函数形参的类型与返回值的类型无关(分数:1.00)A.B.
11、C.D.24.设有定义:int a,b10,*c=NULL,*p;,则以下语句错误的是_。 A.p=a; B.p=b; C.p=c; D.p=for(i=s,j=e; ij; i+,j-)t = *(x+i); *(x+i)=*(x+j); *(x+j)=t;main() int m=0,1,2,3,4,5,6,7,8,9,k;fun(m,0,3); fun(m+4,0,5); fun(m,0,9);for(k=0; k10;k+)printf(“%d“,mk);程序的运行结果是_。 A.4567890123 B.3210987654 C.9876543210 D.0987651234(分数:
12、1.00)A.B.C.D.26.设有 n个数按从大到小的顺序存放在数组 x中,以下能使这 n个数在 X数组中的顺序变为从小到大的是_。 A.for(i=0;in/2;i+) t=xi; xi=xn-i-1; xn-i-1=t; B.for(i=0;in;i+) t=xi;xi=xn-i-1;xn-i-1=t; C.for(i=0;in/2;i+) t=xi; xi=xn-i+1; xn-i+1=t; D.for(i=0;in/2;i+=2)t=xi;xi=xn-i-1;xn-i-1=t;(分数:1.00)A.B.C.D.27.设有一个 M*N的矩阵已经存放在一个 M行 N列的数组 x中,且有以
13、下程序段:sum=0;for(i=0;iM;i+) sum+=xi0+xiN-1;for(j=1;jN-1;j+) sum+=x0j+xM-1j;以上程序段计算的是_。 A.矩阵两条对角线元素之和 B.矩阵所有不靠边元素之和 C.矩阵所有元素之和 D.矩阵所有靠边元素之和(分数:1.00)A.B.C.D.28.有以下程序:#include stdio.hmain() int s32= 1,2,3,4,5,6,*ps3,k;for(k=0;k3;k+) psk=sk;printf(“%d“,*(psk+1);程序的运行结果是_。 A.2 4 6 B.1 3 5 C.1 2 3 D.4 5 6(分
14、数:1.00)A.B.C.D.29.设有以下定义:char s1=“0123“;char s2= 0,1,2,3;则以下叙述正确的是_。 A.数组 s1的长度小于 s2的长度 B.数组 s1和 s2的长度相同 C.数组 s1的长度大于 s2的长度 D.数组 s1和 s2完全等价(分数:1.00)A.B.C.D.30.以下能正确进行字符串赋值的语句组是 A.thai *ch; ch=“abc“; B.char ch=a,b,c; C.char ch3=“abc“; D.char ch4; ch=“abc“;(分数:1.00)A.B.C.D.31.有以下程序:#include stdio.hint
15、 fun(char*s) char*p=s;while(*p+ != /0);return(p-s);main() char*p=“01234“;printf(“%d/n“,fun(p);程序的运行结果是_。 A.6 B.5 C.4 D.3(分数:1.00)A.B.C.D.32.有以下程序:#include stdio.hmain() char*mm4=“abcd“,“1234“,“mnop“,“5678“;char* pm=mm;int i;for(i=0; i4; i+) printf(“%s“,pmi+i);printf(“/n“);程序的运行结果是_。 A.abed1234mnop56
16、78 B.abcd234op8 C.a2o8 D.a1m5(分数:1.00)A.B.C.D.33.有以下程序:#include stdio.hvoid fac2(int);void fac1(int n) printf(“*“);if(n0)fac2(n-1);void fac2(int n) printf(“#“);it(n0)fac2(-n);main() fac1(3); 程序的运行结果是_。 A.* # B.*#* C.* *# D.*#*#(分数:1.00)A.B.C.D.34.有以下程序:#include stdio.hint fun(int n) static int t=1;
17、int i=1;for( ; i=n; i+)t* =i;return t;main() int t=1,i;for(i=2;i4; i+)t+=fun(i);printf(“%d/n“,t);程序的运行结果是_。 A.8 B.11 C.15 D.4(分数:1.00)A.B.C.D.35.有以下程序:#include stdio.h#include string.h#include stdlib.hmain() char *p1,*p2;p1=p2=(char*)malloc(sizeof(char)*10);strcpy(p1,“malloc“);strcpy(p2, p1+1);print
18、f(“%c%c/n“,p10,p20);程序的运行结果是_。 A.aa B.ma C.am D.mm(分数:1.00)A.B.C.D.36.设有定义:structint n;float x; s2,m2=10,2.8,0,0.0;则以下赋值语句中正确的是_。 A.s0=m1; B.s=m; C.s.n=m.n; D.s2.x=m2.x;(分数:1.00)A.B.C.D.37.有以下程序:#include stdio.hstruct S int a; int *b;main() int x1 = 3,4,x2=6,7;struct S x=1,x1,2,x2;printf(“%d,%d/n“,*
19、x0.b,*x1.b);程序的运行结果是_。 A.1,2 B.3,6 C.4,7 D.变量的地址值(分数:1.00)A.B.C.D.38.有以下程序:#include stdio.h#include string.htypedef struct char name10;char sex;int age; STU;void fun(STU *t) strcpy(*t).name,“Tong“);(*t).age+;main() STU s2=“Hua“,m,18,“Qin“,f,19;fun(s+1);printf(“%s,%d,%s,%d/n“,s0.name,s0.age,s1.name,s
20、1.age);程序运行后的输出结果是_。 A.Hua,18,Tong,20 B.Hua,18,Qin,19 C.Tong,19,Qin,19 D.Hua,19,Tong,19(分数:1.00)A.B.C.D.39.以下不属于 C语言位运算符的是_。 A.! B. C. D.(分数:1.00)A.B.C.D.40.有以下程序段: FILE *fp;if(fp=fopen(“test.txt“,“w“)=NULL) printf(“不能打开文件!“);exit(0);elseprintf(“成功打开文件!“);若指定文件 test.txt不存在,且无其他异常,则以下叙述错误的是_。 A.输出“不能
21、打开文件!“ B.输出“成功打开文件!“ C.系统将按指定文件名新建文件 D.系统将为写操作建立文本文件(分数:1.00)A.B.C.D.二、B程序填空题/B(总题数:1,分数:20.00)41.下列给定程序的功能是调用 fun函数建立班级通信录。通信录中记录每位学生的编号、姓名和电话号码。班级人数和学生信息从键盘读入,每个人的信息作为一个数据块写到名为 myfile5.dat的二进制文件中。 请在程序的下画线处填入正确的内容,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #include stdio.h #include stdlib
22、.h #define N 5 typedef struct int num; char name10; char tel10; STYPE; void cheek(); /*found*/ int fun(_ *std) /*found*/ _*fp; int i; if(fp=fopen(“myfile5.dat“,“wb“)=NULL) return(0); printf(“/nOutput data to file!/n“); for(i=0; iN; i+) /*found*/ fwrite( felose(fp); return(1); main() STYPE s10= 1,“aa
23、aaa“,“111111“,1,“bbbbb“,“222222“,1,“CCCCC“,“333333“,1,“ddddd“,“444444“,1,“eeeee“,“555555“; int k; k=fun(s); if(k=1) printf(“Succeed!“); check(); else printf(“Fail!“); void check() FILE*fp; int i; STYPE s10; if(fp=fopen(“myfile5.dat“,“rb“)=NULL) printf(“Fail!/n“); exit(0); plintf(“/nRead file and out
24、put to screen:/n“); printf(“/n num name tel/n“); for(i=0;iN;i+) fread( printf(“%6d %s %s/n“,si.num,si.name,si.tel); fclose(fp); (分数:20.00)填空项 1:_三、B程序修改题/B(总题数:1,分数:20.00)42.下列给定程序中,函数 fun的功能是:先将字符串 s中的字符按正序存放到字符串 t中,然后把 s中的字符按逆序连接到字符串 t的后面。 例如,当 s中的字符串为“ABCDE”时,则 t中的字符串应为“ABCDEEDCBA”。 请改正程序中的错误,使它能
25、得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include stdlib.h #include conioaha #include stdio.h #include string.h void fun(char *s, char *t) int i,s1; s1=strlen(s); /*found*/ for(i=0;i=s1;i+) ti=Si; for(i=0;is1;i+) ts1+i=Si; /*found*/ ts1=/0; void main() char s100,t100; system(“CLS“); printf(
26、“/nPlease enter string s:“); scanf(“%s“,s); fun(s,t); printf(“The result is:%s/n“,t); (分数:20.00)_四、B程序设计题/B(总题数:1,分数:20.00)43.函数 fun的功能是:将两个两位数的正整数 a、b 合并成一个整数放在 c中。合并的方式是:将 a数的十位和个位数依次放在 e数的千位和十位上,b 数的十位和个位数依次放在 e数的百位和个位上。 例如,当 a=45,b=12 时,调用该函数后 c=4152。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 f
27、un的花括号中填入你编写的若干语句。 试题程序: #include conio.h #include stdio.h void fun(int a,int b,iong*c) main() int a,b; long c; printf(“Input a,b:“); scanf(“%d%d“, fun(a,b, pfintf(“The result is:%d/n“,c); (分数:20.00)_二级 C语言全真-2013 年 03月-1 答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:40.00)1.设循环队列为 Q(1:m),其初始状态为 fron
28、t=rear=m。经过一系列入队与退队运算后,front=20,rear=15。现要在该循环队列中寻找最小值的元素,最坏情况下需要比较的次数为_。 A.5 B.6 C.m-5 D.m-6(分数:1.00)A.B.C.D. 解析:解析 循环队列是队列的一种顺序存储结构,用队尾指针 rear指向队列中的队尾元素,用排头指针指向排头元素的前一个位置,因此,从排头指针 front指向的后一个位置直到队尾指针 rear指向的位置之间所有的元素均为队列中的元素,队列初始状态为 front=rear=m,当 front=20,rear=15 时,队列中有 m-20+15=m-5个元素,比较次数为 m-6次,
29、故 D选项正确。2.某二叉树的前序序列为 ABCDEFG,中序序列为 DCBAEFG,则该二叉树的后序序列为_。 A.EFCDCBA B.DCBEFGA C.BCDGFEA D.DCBGFEA(分数:1.00)A.B.C.D. 解析:解析 二叉树遍历可以分为 3种:前序遍历(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。二叉树的前序序列为 ABCDEFG,A 为根节点。中序序列为 DCBAEFG,可知 DCB为左子树节点,EFG为右子树节点。同理 B为 C父节点,C 为 D父节点,且 CD均
30、为 B的同侧子树节点。同理 E为 F根节点,F为 G根节点,且 FG为 E同侧子树节点。二叉树的后序序列为 DCBGFEA,故 D选项正确。3.下列叙述中错误的是_。 A.在链表中,如果每个节点有两个指针域,则该链表一定是非线性结构 B.在链表中,如果有两个节点的同一个指针域的值相等,则该链表一定是非线性结构 C.在链表中,如果每个节点有两个指针域,则该链表一定是线性结构 D.在链表中,如果有两个节点的同一个指针域的值相等,则该链表一定是线性结构(分数:1.00)A. B.C.D.解析:解析 一个非空的数据结构如果满足以下两个条件:有且只有一个根节点;每一个节点最多有一个前件,也最多有一个后件
31、,称为线性结构。双向链表节点有两个指针域,指向前一个节点的指针和指向后一个节点的指针,也是线性结构,A 选项错误。如果有两个节点的同一个指针域的值相等,说明一个节点有两个前件,属于非线性结构,B 选项正确,D 选项正确。非线性结构主要是指树形结构和网状结构,可以满足每个节点有两个指针域的条件C 选项正确。故选择 A选项。4.下列叙述中错误的是_。 A.在带链队列中,队头指针和队尾指针都是在动态变化的 B.在带链栈中,栈顶指针和栈底指针都是在动态变化的 C.在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的 D.在带链队列中,队头指针和队尾指针可以指向同一个位置(分数:1.00)A.B. C
32、.D.解析:解析 带链的队列就是用一个单链表来表示队列,队列中的每一个元素对应链表中的一个节点,在入队和退队过程中,队头指针和队尾指针都是在动态变化的,A 选项叙述正确,循环队列中当队列满或者空时,队头指针和队尾指针指向同一个位置,D 选项叙述正确。栈也可以采用链式存储结构表示,把栈组织成一个单链表,这种数据结构可称为带链的栈,入栈和遐栈过程中栈底指针不变,栈顶指针随之变化,B选项叙述错误,C 选项叙述正确。故选择 B选项。5.软件生命周期中,确定软件系统要做什么的阶段是_。 A.需求分析 B.软件测试 C.软件设计 D.系统维护(分数:1.00)A. B.C.D.解析:解析 软件生命周期各阶
33、段的主要任务是:问题定义、可行性研究与计划制定、需求分析、软件设计、软件实现、软件测试、运行维护。其中需求分析是指对待开发软件提出的需求进行分析并给出详细定义,也即是确定软件系统要做什么,故 A选项正确。6.下面对软件测试和软件调试有关概念叙述错误的是_。 A.严格执行测试计划,排除测试的随意性 B.程序调试通常也称为 Debug C.软件测试的目的是发现错误和改正错误 D.设计正确的测试用例(分数:1.00)A.B.C. D.解析:解析 软件测试就是在软件投入运行之前,尽可能多地发现软件中的错误,但改正错误又调试完成,C 选项叙述错误。软件测试应在测试之前制定测试计划,并严格执行,排除测试随
34、意性,并且需要设计正确的测试用例,A、D 选项叙述正确。调试(也称为 Debug,排错)是作为成功测试的后果出现的步骤而调试是在测试发现错误之后排除错误的过程,B 选项叙述正确。故选择 C选项。7.下面属于系统软件的是_。 A.财务管理系统 B.编译软件 C.编辑软件 word D.杀毒软件(分数:1.00)A.B. C.D.解析:解析 计算机软件按功能分为应用软件、系统软件、支撑软件(或工具软件)。系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件,如操作系统、数据库管理系统、编译程序、汇编程序和网络软件等,B 选项正确。A、C、D 选项为应用软件。8.将 E-R图转
35、换为关系模式时,E-R 图中的实体和联系都可以表示为_。 A.属性 B.键 C.关系 D.域(分数:1.00)A.B.C. D.解析:解析 采用 E-R方法得到的全局概念模型是对信息世界的描述,并不适用于计算机处理,为了适合关系数据库系统的处理,必须将 E-R图转换成关系模式。这就是逻辑设计的主要内容。E-R 图是由实体、属性和联系组成,而关系模式中只有一种元素关系。故 C选项正确。9.有两个关系 R与 S如下,由关系 R和 S得到关系 T,则所使用的操作为_。 RA A1a 0b 1SB B1 B2f 3 k2n 2 x1TA A1 B B1 B2a 0 f 3 k2a 0 n 2 x1b
36、1 f 3 k2b 1 n 2 x1 A.并 B.自然连接 C.笛卡尔积 D.交(分数:1.00)A.B.C. D.解析:解析 用于查询的 3个操作无法用传统的集合运算表示,引入的运算为投影运算、选择运算、笛卡尔积。常用的扩充运算有交、除、连接及自然连接等。并:RS 是将 S中的记录追加到 R后面。交:RS结果是既属于 R又属于 S的记录组成的集合。上述两种操作中,关系 R与 S要求有相同的结构,故 A、D选项错误。自然连接:去掉重复属性的等值连接。自然连接要求两个关系中进行比较的是相同的属性,并且进行等值连接,本题中结果 T应为空,B 选项错误。若 T为笛卡尔积,结果为 5元关系,元组个数为
37、4,且计算结果与题目相符,故 C选项正确。10.在数据管理的三个发展阶段中,数据的共享性好且冗余度最小的是_。 A.人工管理阶段 B.文件系统阶段 C.数据库系统阶段 D.面向数据应用系统阶段(分数:1.00)A.B.C. D.解析:解析 数据管理技术的发展经历了 3个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。由下表可知 C选项正确。 特点人工管理阶段文件系统阶段数据库系统阶段管理 人文件数据者 系统库管理系统面向对象某个应用程序某个应用程序现实世界共享程度无共享,冗余度大共享性差,冗余度大共享性大,冗余度小独立性不独立,完全依赖于程序独立性差具有高度的物理独立性和一定的逻辑独立性结构
38、化无结构记录内有结构,整体结构化,用整体无结构数据模型描述控制能力由应用程序控制由应用程序控制由DBMS提供数据安全性、完整性、并发控制和恢复11.以下叙述中错误的是_。 A.书写风格良好的程序执行效率高 B.书写风格良好的程序易读性好 C.C程序可以在一行上写多条语句 D.C程序允许将一条语句分写在多行上(分数:1.00)A. B.C.D.解析:解析 书写风格良好的程序易读性好,方便团队合作,分模块来完成复杂的程序设计,B 选项叙述正确。但是书写风格与程序执行效率无关,程序执行效率与程序的数据结构有关,由算法的时间复杂度和空间复杂度决定,A 选项叙述错误。C 语言程序书写规范中,良好的书写习
39、惯中一般一行写一条语句,这样方便阅读,但是一行写多条语句是符合 C程序编写规则的,C 选项叙述正确。C 程序允许将一条较长的语句分写在多行,D 选项叙述正确。叙述中错误的是 A选项,故选择 A选项。12.在 C语言中,以下选项中不能正确表示 101000之值的是_。 A.1.0E4.0 B.1.FA C.10E3 D.1.0e4(分数:1.00)A. B.C.D.解析:解析 实型常量用带小数点的数字表示,其值有两种表达形式,分别为十进制小数形式和指数形式。指数形式由十进制数加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。指数形式中阶码必须是整型常量,而 A选项中 4.0是浮点数
40、,所以 A选项不能正确表示 101000之值,B、C、D 选项都表示正确并且值为 10000,故选择 A选项。13.设有定义:int a=0,b=1,c=1;以下选项中,表达式值与其他三个不同的是_。 A.b=a=c B.a=b=c C.a=c=b D.c=a!=c(分数:1.00)A. B.C.D.解析:解析 赋值运算结合性为由右向左结合,赋值运算符左值为变量,右值为变量或常量,且左右两边数据类型相同才能实现赋值。成功实现赋值后以左值为返回值。逻辑表达式成立则返回 1,不成立返回0。A 选项逻辑表达式 a=c不成立(0),则 b=0,表达式值为 0。B 选项中将 c赋值给 b,b=1,再将
41、b赋给a,a=1,表达式值为 1。C 选项逻辑表达式 c=b成立(1),则 a=1,表达式值为 1。D 选项逻辑表达式 a!=c成立(1),则 c=1,表达式值为 1。A 选项与其他选项不同,故 A选项正确。14.设有两行定义语句:int scanf;float case;则以下叙述正确的是_。 A.两行定义语句都不合法 B.两行定义语句都合法 C.第 1行语句不合法 D.第 2行语句不合法(分数:1.00)A.B.C.D. 解析:解析 合法的标识符由字母(大、小写均可)、数字和下划线组成,并且必须以字母或下划线开头。关键字是指被 C语言保留的,不能用作其他用途的一些标识符,它们在程序中都代表
42、着固定的含义,用户不可重新定义。预定义标识符是系统已经有过定义的标识符,用户可以重新定义,可以作为变量名。scanf为库函数名,属于预定义标识符,可以被用户重定义,所以第一行语句合法。case 为关键字,是选择结构 switch语句中的关键字,不可被用户重定义,所以第二行语句不合法。故 D选项正确。15.设有定义:double x=2.12;,以下不能完整输出变量 x值的语句是_。 A.printf(“x=%5.0f/n“,x); B.printf(“x=%f/n“,x); C.printf(“x=%lf/n“,x); D.printf(“x=%0.5f/n“,x);(分数:1.00)A. B
43、.C.D.解析:解析 float 类型变量有效位数为 67 位,double 类型变量有效位数为 1516 位。printf 函数控制字符%f 输出 float类型,%lf 输出 double类型。对于 float或 double型数据,在指定数据输出宽度的同时,也可以指定小数位的位数,格式为%m.nf,表示数据输出总的宽度为 m位,其中小数部分占 n位。当数据的小数位多于指定宽度 n时,截去右边多余的小数,并对截去的第一位小数做四舍五入处理;而当数据的小数位少于指定宽度 n时,在小数的右边补零;当 m小于有效位数时,整数部分输出所有有效数字并且自动对齐,小数部分按照 n指定位数输出。A 选项
44、按照 float格式输出数据,宽度为 5位,保留小数0位,输出为 2,不能完整输出 x,选择 A选项。B 选项按照 float格式输出数据,输出为 2.120000。C 选项按照 double格式输出数据,输出为 2.120000。D 选项按照 float格式输出数据,保留小数位数为 5,输出为 2.12000。16.设有定义:int a,b;float x,y;,则以下选项中对语句所作的注释叙述错误的是_。 A.scanf(“%d%d%f“,/*多余的格式符%f 完全不起作用*/ B.scanf(“%d%d“,/*多余的输入项不能获得输入数据*/ C.scanf(“%d%d“,/*输入项与格式符类型不匹配,变量 b和 X得不到正确的输入数据+/ D.scanf(“Input:%d%d“,/*格式串中允许加入格式符以外的字符串*/(分数:1.00)A. B.C.D.解析:解析 A 选项中%f 是起作用的,程序从键盘正确的读入前两个数据并且保存在指定的地址,读入第三个数据后,将其放入缓冲区,然后寻找应该存放的地址,因为没有找到,程序会发生错误而中断,A选项注释错误,所以选择 A选项。B 选项由于 scanf接收数据只有两个,所以变