ImageVerifierCode 换一换
格式:DOC , 页数:30 ,大小:88KB ,
资源ID:492776      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-492776.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]2009年3月国家二级(C语言)笔试真题试卷及答案与解析.doc)为本站会员(eventdump275)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

[计算机类试卷]2009年3月国家二级(C语言)笔试真题试卷及答案与解析.doc

1、2009年 3月国家二级( C语言)笔试真题试卷及答案与解析 1 下列叙述中正确的是 _。 ( A)栈是 “先进先出 ”的线性表 ( B)队列是 “先进后出 ”的线性表 ( C)循环队列是非线性结构 ( D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 2 支持子程序调用的数据结构是 _。 ( A)栈 ( B)树 ( C)队列 ( D)二叉树 3 某二叉树有 5个度为 2的结点,则该二叉树中的叶子结点数是 _。 ( A) 10 ( B) 8 ( C) 6 ( D) 4 4 下列排 序方法中,最坏情况下比较次数最少的是 _。 ( A)冒泡排序 ( B)简单选择排序 ( C)直接插入排

2、序 ( D)堆排序 5 软件按功能可以分为:应用软件、系统软件和支撑软件 (或工具软件 )。下面属于应用软件的是 _。 ( A)编译程序 ( B)操作系统 ( C)教务管理系统 ( D)汇编程序 6 下面叙述中错误的是 _。 ( A)软件测试的目的是发现错误并改正错误 ( B)对被调试的程序进行 “错误定位 ”是程序调试的必要步骤 ( C)程序调试通常也称为 Debug ( D)软件测 试应严格执行测试计划,排除测试的随意性 7 耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 _。 ( A)提高耦合性降低内聚性有利于提高模块的独立性 ( B)降低耦合性提高内聚性有利于提高模块的

3、独立性 ( C)耦合性是指 个模块内部各个元素间彼此结合的紧密程度 ( D)内聚性是指模块间互相连接的紧密程度 8 数据库应用系统中的核心问题是 _。 ( A)数据库设计 ( B)数据库系统设计 ( C)数据库维护 ( D)数据库管理员培训 9 有两个关系 R, S如下: 由关 系 R通过运算得到关系 S,则所使用的运算为 _。 ( A)选择 ( B)投影 ( C)插入 ( D)连接 10 将 E-R图转换为关系模式时,实体和联系都可以表示为 _。 ( A)属性 ( B)键 ( C)关系 ( D)域 11 以下选项中合法的标识符是 _。 ( A) 1_1 ( B) 11 ( C) _11 (

4、D) 1_ _ 12 若函数中有定义语句: int k;,则 _。 ( A)系统将自动绐 K赋初值 0 ( B)这时 K中的值无定义 ( C)系统将自动绐 K赋初值 -1 ( D)这时 K中无任何值 13 以下选项中,能用作数据常量的是 _。 ( A) 0115 ( B) 0118 ( C) 1.5e1.5 ( D) 115L 14 设有定义 :int x=2;,以下表达式中,值不为 6的是 _。 ( A) x*=x+1 ( B) x+,2*x ( C) x*=(1+x) ( D) 2*x,x+=2 15 程序段: int x=12;doub1e y=3.141593; printf(“%d%

5、8.6f“x,y);的输出结果是_。 ( A) 123.141593 ( B) 12 3.141593 ( C) 12,3.141593 ( D) 123,1415930 16 若有定义语句: doub1e x,y,*px,*py;执行了 px=py=之后,正确的输入语句是 _。 ( A) scanf(“%f%f“ ( B) scanf(“%f%f“ ( C) scanf(“%1f%lf“,px,y); ( D) scanf(“%lf%lf“,x,y); 17 以下是 if语句的基本形式: if(表达式 ) 语句 其中 “表达式 ”_。 ( A)必须是逻辑表达式 ( B)必须是关系表达式 (

6、C)必须是逻辑表达式或关系表达式 ( D)可以是任意合法的表达式 18 有以下程序 #include stdio.h main() int x; scanf(“%d“, if(x =3); else if(x!=1O) printf(“%dn“,x); 程序运行时,输入的值在_范围才会有输出结果。 ( A)不等于 10的整数 ( B)大于 3且不等 10的整数 ( C)大于 3或等于 10的整数 ( D)小于 3的整数 19 有以下程序 #include stdio.h main() int a=1,b=2,c=3,d=0; if(a 1 else printf(%d,%d,%dn“,a,b,

7、c); else printf(“%d,%d,%on“,a,b,c); 程序运行后的输出结果是 _。 ( A) 1,2,3 ( B) 1,3,2 ( C) 1,3,3 ( D) 3,2,1 20 以下程序段中的变量已正确定义 for(=0;i 4;i+,i+) for(k=1;k3;k+);printf(“*“) 程序 段的输出结果是 _。 ( A) * ( B) * ( C) * ( D) * 21 有以下程序 #inc1ude stdio.h main() char*s=“ABC“; do printf(“%d“,*s%10); s+; while(*s); 注意字母 A的 ASCII码值

8、为 65。程序运行后的输出结果是 _。 ( A) 5670 ( B) 656667 ( C) 567 ( D) ABC 22 设变量已正确定义,以下不能统计出一行中输入字符个数 (不包含回车符 )的程序段是 _。 ( A) n=0; while(ch getchar()!=n)n+; ( B) n=0; while(getchar()!=n)n+; ( C) for(n=0;getchar()!=n;n+); ( D) n=0;for(ch=getchar();ch!=n;n+); 23 有以下程序 #include sldio.h main() int a1,a2; char c1,c2;

9、scanf(“%d%c%d,%c“, printf(“%d,%c,%d,%c,a1,c1,a2,c2); 若想通过键盘输入,使得 a1的值为 12, a2的值为 34, c1的值为字符 a, c2的值为字符 b,程序输出结果是 (以下 代表空格, CR代表回车 )_. ( A) 12a34b CR ( B) 12a34b CR ( C) 12a34b CR ( D) 12a34b CR 24 有以下程序 #inc1ude stdio.h int f(int x,int y) return(y-x)*x);) main() int a=3,b=4,c=5,d; d=f(f(a,B) ,f(a,C

10、); printf(“%dn“,D); 程序运行后的输出结果是 _。 ( A) 10 ( B) 9 ( C) 8 ( D) 7 25 有以下程序 #inc1ude stdio.h void fun(char*s) while(*s) if(*s%2 0) printf(“%c“,*s); s+ main() char a=“good“; fun(A) ; prntf(“n“); 注意:字母 a的 ASCII码值为97,程序运行后的输出结果是 _。 ( A) d ( B) go ( C) god ( D) good 26 有以下程序 #include stdio.h void fun(int*a

11、,int*B) int*c; c=a;a=b;b=c; main() int x=3, y=5,*p= fun(p,q); printf(“%d,%d,“,*p,*q); fun( printf(“ %d,%dn“,*p,*q); 程序运行后的输出结果是 _。 ( A) 3,5,5,3 ( B) 3,5,3,5 ( C) 5,3,3,5 ( D) 5,3,5,3 27 有以下程序 #include stdio.h void f(int *p,int *q); main() int m=1,n=2,*r= f(r, printf(“%d,%d“,m,n); void f(int*p,int*q)

12、 p=p+1; *q=*q+1;) 程序运行后的输出结果是 _。 ( A) 1,3 ( B) 2,3 ( C) 1,4 ( D) 1,2 28 以下函数按每珩 8个输出数组中的数 据 void fun( iht*w, int n) inti; for(i=0;i n,i+) _ printf(“%d“,wi); printf(“n“); 下划线处应填入的语句是 _。 ( A) if(i/8 0)printf(“n); ( B) if(i/8=0)continue; ( C) if(i%8=0)printf(“n“); ( D) if(i%8=0)continue; 29 若有以下定义 intx

13、10,*pt=x; 则对 x数组元素的正确引用是 _。 ( A) *int i=O;,以下不能将 行 (不超过 80个字符 )带有空格的字符串正确读入的语句或语句组是 _。 ( A) gets(s); ( B) white(si+=getchar()!=n);si=0; ( C) scanf(“%s“,s); ( D) d0scanf(“%c“,while(si+!=n;si=0; 31 有以下程序 #include stdio.h main() char*a=“abcd“,“ef“,“gh“,“ijk“; int i; for(i=0;i 4;i+) printf(“%c“,*ai); 程序

14、运行后的输出结果是 _。 ( A) agei ( B) dfhk ( C) abcd ( D) abcdefghijk 32 以下选项中正确的语句组是 _。 ( A) chars;s=“BOOK!“; ( B) char*s;s=“BOOK!“; ( C) chars10;s=“BOOK!“; ( D) char*s;S=“BOOK!“; 33 有以下程序 #include stdio.h int fun(int x;int y) if(x y)reurn(x); else return(x+y)/2); main() int a=4,b=5,c=6; printf(“%dn“,fun(2*a

15、,fun(b,c); 程序运行后的输出结果是 _。 ( A) 3 ( B) 6 ( C) 8 ( D) 12 34 设函数中有整型变量 n,为保证其在未赋初值的情况下初值为 0,应选择的存储类别是 _。 ( A) auto ( B) register ( C) static ( D) auto或 register 35 有以下程序 #include stdio.h intt b=2; int fun(int*k) b=*k+b;return(b); main() int a10=1,2,3,4,5,6,7,8,i; for(i=2;i4;i+) b=fun( printf(“%d“,b); p

16、rint(“n“); 程序运行后的输出结果是 _。 ( A) 10 12 ( B) 8 10 ( C) 10 28 ( D) 10 16 36 有以下程序 #include stdio.h #define PT3.5; #define S(x)PT*x*x; main() inta=1,b2; printf(“%4.1fn“,S(a+b); 程序运行后的输出结果是_。 ( A) 14.0 ( B) 31.5 ( C) 7.5 ( D)程序有错无输出结果 37 有以下程序 #include stdio.h struct ord int x,y; dt2=1,2,3,4; mare() struc

17、t ord*p=dt; printf(“%d,“,+p- x); printf(“%dn“,+p-y); 程序的运行结果是 _。 ( A) 1,2 ( B) 2,3 ( C) 3,4 ( D) 4,1 38 设有宏定义: #define IsDIV(k,n) (k%n=1)?1:0)且变量 m已正确定义并赋值,则宏调用: IsDIV(m,5) t=(a2)|b;printf(“%dn“,t); 程序运行后的输出结果是 _。 ( A) 21 ( B) 11 ( C) 6 ( D) 1 40 有以下程序 #include stdio.h main() FILE*f; f=fopen(“filea.

18、txt“,“w“); fprintf(f,“abc“) fclose(f); 若文本文件 filea.txt中原有的内容为: hello,则运行以上程序后,文件 filea.txt中的内容为 ( A) helloabc ( B) abclo ( C) abc ( D) abchello 41 假设用 个长度为 50的数组 (数组元素的下标从 0至到 49)作为栈的存储空间,栈底指针 bottom指向栈底元素,栈顶揩针 top指向栈顶元素,如果 bottomn=49,top=30(数 组下标 ),则栈中具有【 】个元素。 42 软件 测试可分为白盒测试和黑盒测试。基本路径测试属于【 】测试。 4

19、3 符合结构化原则的三种基本控制结构是:选择结构、循环结构和【 】。 44 数据库系统的核心是【 】。 45 在 E-R图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是【 】框。 46 表达式 (int)(double)(5/2)+2.5)的值是【 】 47 若变量 x、 y已定义为 int类型且 x的值为 99, y的值为 9,请将输出语printf(【 】 ,x/y);补充完整,使其输出的计算机结果形式为: x/y=11。 48 有以下程序 #include stdio.h main() char c1,c2; scanf(“%c“,*c1); while(c1 65|c1 90

20、) scanf(“%c“, c2=c1+32; printf(“%c,%cn“,c1,c2); 程序运行输入 6回车后,自否输出结果、结束运行 (请回 答能或不能 )【 】。 49 以下程序运行后的输出结果是【 】。 #include stdio.h main() int k=1,s=0; do if(k%2)!=0) continue; s+=k; k+; while(k 10); printf(“s+%dn“,s); 50 下列程序运行时,若输入 labcedf2df回车输出结果为【 】。 #include stdio.h main() char a=0,ch; while(ch=getc

21、har()!=n) if(a%2!=0 a+;prtchar(ch); printf(“n“); 51 有以下程序,程序执行后,输出结果 是【 】 #include stdio.h void fun(int*A) a0=a1; main() int a10=10,9,8,7,6,5,4,3,2,1,i; for(i=2;i 1=0;i-) fun( for(i=0;i 10;i+) printf(“%d,ai); printf(“n“); 52 请将以下程序中的函数声明语补充完整。 #include stdio.h int【 】 main() int x,y,(*p)(); sccanf(“%

22、d%d“, p=max; printf(%dn“,(*p)(x,y); int max(int a,int b) return(a b?a:b); 53 以下程序用 来判断指定文件是否能正常打开,请填空。 #include stdio.h main() FILE*fp; if(fp=fopen(“test.txt“,“r“)【 】 ) printf(“未能打开文件 !n“); else printf(“文件打开成功! n“); 54 下列程序的运行结果为【 】。 #include stdio.h #include string.h int a; char b10; double c; ; vo

23、id f (struct A *t); main() struct A a=1001,“ZhangDa“,1098.0; f( printf(“%d,%s,%6.lfn“,a.a,a.b,a.C); void f(struct A*t) strcpy(t- b, “ChangRong“); 55 以下程序把三个 NODEIYPE型的变量链接成 个简单的链表,并在 while循环中输出链表结点数据域中的数据。请填空。 #include stdio.h struct node int data;struct node*next;); typedef struct node NODETYPE; ma

24、in() NODETYPEa,b,c,*h,*p; a.data=10;b.data=20;c.data=30;h= anext=b.next=c,next=0; p=h; while(p)printf(“%d,“,p- data):【 】 ; printf(“n“); 2009年 3月国家二级( C语言)笔试真题试卷答案与解析 1 【正确答案】 D 【试题解析】 栈是 种特殊的线性表,这种线性表只能在固定的 端进行插入和删除操作,允许 插入和删除的 端称为栈顶,另 端称为栈底。 个新元素只能从栈顶一端进入,删除时,只能删除栈项的元素,即刚刚被插入的元素。所以栈又称 “后进先出 ”表,所以选项

25、 A是错误的。队列可看作是插入在 端进行,删除在另 端进行的线性表,允许插入的 端称为队尾,允许删除的 端称为队头。在队列中,只能删除队头元素,队列的最后 个元素 定是最新入队的元素。因此队列又称 “先进先出 ”表,所以选项 B是错误的,循环队队列是将队列存储空间的最后 个位置绕到第 个位置,形成逻辑上的环状空间,供队列循环使用。它的逻辑结构仍然是线性结构,所以选 项 C是错误的。有序线性表既可以采用顺序存储结构,也可以采用链式存储结构,所以选项 D是正确的。 2 【正确答案】 B 【试题解析】 子程序调用是 种层次关系,子程序调用功能模块,且调用功能模块的个数也不确定,可以是 个,也可以是多

26、个。选项 A、 C中元素之间是 种前后件关系,前后元素之间没有层次之分,每个结点有 个前件也只有 w个后件。二叉树是一种很有用的非线性结构,它不同于树形结构,具有以下两个特点: 1)非空二叉树只有一个根结点; 2)每一个结点最多有两棵子树,且分别称为该点的左子树与右子树。所以选项 D规定每个结点只能有两个后件。在子程序调用中,调用的功能模块可以是多个,可以调用超过两个功能模块。所以选项 A、 C、D均不正确。 3 【正确答案】 C 【试题解析】 在任意一棵二叉树中,度为 0的结点(即子叶结点)总比度为 2的结点多一个。本题中度为 2的结点数为 5,故叶子结点数为 5+1 6个。 4 【正确答案

27、】 D 【试题解析】 (1)冒泡排序法:是 种最简单的交换类排法,它是通过相邻数据元素的交换逐步将线性表变成有序。假设线性表的长度为 n,则在最坏情况下,冒泡排序需要经过 n/2遍的从前往后的扫 描和 n/2遍的从后往前的扫描,需要比较的次数为 n(n-1)/2次。 (2)直接插入排序法:在直接插入排序法中,每 次比较后最多移掉 个逆序,因此,选种排序方法的效率与冒泡排序法相同。在最坏情况下,直接插入排序需要 n(n-1)/2次比较。 (3)简单选择排序法:对于长度为 n的新台阶列。选择排序需要扫描 n-1遍,每 遍扫描均从剩下的子表中选出最小的元素,然后将该最小的元素与子表中的第 个元素进行

28、交换。简单选择选择排序法在最坏情况下需要比较 n(n-1)/2次。 (4)堆排序法:堆排序的方法为: 首先将 个无序 序列建成。 然后将堆顶元素 (序列中的最大项 )与堆中最后 个元素交换(最大项应该在序列的最后 )。在最坏情况下,堆排序需要比较的次数为O(nlog2n)。假设线性表的长度为 16,那么冒泡排序、直接插入排序、简单选择排序都需要比较 120次,而堆排序需要比较 64次。 5 【正确答案】 C 【试题解析】 软件按功能可以分为:应用软件、系统软件、支撑软件 (或工具软件 )。应用软件是为解决特定领域 的应用而开发的软件。例如,事务处理软件,工程与科学计算软件,实时处理软件,嵌入式

29、软件,人工智能软件等应用性质不同的软件。因此选项 C教务管理系统属于应用软件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件,如操作系统,编译程序,汇编程序,网络软件,数据库管理系统等。因此选项 A、 B、 D都属于系统软件。 6 【正确答案】 A 【试题解析】 1983年 IEEE将软件测试定义为:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果 与实际结果之间的差别。因此选项 A的叙述是错误的。软件测试的基本准则为: (1)所有测试都应追溯到需求。 (2)严格执行测试计划,排除测试的随意性。 (3)充分注意测

30、试中的群集现象。 (4)程序员应避免检查自己的程序。 (5)穷举测试不可能。 (6)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。因此选项 D正确。在对程序进行了成功的测试之后将进入程序调试 (通常称 Debug,即排错 )。因此选项 C正确。程序调试的任务是诊断和改正程序中的错误。程序调试的基本步骤: (1)错误定位。 (2)修改设计和代码,以 排除错误。 (3)进行回归测试,防止引进新的错误。因此选项 B是正确的。 7 【正确答案】 B 【试题解析】 (1)内聚性:内聚性是 个模块内部各个元素间彼此结合的紧密程度的度量。 (2)耦合性;耦合性是模块间互相连接的紧密程度

31、的度量。因此选项 c、D是错误的。在程序结构中,各模块的内聚性越强,则耦合性越弱。 般较优秀的软件设计,应尽量做到内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,因此选项 A是错误的;应该降低耦合性提高内聚性,所以选项 B是正确的。 8 【正确答 案】 A 【试题解析】 数据库应用系统是数据库系统再加上应用软件及应用界面这三者所组成,具体包括:数据库、数据库管理系统、数据库管理员、硬件平台、软件平台、应用软件、应用界面。在数据库应用系统中的 个核心问题就是设计 个能满足用户要求,性能良好的数据库,这就是数据库设计。所以选项 A是正确的。 9 【正确答案】 B

32、【试题解析】 专门的关系运算包括:选择、投影和连接。 (1)选择;从关系中找出满足给定条件的元组的操作称为选择,选择是从行的角度进行的运算,即从水平方向抽取记录。 (2)投影:从关 系模式中指定若干个属性组成新的关系。投影是从列的角度进行的运算,相当于对关系进行垂直分解。 (3)连接:连接是关系的横向结合。连接运算将两个关系模式拼接成 个更宽的关系模式,生成的新关系中包含满足连接条件的元组。连接过程是通过连接条件来控制的,连接条件中将出现两个表中的公共属性名,或者具有相同语义、可比的属性。选择和投影运算的操作对象只是 个表,相当于对 个二维表进行切割。连接运算需要两个表操作为操作对象。由图可知

33、关系 R通过运算得到关系 S,关系 S与关系 R相比,记录的条数没有发生变化,属性的个数发生了变化。因 此所使用的运算应该是投影。选项 C插入运算会增加记录的条数,所以选项 B是正确的。 10 【正确答案】 C 【试题解析】 将 E-R图转换为关系横式时,实体和联系都可以表示成关系, E-R图中属性也可以转换成关系的属性。实体集也可以转换成关系。 11 【正确答案】 C 【试题解析】 C语言中合法标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第 个字符必须为字母或下划线。所以选项 A、 B和 D都是错误的。 12 【正确答案】 B 【试题解析】 基本型的整型变量用类型名关键字 i

34、nt进行定义,当定义时,编译程序仅为 K开辟存储单元,而没有在存储单元中存放任何初值,此时变量中的值是无意义的,称变量值 “无定义 ”。 13 【正确答案】 D 【试题解析】 在 C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。整型常量和实型常量又称数值型常量。基本整型常量只能用数字表示,不带小数点,例如 12、 -1和 0等,在 VC6.0中可以在整型常量的后面加 个字母l(L的小写 )或 L;实型常量必须用带小数点的数表示,例如 3.14159、 -2.71828、0.0等;选项 A中字母 o不符合要求,选顶 B中超出八进制的范围,选项 C中 e后面的不为整数,因此选顶 D是正

35、确的。 14 【正确答案】 D 【试题解析】 选项 D中, 2*x表达式的结果为 4, x+=2的结果为 4,由于 2*x时x的值没有改变,所以最终结果不等于 6,因此选项 D是错误的。 15 【正确答案】 A 【试题解析】 在 printf函数常用的格式说明中,每个格式说明都必须用 “%”开头,以 个格式字符作为结束,在此之间可以根据需要插入 “宽度说明 ”、左对齐符号 “-”、前导零符号 “0”等。本题中用到了 d和 f, d代表输出符号的十进制整型数, f代 表以带小数点的数学形式输出浮点数 (单精度和双精度数 )。对于 float和double类型的实数,可以用 “n1.n2”的形式来

36、指定输出宽度 (n1和 n2分别代表 个整常数 ),其中 n1指定输出数据的宽度 (包括小数点 ), n2指定小数点后小数位的位数,由于输出格式是以紧凑格式输出,因此选项 A是正确的。 16 【正确答案】 C 【试题解析】 scanf函数的 般调用形式为: scanf(格式控制输入项 1,输入项 2, ) 选项 B中, ”的使用,第一层 for循环由于 i两次自增运算故执行两次,每执行一次第一层 for循环,第二条 for循环语句执行三次,但由于语句后面加了分号,因此这一条空循环语句,结果当第一层的 for语句执行完,跳出整个循环语句后,执行 printf语句,因此执行一次printf语句,选

37、项 D是正确的。 21 【正确答案】 C 【试题解析】 本题考查的是 do-while语句的使用, do-while执行的过程是当while后面 对括号中表达式的值为非 0时,转去执行循环体,当值为 0时,退出循环。本题定义了 个指针变量 s,并使得 s指向字符串 “ABC“,的首地址,即把字符 A的地址赋给 s,因为 do-while语句是先执行循环体再进行循环条件的判断,因此先执行 printf语句, “s%10”是 s对 10的取模运算,第 字符 A的 ASCII码为 65,故 “65%10”取模运算结果为 5,因此输出 5,接着执行 s+,s指向字符串的下 个字符,当字符串中字符没有循

38、环完时, 继续执行 do-while语句,以此类推, B和 C的分别为 6和 7,因此,选项 C是正确的。 22 【正确答案】 D 【试题解析】 本题主要考查了 while和 for循环语句的执行过程。 for循环的一般形式如下: for(表达式 1;表达式 2;表达式 3)循环体 for循环的执行过程如下: 计算表达式 1; 计算表达式 2。若其值为非 o,转步骤 3;若其值为 0,转步骤 5; 执行 次 for循环体: 计算表达式 3,转向步骤 2: 结束循环。 在选项 D中,由于 for循环语句末 尾直接是分号,没有循环体,因此可以将其看做 条空循环语句,循环体部分可以忽略。程序首先在

39、for循环语句外为变量 n赋初值 0,在 for循环中,先执行表达式 “cb=getchar();”, getchar函数用于输入字符,因此程序首先将输入的字符赋值绐变量 ch,然后执行表达式 “ch!=n;”,判断输入的字符是否为回车,如果此时输入的字符是回车,结束循环,所以 D选项错误。 23 【正确答案】 A 【试题解析】 本题主要考查的是输入,输出函数的格式说明,其中 d代表带符号的十进制整型数, c代表 个字符,由 于输出格式为 12,a,34,b;中间没有任何的空格,因此输入时格式应该是: 12a34b CR,因此,选项 A是正确的。 24 【正确答案】 B 【试题解析】 本题考查

40、的是函数的嵌套调用和参数传递,先执行 main函数,第次调用 f(a,b) ,将参数 a, b的值传递给函数 f中对应开参 x,y,然后返回表达式“(y-x)*x);); ”的运算结果,即: (4-3)*3 3,所以函数结果为 3;第二次调用f(a,c) ,将参数 a, c的值传递给函数 f中对应形参 x, y,然后返回表达式 “(y-x)*x);”的运算结果, 即: (5-3)*3=6,所以函数返回值为 6;第三次调用函数 f,使用的参数是前两次调用的结果,即: f(3,6),将参数值传递给函数 f中对应形参 x,y,返回的结果为 9,因此,选项 B是正确的。 25 【正确答案】 A 【试题

41、解析】 本题主要考查函数的调用以及字符的 ASCII码值,由 while循环语句可知,如果字符的 ASCII码值为偶数就输出该字符,否则不输出,因为 s的ASSCII码值为 103; o的码值为 111, d的码值为 100,所以程序输出结果是 d,因此,选项 A是正确的。 26 【正确答案】 B 【试题解析】 本题主要考查的是函数的实参和形参之间的传递关系, C语言中实参变量和形参变量之间的数据传递是单向的 “值传递 ”方式。指针变量作函数参数也要遵循这一规则。调用函数不可能改变实参指针变量的值。所以 x和 y的地址并没有改变,即 p和 q也没有改变,因此,选项 B是正确的。 27 【正确答

42、案】 A 【试题解析】 本题主要考查函数实参和形参之间的传递, C语言规定,实参变量对形参变量的数据传递是 “值传递 ”,即单向传递,只能由实参传绐形参,而不能由形参传回来给实参。 f(r选项 A相当于空 行,前七个数每输出 个数换行,从第八个数以后不换行输出剩下的数。选项 B相当于前八个数不输出,从第九个数开始不换行输出剩下的数。选项 D相当于不换行从数组中的第二个数开始输出,凡是 i对 8取模为 0的数,均不输出。 所以选项 C是正确的。 29 【正确答案】 B 【试题解析】 本题主要考查的是数组的引用,在 C语言中, 个数组不能整体引用。在选项 A中, *”,即 b=3+2=5,从被调函

43、数中返回的值为 5,此时全局变量 b的值也变为 5,所以由 main()函数中执行语句 “b=fun(”的结果b=5+5=10,因此第 次输出 b的值为 10;第二次调用时变量 i的值为 3,调用 fun函数的返回值为 14,所以第二次输出 28,此时 for循环中,变量 i=4,不符合循环条件 i 4,跳出循环,故选项 C是 正确的。 36 【正确答案】 D 【试题解析】 本题考查的是宏定义。带参数的宏定义是按 #define命令行中指定的字符串从左到右进行转换,其定义的 般形式为: #define宏名 (参数表 )字符串,因此在程序中宏定义后面不能有分号 “;”,所以程序运行出错,没有输出

44、结果, 因此,选项 D是正确的。 37 【正确答案】 B 【试题解析】 本题主要考查了结构体变量成员的引用,有三种形式来引用结构体变量中的成员: (1)结构体变量名 .成员名: (2)指针变量名 -成员名; (3)(*指针变量名 ).成员名。 其中点号 “.”称为成员运算符;箭头 “- ”称为结构指向运算符。由于 p- x指向了结构体的的成员 x,而结构体中 x的值为 1,因此自增后变为 2,p- y指向了结构体的成员 y,而结构体中 y的值为 2,因此自增后变为 3,因此,选项 B是正确的。 38 【正确答案】 D 【试题解析】 已知表达式 (k%n l)?1:0)是判断 k是否被 n整除余

45、 1,如果是,则该表达式的值为 1,如果不是则该表达式的值为 0,代入到IsDIV(m,5) 循环的执行过程如下: 执行 do后面循环体中的语句。 计算 while后 对圆括号 中表达式的值。当值为非 0时,转去执行步骤 1;当值为 0时,执行步骤 3。 退出 do-while循环。 在本题中先判断 k是否为偶数,如果不是则结束本次循环,进行下 次的循环条件判定,由于没有改变 k的值, k 10的不成立,退出 do-while循环,执行后面的 printf(“s=%dn“,s);语句,因为 s=0,所以输出结果为 s=0。 50 【正确答案】 1AbCeDf2dF 【试题解析】 本题的执行过程是先从键盘上获得 个字符,判断是不是换行符,如果不是则继续执行循环体,再判断字符变量 a是否是偶数以及是否是小写字母,如果 a不是偶数且输入的字符为小写字母,则将其转换成大写字母,接着执行 a+;语句,变量 a自增 1,输出字符,因此本题的输出结果为 1AbCeDF2dF(a相当于用来记录当前的顺序,即是第偶数个字符还是第奇数个字符 )。 字符位数: 0 1 2 3 4 5 6 7 8 9 输入字符: 1 a b c e d f 2 d f 输出字符: 1 A b C e D f 2 d F 51 【正确答案】 7777654321 【试题

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1