1、全国计算机等级考试二级 C 语言真题 2011 年 3 月及答案解析(总分:70.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列关于栈叙述正确的是_。(分数:1.00)A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.以上三种说法都不对2.下列叙述中正确的是_。(分数:1.00)A.有一个以上根结点的数据结构不一定是非线性结构B.只有一个根结点的数据结构不一定是线性结构C.循环链表是非线性结构D.双向链表是非线性结构3.某二叉树共有 7 个结点,其中叶子结点只有 1 个,则该二又树的深度为_。(假设根结点在第 1 层)(分数:1.
2、00)A.3B.4C.6D.74.在软件开发中,需求分析阶段产生的主要文档是_。(分数:1.00)A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书5.结构化程序所要求的基本结构不包括_。(分数:1.00)A.顺序结构B.GOTO 跳转C.选择(分支)结构D.重复(循环)结构6.下面描述中错误的是_。(分数:1.00)A.系统总体结构图支持软件系统的详细设计B.软件设计是将软件需求转换为软件表示的过程C.数据结构与数据库设计是软件设计的任务之一D.PAD 图是软件详细设计的表示工具7.负责数据库中查询操作的数据库语言是_。(分数:1.00)A.数据定义语言B.数据管理
3、语言C.数据操纵语言D.数据控制语言8.一个教师可讲授多门课程,一门课程可由多个教师讲授,则实体教师和课程间的联系是_。(分数:1.00)A.1:1 联系B.1:m 联系C.m:1 联系D.m:n 联系9.有三个关系 R、S 和 T 如下:(分数:1.00)A.B.C.D.10.定义无符号整数类为 UInt,下面可以作为类 T 实例化值的是_。(分数:1.00)A.-369B.369C.0.369D.整数集合 1,2,3,4,511.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是_。(分数:1.00)A.C 语言程序仅可以编译执行B.C 语言程序仅可以解释执行C.C
4、语言程序既可以编译执行,又可以解释执行D.以上说法都不对12.以下叙述中错误的是_。(分数:1.00)A.C 语言的可执行程序是由一系列机器指令构成的B.用 C 语言编写的源程序不能直接在计算机上运行C.通过编译得到的二进制目标程序需要连接才可以运行D.在没有安装 C 语言集成开发环境的机器上不能运行 C 源程序生成的.exe 文件13.以下选项中不能用做 C 程序合法常量的是_。(分数:1.00)A.1, 234B./123C.123D.“/x7G“14.以下选项中可用做 C 程序合法实数的是_。(分数:1.00)A1e0B.3.0e0.2C.E9D.9.12E15.若有定义语句:int a
5、=3,b=2,c=1;,以下选项中错误的赋值表达式是_。(分数:1.00)A.a=(b=4)=3;B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);16.有以下程序段char name20; int num;scanf(“name: %s num=%d“, name, num):当执行上述程序段,并从键盘输入:name=Lili num=1001回车后,name 的值为_。(分数:1.00)A.LiliB.name=LiliC.Lili num=D.name=Lili num=100117.if 语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是_
6、。(分数:1.00)A.必须是逻辑值B.必须是整数值C.必须是正数D.可以是任意合法的数值18.有以下程序#includestdio.hmsin()int x=011;printf(“%d/n“, +x);程序运行后的输出结果是_。(分数:1.00)A.12B.11C.10D.919.有以下程序#includestdio.hmain()int s;scanf(“%d“, s);while(s0)switch(s)casel: printf(“%d“, s+5);case2: printf(“%d“, s+4); break;case3: printf(“%d“, s+3);default: p
7、rintf(“%d“, s+1);break;scanf(“%d“, s);运行时,若输入 1 2 3 4 5 0回车,则输出结果是_。(分数:1.00)A.6566456B.66656C.66666D.666665620.有以下程序int i, n;for(i=0; i8; i+)n=rand()%5;switch(n)case 1:case 3: printf(“%d/n“, n); break;case 2: case 4: printf(“%d/n“, n) continue;case 0: exit(0);printf(“%d/n“, n);以下关于程序执行情况的叙述,正确的是_。(
8、分数:1.00)A.for 循环语句固定执行 8 次B.当产生的随机数 n 为 4 时结束循环操作C.当产生的随机数 n 为 1 和 2 时不做任何操作D.当产生的随机数 n 为 0 时结束程序运行21.有以下程序#includestdio.hmain()char s=“012xy/08s34f4w2“;int i, n=0;for(i=0; si!=0; i+)if(si=0si=9) n+;printf(“%d/n“, n);程序运行后的输出结果是_。(分数:1.00)A.0B.3C.7D.822.若 i 和 k 都是 int 类型变量,有以下 for 语句for(i=0, k=-1; k
9、=1; k+)printf(“*/n“);下面关于语句执行情况的叙述中正确的是_。(分数:1.00)A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环23.有以下程序#includestdio.hmain()char b, c; int i;b=a; c=A;for(i=0; i6;i+)if(i%2) putchar(i+b);else putchar(i+c);printf(“/n“);程序运行后的输出结果是_。(分数:1.00)A.ABCDEFB.AbCdEfC.aBcDeFD.abcdef24.设有定义:double x10, *p=x;,以下能给数组 x 下标
10、为 6 的元素读入数据的正确语句是_。(分数:1.00)A.scanf(“%f, x6);B.scanf(“%1f“, *(x+6);C.scanf(“%1f“, p+6);D.scanf(“%1f“, p6);25.有以下程序(说明:字母 A 的 ASCII 码值是 65) #includestdio.hvoid fun(char *s)while(*s)if(*s%2) printf (“%c“, *s);s+;main()char a=“BYTE“;fun((分数:1.00)A.; printf(“/n/26.有以下程序#includestdi0.hmain()while(getchar
11、()!=/n);(分数:1.00)A.B.C.D.27.有以下程序#includestdio.hmain()(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.028.若有定义语句:char s310, (*k)3, *p;,则以下赋值语句正确的是_。(分数:1.00)A.p=s;B.p=k;C.p=s0;D.k=s;29.有以下程序#includestdio.hvoid fun(char *C)while (*C)if(*c=a
12、*c=z)*c=*c-(a-A);c+;main()char s81;gets(s); fun(s); puts(s):当执行程序时从键盘上输入 Hello Beijing回车,则程序的输出结果是_。(分数:1.00)A.hello BeijingB.Hello BeijingC.HELLO BEIJINGD.hELLO Beijing30.以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#includestdio.h#define N 10void fun(int xN)int i=0;while (iN)scanf(“%d“,_)在程序中下画线处应填入的是_。(分数:1.00)
13、A.x+iB.xi+1C.x+(i+)D.x+i31.有以下程序#includestdio.hmain()(char a3 0, b30;scanf(“%s“,(分数:1.00)A.;gets(B.;printf(“%s/n%s/n“, a,b);程序运行时若输入:how are you? I am fine回车32.设有如下函数定义int fun(int k)if(k1) return 0;eise if(k=1) return 1;else return fun(k-1)+1;若执行调用语句:n=fun(3);,则函数 fun 总共被调用的次数是_。(分数:1.00)A.2B.3C.4D.
14、533.有以下程序#includestdio.hint fun(int x, int y)if(x!=y) return (x+y)/2);else return (x);main()( int a=4, b=5, c=6;printf(“%d/n“, fun(2*a, fun(b,c);程序运行后的输出结果是_。(分数:1.00)A.3B.6C.8D.1234.有以下程序#includestdio.hint fun()static int x=1;x*=2;return x;main()( int i, s=1;for(i=1; i=3; i+)s*=fun();printf(“%d/n“,
15、 s);程序运行后的输出结果是_。(分数:1.00)A.0B.10C.30D.6435.有以下程序#includestdio.h#defitie S(x) 4*(x)*x+1main()int k=5, J=2;printf(“%d/n“,S(k+j);程序运行后的输出结果是_。(分数:1.00)A.197B.143C.33D.2836.设有定义:structchar mark12; int num1; double num2; t1, t2;,若变量均已正确赋初值,则以下语句中错误的是_。(分数:1.00)A.t1=t2;B.t2.num1=t1.num1;C.t2.mark=t1.mark
16、;D.t2.num2=t1.num2;37.有以下程序#includestdio.hstruct ord(int x, y;dt2=(1, 2, 3, 4;main()struct ord *p=dt;printf(“%d, “, +(p-x); printf(“%d/n“, +(p-y);程序运行后的输出结果是_。(分数:1.00)A.1,2B.4,1C.3,4D.2,338.有以下程序#includestdio.hstruct Sint a, b;) data2=10, 100, 20, 200;main()struct S p=data1;printf(“%d/n“, +(p.(分数:1
17、.00)A.);c=a3;printf(“%d/n“, c);程序运行后的输出结果是_。(分数:1.00)A.32B.16C.1D.040.设 fp 已定义,执行语句 fp=fopen(“file“, “w“);后,以下针对文本文件 file 操作叙述的选项中正确的是_。(分数:1.00)A.写操作结束后可以从头开始读B.只能写不能读C.可以在原有内容后追加写D.可以随意读和写二、填空题(总题数:15,分数:30.00)41.有序线性表能进行二分查找的前提是该线性表必须是 1 存储的。(分数:2.00)填空项 1:_42.一棵二叉树的中序遍历结果为 DBEAFC,前序遍历结果为 ABDECF,
18、则后序遍历结果为_。(分数:2.00)填空项 1:_43.对软件设计的最小单位(模块或程序单元)进行的测试通常称为_测试。(分数:2.00)填空项 1:_44.实体完整性约束要求关系数据库中元组的 1 属性值不能为空。(分数:2.00)填空项 1:_45.在关系 A(S, SN, D)和关系 B(D, CN, NM)中,A 的主关键字是 S,B 的主关键字是 D,则称 1 是关系 A的外码。(分数:2.00)填空项 1:_46.以下程序运行后的输出结果是_。#includestdio.hmain()int a;a=(int)(double)(3/2)+0.5+(int)1.99*2);prin
19、tf(“%d/n“, a);(分数:2.00)填空项 1:_47.有以下程序#includestdio.hmain()int x;scanf(“%d“, x);if(x15) printf(“%d“, x-5);if(x10) printf(“%d“, x);if(x5) printf(“%d/n“, x+5);若程序运行时从键盘输入 12回车,则输出结果为_。(分数:2.00)填空项 1:_48.有以下程序(说明:字符 0 的 ASCII 码值为 48) #includestdio.hmain()char C1, C2;scanf(“%d“, c1);c2=c1+9;printf(“%c%c
20、/n“, c1, c2);若程序运行时从键盘输入 48回车,则输出结果为_。(分数:2.00)填空项 1:_49.有以下函数void prt(char ch, int n)int i;for(i=1; i=n; i+)printf(i%6!=0? “%c“: “%c/n“, ch);执行调用语句 prt(*, 24) ;后,函数共输出了_行*号。(分数:2.00)填空项 1:_50.以下程序运行后的输出结果是_。#includestdio.hmain()int x=10, y=20, t=0;if(x=y)t=x; x=y; y=t;printf(“%d%d/n“, x, y);(分数:2.0
21、0)_51.已知 a 所指的数组中有 N 个元素。函数 fun 的功能是,将下标 k(k0) 开始的后续元素全部向前移动一个位置。请填空。void fun(int aN, int k)int i;for(i=k; iN; i+) a_=ai;(分数:2.00)填空项 1:_52.有以下程序,请在_处填写正确语句,使程序可正常编译运行。#includestdio.h_;main()(double x, y, (*p)();scanf(“%1f%1f“, x, y);p=avg;printf(“%f/n“, (*p)(x, y);double avg(double a, double b)retu
22、rn(a+b)/2);(分数:2.00)填空项 1:_53.以下程序运行后的输出结果是_。#includestdio.hmain()int i, n5=(0);for(i=1; i=4; i+)ni=ni-1*2+1; printf(“%d“, ni);printf(“/n“);(分数:2.00)填空项 1:_54.以下程序运行后的输出结果是_。#includestdio.h#includestdlib.h#includestring.hmain()char *p; int i;p=(char *)malloc(sizeof(char)*20) ;strcpy(p, “welcome“);fo
23、r(i=6; i=0; i-) putchar(*(p+i);printf(“/n“); free(p);(分数:2.00)填空项 1:_55.以下程序运行后的输出结果是_。#includestdio.hmain()FILE *fp; int x6=(1, 2, 3, 4, 5, 6), i;fp=fopen(“test.dat“, “wb“);fwrite(x, sizeof(int), 3, fp);rewind(fp);fread(x, sizeOf(int), 3, fp);for(i=0; i6; i+) printf(“%d“, xi);printf(“/n“);fclose(fp
24、);(分数:2.00)填空项 1:_全国计算机等级考试二级 C 语言真题 2011 年 3 月答案解析(总分:70.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列关于栈叙述正确的是_。(分数:1.00)A.栈顶元素最先能被删除 B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.以上三种说法都不对解析:解析 本题考查的知识点是栈的特点。栈是限定只在一端进行插入与删除的线性表,按照“先进后出”或“后进先出”的原则组织数据。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即本题的答案为 A。
25、2.下列叙述中正确的是_。(分数:1.00)A.有一个以上根结点的数据结构不一定是非线性结构B.只有一个根结点的数据结构不一定是线性结构 C.循环链表是非线性结构D.双向链表是非线性结构解析:解析 本题考查的知识点是数据结构。线性表的链式存储结构称为线性链表,是线性结构,而循环链表和双向链表都是在线性链表的基础上演化而来的,因此,选项 C、D 错误。线性结构必须有且只有一个根结点,因此,选项 A 错误。3.某二叉树共有 7 个结点,其中叶子结点只有 1 个,则该二又树的深度为_。(假设根结点在第 1 层)(分数:1.00)A.3B.4C.6D.7 解析:解析 本题考查的知识点是二叉树。只有当该
26、二叉树的每一层上只有一个结点时,才能满足题目要求,否则,叶子结点数一定会大于 1。4.在软件开发中,需求分析阶段产生的主要文档是_。(分数:1.00)A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书 解析:解析 本题考查的知识点是软件需求分析。软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。5.结构化程序所要求的基本结构不包括_。(分数:1.00)A.顺序结构B.GOTO 跳转 C.选择(分支)结构D.重复(循环)结构解析:解析 本题考查的知识点是结构化程序结构。GOTO 跳转是一条语句。6.下面描述中错误的是_。(分数:1.00)A.系统总
27、体结构图支持软件系统的详细设计 B.软件设计是将软件需求转换为软件表示的过程C.数据结构与数据库设计是软件设计的任务之一D.PAD 图是软件详细设计的表示工具解析:解析 本题考查的知识点是软件设计。系统总体结构图支持软件系统的概要设计,所以应选 A。7.负责数据库中查询操作的数据库语言是_。(分数:1.00)A.数据定义语言B.数据管理语言C.数据操纵语言 D.数据控制语言解析:解析 本题考查的知识点是数据库语言。数据库语言包括如下三点。数据定义语言(DDL)及其翻译程序:主要负责数据的模式定义与数据的物理存取构建。数据操纵语言(DML)及其编译(或解释)程序:主要负责数据的基本操作,包括查询
28、、增加、删除、修改等操作。数据控制语言:主要负责解释每个控制命令的含义,决定如何去执行控制命令。8.一个教师可讲授多门课程,一门课程可由多个教师讲授,则实体教师和课程间的联系是_。(分数:1.00)A.1:1 联系B.1:m 联系C.m:1 联系D.m:n 联系 解析:解析 本题考查的知识点是实体之间的联系。在数据库模型中,实体之间的联系可分为“一对一”、“一对多”和“多对多”三种类型。分析题目可知,本题答案为 D。9.有三个关系 R、S 和 T 如下:(分数:1.00)A.B.C. D.解析:解析 本题考查的知识点是关系运算。选项 A 中,自然连接的条件是两关系间有公共域,通过公共域的相等值
29、进行连接,R 与 S 的公共域为 A 和 B,而 T 中根本不存在,所以选项 A 错误。对于选项 B,R与 S 进行交运算后得到的关系是由既在 R 内又在 S 内的元素组成的,显然 T 不在 S 内,所以选项 B 也错误。对于选项 C,R 与 S 除运算后的域由 R 中不出现在 S 中的域组成,选项 C 正确。对于选项 D,R 与 S 进行并运算得到的关系由属于 R 或属于 S 的元组组成,所以选项 D 也错误。10.定义无符号整数类为 UInt,下面可以作为类 T 实例化值的是_。(分数:1.00)A.-369B.369 C.0.369D.整数集合 1,2,3,4,5解析:解析 本题考查的知
30、识点是数据类型。首选根据题目中的“定义无符号整数类”排除选项 A、选项 C 和选项 D,本题答案为选项 B。11.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是_。(分数:1.00)A.C 语言程序仅可以编译执行 B.C 语言程序仅可以解释执行C.C 语言程序既可以编译执行,又可以解释执行D.以上说法都不对解析:解析 编译型语言编写的程序在执行之前,需要一个专门的编译过程把程序编译成机器语言的文件,比如 exe 文件,再次运行时便不需要重新翻译,直接使用编译的结果便可以了,因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。解释则不同,解释型语言的程
31、序不需要编译,在运行程序的时候才翻译,比如解释型 basic 语言,专门有一个解释器能够直接执行 basic 程序,每个语句都是执行的时候才翻译。这样,解释型语言每执行一次便需要翻译一次,效率低。12.以下叙述中错误的是_。(分数:1.00)A.C 语言的可执行程序是由一系列机器指令构成的B.用 C 语言编写的源程序不能直接在计算机上运行C.通过编译得到的二进制目标程序需要连接才可以运行D.在没有安装 C 语言集成开发环境的机器上不能运行 C 源程序生成的.exe 文件 解析:解析 C 语言的可执行程序是由一系列机器指令组成的,用 C 语言编写的源程序必须经过编译生成二进制目标代码,再经过连接
32、才能运行,并且可以脱离 C 语言集成开发环境。13.以下选项中不能用做 C 程序合法常量的是_。(分数:1.00)A.1, 234 B./123C.123D.“/x7G“解析:解析 常量分为数值常量和字符串常量,选项 A 中书写不合法。14.以下选项中可用做 C 程序合法实数的是_。(分数:1.00)A1e0 B.3.0e0.2C.E9D.9.12E解析:解析 浮点型常量分十进制小数形式和指数形式。指数形式要求字母 e(或者 E)前后必须有数字,且 e 后面的指数必须为整数。所以选项 B、C、D 均是不合法的指数形式。15.若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表
33、达式是_。(分数:1.00)A.a=(b=4)=3; B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);解析:解析 此题考查 C 语言中赋值表达式的概念。用一个赋值运算符“=”将一个变量和一个表达式连接起来的式子称为赋值表达式。选项 A 中缺少表达式。16.有以下程序段char name20; int num;scanf(“name: %s num=%d“, name, num):当执行上述程序段,并从键盘输入:name=Lili num=1001回车后,name 的值为_。(分数:1.00)A.Lili B.name=LiliC.Lili num=D.name=Lili
34、 num=1001解析:解析 在 C 语言中输入多个字符串时,系统会把空格字符作为输入的字符串之间的分隔符。本题中,由于输入两个变量,所以中间应该以回车键为间隔,当从键盘输入 name=Lili num=1001 只是输入第一个变量,并且只将 Lili 赋值给了 name。所以正确答案为 A 选项。17.if 语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是_。(分数:1.00)A.必须是逻辑值B.必须是整数值C.必须是正数D.可以是任意合法的数值 解析:解析 if 语句中表达式可以为逻辑值,也可以为任意合法的数值。所以正确的答案为 D 选项。18.有以下程序#inc
35、ludestdio.hmsin()int x=011;printf(“%d/n“, +x);程序运行后的输出结果是_。(分数:1.00)A.12B.11C.10 D.9解析:解析 阅读此段程序可知,x=011 表示按照八进制赋值,则十进制数为 9,所以输出+x 的结果为10。19.有以下程序#includestdio.hmain()int s;scanf(“%d“, s);while(s0)switch(s)casel: printf(“%d“, s+5);case2: printf(“%d“, s+4); break;case3: printf(“%d“, s+3);default: pri
36、ntf(“%d“, s+1);break;scanf(“%d“, s);运行时,若输入 1 2 3 4 5 0回车,则输出结果是_。(分数:1.00)A.6566456 B.66656C.66666D.6666656解析:解析 switch 语句执行完一个 case 语句后,流程控制转移到下一个 case 继续执行,遇到 break会跳出本次循环。本题中输入 1 时会输出 65,输入 2 时会输出 6,输入 3 时会输出 64,输入 4 时会输出5,输入 5 时会输出 6。所以正确答案为 A 选项。20.有以下程序int i, n;for(i=0; i8; i+)n=rand()%5;swit
37、ch(n)case 1:case 3: printf(“%d/n“, n); break;case 2: case 4: printf(“%d/n“, n) continue;case 0: exit(0);printf(“%d/n“, n);以下关于程序执行情况的叙述,正确的是_。(分数:1.00)A.for 循环语句固定执行 8 次B.当产生的随机数 n 为 4 时结束循环操作C.当产生的随机数 n 为 1 和 2 时不做任何操作D.当产生的随机数 n 为 0 时结束程序运行 解析:解析 阅读本程序可知,当产生随机数为 4 时,会继续执行循环;当产生随机数为 1 和 2 时,会顺势执行 c
38、ase 1 或 case 2 下面的语句,进而输出结果;当产生随机数为 O 时,正常结束程序的运行。for 循环语句随着产生的随机数的不同,执行的次数也不相同。21.有以下程序#includestdio.hmain()char s=“012xy/08s34f4w2“;int i, n=0;for(i=0; si!=0; i+)if(si=0si=9) n+;printf(“%d/n“, n);程序运行后的输出结果是_。(分数:1.00)A.0B.3 C.7D.8解析:解析 阅读本程序可知,字符串 s 的前三个字符满足 if 语句,所以 n+,当遇到/0时,for 循环终止,所以最后输出 n 值
39、为 3。22.若 i 和 k 都是 int 类型变量,有以下 for 语句for(i=0, k=-1; k=1; k+)printf(“*/n“);下面关于语句执行情况的叙述中正确的是_。(分数:1.00)A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环 解析:解析 本题中 for 循环判断条件为 k=1,这个语句是赋值语句,总是正确的,所以会陷入无限循环中。23.有以下程序#includestdio.hmain()char b, c; int i;b=a; c=A;for(i=0; i6;i+)if(i%2) putchar(i+b);else putchar(i+
40、c);printf(“/n“);程序运行后的输出结果是_。(分数:1.00)A.ABCDEFB.AbCdEf C.aBcDeFD.abcdef解析:解析 本题中,当 i 为偶数时,即 0、2、4,执行 putchar(i+c)会依次输出 ACE;当 i 为奇数时,即 1、3、5,执行 putchar(i+b)会依次输出 bdf,所以最终输出 AbCdEf。24.设有定义:double x10, *p=x;,以下能给数组 x 下标为 6 的元素读入数据的正确语句是_。(分数:1.00)A.scanf(“%f, x6);B.scanf(“%1f“, *(x+6);C.scanf(“%1f“, p+
41、6); D.scanf(“%1f“, p6);解析:解析 选项 A 中 x元素类型为 double,所以输入%f 有误;选项 B 中,虽然 x+6 为指针,但*(x+6) 并非地址;选项 D 中使用 p6表示的方式不正确。25.有以下程序(说明:字母 A 的 ASCII 码值是 65) #includestdio.hvoid fun(char *s)while(*s)if(*s%2) printf (“%c“, *s);s+;main()char a=“BYTE“;fun((分数:1.00)A.; printf(“/n/解析:解析 阅读程序可知,函数只会输出 ASCII 码值为奇数的字母,执行
42、 fun(a)时,依次取出 a中的字母,当取第一个字母 B 时,因为 B 的 ASCII 码值为 66,所以不会输出 B,字母 Y 的 ASCII 码为 89,字母 T 的 ASCII 码值为 84,字母 E 的 ASCII 码值为 69,所以最后输出字母 YE。正确答案为 D。26.有以下程序#includestdi0.hmain()while(getchar()!=/n);(分数:1.00)A.B.C. D.解析:解析 本题中 while 循环条件为 getchar()!=/n,表示只要不输入回车键,getchar()!=/n语句一直为真,则 while 循环会出现空循环,当按下回车键后跳
43、出 while 循环执行下一条语句。27.有以下程序#includestdio.hmain()(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 解析:解析 根据在 if.else 语句中,else 总是和最近的 if 配对原则,本题中的层次关系是:if(!x)与elseif(x=0)是一组,位于循环的最外层。而 if(x)与 else 是一组,位于 else if(x=0)条件的内层。由此可知条件均不成立,所以 y 未进行任何
44、操作,仍为 0。28.若有定义语句:char s310, (*k)3, *p;,则以下赋值语句正确的是_。(分数:1.00)A.p=s;B.p=k;C.p=s0; D.k=s;解析:解析 分析题目可知,选项 A 的含义是将二维数组赋值给了一个指针,选项 B 的含义是将一位数组的指针赋值给了一个指针,选项 C 的含义是将一个一位数组赋值给了一个指针,选项 D 的含义是将二维数组赋值给了指向一维数组的指针。由上述可知,正确选项为 C。29.有以下程序#includestdio.hvoid fun(char *C)while (*C)if(*c=a *c=z)*c=*c-(a-A);c+;main(
45、)char s81;gets(s); fun(s); puts(s):当执行程序时从键盘上输入 Hello Beijing回车,则程序的输出结果是_。(分数:1.00)A.hello BeijingB.Hello BeijingC.HELLO BEIJING D.hELLO Beijing解析:解析 阅读此程序可知,本题中 fun 函数的作用是将字符串中的小写字母变为大写字母。所以程序输出的结果是 HELLO BEIJING。30.以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#includestdio.h#define N 10void fun(int xN)int i=0;w
46、hile (iN)scanf(“%d“,_)在程序中下画线处应填入的是_。(分数:1.00)A.x+iB.xi+1C.x+(i+) D.x+i解析:解析 阅读程序,将选项 A 带入程序中的空缺处,可以实现为 x0赋值,不能为其他的元素赋值,即实现不了循环。将选项 B 带入空缺处,同选项 A 一样实现不了循环赋值。将选项 D 带入空缺处,不能实现为 x0赋值,而且还会导致出界。所以正确答案为选项 C。31.有以下程序#includestdio.hmain()(char a3 0, b30;scanf(“%s“,(分数:1.00)A.;gets(B.;printf(“%s/n%s/n“, a,b);程序运行时若输入:how are you? I am