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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

[计算机类试卷]国家二级(C语言)机试模拟试卷147及答案与解析.doc

1、国家二级( C语言)机试模拟试卷 147及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 ( B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 ( C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 ( D)线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性 2 下列叙述中正确的是 ( )。 ( A)栈是一种先进先出的线性表 ( B)队列是一种后进先出的线性表 ( C)栈与队列都 是非线性结构 ( D)以上三种说法都不对 3 软件测试的目的是 ( )。 ( A)评估软件可靠性 (

2、 B)发现并改正程序中的错误 ( C)改正程序中的错误 ( D)发现程序中的错误 4 在软件开发中,需求分析阶段产生的主要文档是 ( )。 ( A)软件集成测试计划 ( B)软件详细设计说明书 ( C)用户手册 ( D)软件需求规格说明书 5 软件生命周期是指 ( )。 ( A)软件产品从提出、实现、使用维护到停止使用退役的过程 ( B)软件从需求分析、设计、实现到测试完成的过程 ( C)软件的开发过程 ( D)软件的运行维护过程 6 面向对象方法中,继承是指 ( )。 ( A)一组对象所具有的相似性质 ( B)一个对象具有另一个对象的性质 ( C)各对象之间的共同性质 ( D)类之间共享属性

3、和操作的机制 7 层次型、网状型和关系型数据库划分原则是 ( )。 ( A)记录长度 ( B)文件的大小 ( C)联系的复杂程度 ( D)数据之间的联系方式 8 一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是 ( )。 ( A)一对一 ( B)一对多 ( C)多对多 ( D)多对一 9 数据库设计中反映用户对数据要求的模式是 ( )。 ( A)内模式 ( B)概念模式 ( C)外模式 ( D)设计模式 10 有三个关系 R、 S和 T如下: 则由关系 R和 S得到关系 T的操作是 ( )。 ( A)自然连接 ( B)差 ( C)交 ( D)并

4、 11 计算机能直接执行的程序是 ( )。 ( A)源程序 ( B)目标程序 ( C)汇编程序 ( D)可执行程序 12 以下叙述中正确的是 ( )。 ( A) C语言规定必须用 main作为主函数名,程序将从此开始执行 ( B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 ( C) C语言程序将从源程序中第一个函数开始执行 ( D) mmn的各种大小写拼写形式都可以作为主函数名,如 MAIN, Main等 13 以下选项中可用做 C程序合法实数的是 ( )。 ( A) 3 0e0 2 ( B) 1eo ( C) E9 ( D) 9 12E 14 下列定义变量的语句中错误的

5、是 ( )。 ( A) int_int; ( B) double int_; ( C) char For; ( D) float US$; 15 表达式: (int)(double)9 2)-9 2的值是 ( )。 ( A) 0 ( B) 3 ( C) 4 ( D) 5 16 设变量均已正确定义,若要通过 scanf(“ d c d c“, &a1, &c1, &a2, &c2); 语句为变量 a1和 a2赋数值 10和 20,为变量 c1和 c2赋字符 X和 Y。以下所示的输入形式中正确的是 ( )。 (注: 代表空格字符 ) ( A) 10X回车 20Y回车 ( B) 10X20Y回车 (

6、 C) 10X回 车 20Y回车 ( D) 10X20Y回车 17 以下选项中不能作为 C语言合法常量的是 ( )。 ( A) 0 1e+6 ( B) cd ( C) a ( D) 011 18 if语句的基本形式是: if(表达式 )语句,以下关于 “表达式 ”值的叙述中正确的是( )。 ( A)必须是逻辑值 ( B)必须是整数值 ( C)必须是正数 ( D)可以是任意合法的数值 19 有如下嵌套的 if语句: if(a b) if(a e) k=a; else k=c; else if(b c)k=b; else k=c; 以下选项中与上述 if语句等价的语句是 ( )。 ( A) k=(

7、a b)?(b c)?a: b): (b c)?b: c); ( B) k=(a b)?(a e)?a: c): (b c)?b: c); ( C) k=(a b)?a: b; k=(b c)?b: c; ( D) k=(a b)?a: b; k=(a c)a: c; 20 有以下程序: #include stdio h main() int k=5; while(-k)printf(“ d“, k-=3); printf(“ n“); 程序执行后的输出结果是 ( )。 ( A) 1 ( B) 2 ( C) 4 ( D)死循环 21 有以下程序: #include stdio h main()

8、 int i, j; for(i-3; i =1; i-) for(j=1; j =2; j+)printf(“ d“, i+j); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 4 3 2 5 4 3 ( B) 4 5 3 4 2 3 ( C) 2 3 3 4 4 5 ( D) 2 3 3 4 2 3 22 有以下程序: #include stdio h main() int k=5, n=0; do switch(k) case1: case3: n+=1; k-; break; default: n=0; k-; ease2: case4: n+=2; k-;

9、break; printf(“ d“, n); while(k 0&n 5); 程序运行后的输出结果是 ( )。 ( A) 02356 ( B) 0235 ( C) 235 ( D) 2356 23 以下关于 return语句的叙述中正确的 是 ( )。 ( A)一个自定义函数中必须有一条 return语句 ( B)一个自定义函数中可以根据不同情况设置多条 return语句 ( C)定义成 void类型的函数中可以有带返回值的 return语句 ( D)没有 return语句的自定义函数在执行结束时不能返回到调用处 24 已定义以下函数: int fun(int*p) return*p; fu

10、n函数的返回值是 ( )。 ( A)一个整数 ( B)不确定的值 ( C)形参 P中存放的值 ( D)形参 P的地址值 25 以下程序段完全正确的是 ( )。 ( A) int*p; seanf(“ d“, &p); ( B) int*p; searrf(“ d“, P); ( C) int k, *p=&k; seanf(“ d“, p); ( D) int k, *p; *p=&k; seanf(“ d“, p); 26 设有定义: double a10, *s=a; 以下能够代表数组元素 a3的是 ( )。 ( A) (*s)3 ( B) *(s+3) ( C) *s3 ( D) *s+

11、3 27 有以下程序: #include stdio h void f(int*q) im i=0; for(; i 5; i+)(*q)+; main() int a5=1, 2, 3, 4, 5, i; f(a); for(i=0; i 5; i+)printf(“ d, “, ai); 程序运行后的输出结果是 ( )。 ( A) 6, 2, 3, 4, 5, ( B) 2, 2, 3, 4, 5, ( C) 1, 2, 3, 4, 5, ( D) 2, 3, 4, 5, 6, 28 有以下程序: #include stdio h int fun(int(*s)4, int n, int

12、k) int m, i; m=s0k; for(i=1; i n; i+) if(sik m) m=sik; return m; main() int a44=1, 2, 3, 4, 11, 12, 13, 14, 2l, 22, 23, 24, 3l, 32, 33, 34; printf(“ d n“, fun(a, 4, 0); 程序运行后的输出结果是 ( )。 ( A) 4 ( B) 34 ( C) 31 ( D) 32 29 以下选项中正确的语句组是 ( )。 ( A) char*s; s=“BOOK!“; ( B) char*s; s=“BOOK!“; ( C) char s10;

13、 s=“BOOK!“; ( D) char s; s=“BOOK!“; 30 若有定义语句: char*s1=“OK“, *s2=“ok“; 以下选项中,能够输出 “OK”的语句是 ( )。 ( A) if(strcmp(s1, s2)!=0)puts(s2); ( B) if(strcmp(s1, s2)!=0)puts(s1); ( C) if(strcmp(s1, s2)=1)puts(s1); ( D) if(strcmp(s1, s2)=0)puts(s1); 31 有以下程序: #inelude stdio h void fur, (char*p) +p; printf(“ s n

14、“, *p); main() char*a=“Morning“, “Afternoon“, “Evening“, “Night“; fun(a); 程序运行后的输出结果是 ( )。 ( A) Afternoon ( B) fternoon ( C) Morning ( D) orning 32 有以下程序,程序中库函数 islower(ch)用以判断 ch中的字母是否为小写字母: #include stdio h #include ctype h void fun(char*p) int i=0; while(pi) if(pi=&islower(pi-1) pi-1=pi-1-a+A; i+

15、; main() char s1100=“ab cd EFG!“; fun(s1); printf(“ s n“, s1); 程序运行后 的输出结果是 ( )。 ( A) ab cd EFg! ( B) Ab Cd EFg! ( C) ab cd EFG! ( D) aB cD EFG! 33 有以下程序: #include stdio h int f(int x) int y; if(x=0|x=1)return(3); y=x*x-f(x-2); return y; main() int z; z=f(3); printf(“ d n“, z); 程序运行后的输出结果是 ( )。 ( A)

16、 0 ( B) 9 ( C) 6 ( D) 8 34 有以下程序: #include stdio h int fun(int x, int n) static int sum=0, i; for(i=0; i n; 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); 程序执行后的输出结果是 ( )。 ( A) 55 ( B) 50 ( C) 45 ( D) 60 35 有以下结构体说明、变量定义和赋值语句: struet

17、STD char name10; int age; char sex; s5, *ps; ps=&s0; 则以下 scaanf函数调用语句有错误的是 ( )。 ( A) seanf(“ s“, s0 name); ( B) seanf(“ d“, &s0 age); ( C) scanf(“ c“, &(ps- sex); ( D) seanf(“ d“, ps- age); 36 若有以下语句: typedef struetS int g; char h; T; 以下叙述中正确的是 ( )。 ( A)可用 S定义结构体变量 ( B)可用 T定义结构体变量 ( C) S是 struct类型的变

18、量 ( D) T是 struct S类型的变量 37 有以下程序: #include stdio h #include string h struet A int a; char b10; double c: ; struct A f(struet A t); main() struet A a=1001, “ZhangDa“, 1098 0; a=f(a); printf(“ d, s, 6 1f n“, a a, a b, a c); struet A f(struet A t) t a=1002: strcpy(t b, “ChangRong“); t c=1202 0; return

19、t; 程序运行后的输出结果是 ( )。 ( A) 1002, ZhangDa, 1202 0 ( B) 1002, ChangRong, 1202 0 ( C) 1001, ChangRong, 1098 0 ( D) 1001, ZhangDa, 1098 0 38 设有宏定义: #define IsDIV(k, n)(k n=1)?1: 0) 且变量 m已正确定义并赋值,则宏调用: IsDIV(m, 5)&IsDIV(m, 7) 为真时所要表达的是 ( )。 ( A)判断 m是否能被 5和 7整除 ( B)判断 m被 5和 7整除是否都余 1 ( C)判断 m被 5或者 7整除是否余 1

20、( D)判断 m是否能被 5或者 7整除 39 有以下程序: #include stdio h main() int a=1, b=2, c=3, x; x=(ab)&c; printf(“ d n“, x); 程序运行后的输出结果是 ( )。 ( A) 3 ( B) 1 ( C) 2 ( D) 0 40 有以下程序: #include stdio h main() FILE*fp; int k, n, a6=1, 2, 3, 4, 5, 6; fp=fopen(“d2 dat“, “w“); fprintf(fp, “ d d d n“, a0, a1, a2); fprintf(fp, “

21、 d d d n“, a3, a4, a5); felose(fp); fp=fopen(“d2 dat“, “r“); fscanf(fp, “ d d“, &k, &n); printf(“ d d n“, k, n); fclose(fp); 程序运行后的输出结果是 ( )。 ( A) 1 2 ( B) 1 4 ( C) 123 4 ( D) 123 456 二、程序填空题 41 下列给定程序中,函数 fun的功能是:在形参 ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置 (即下标值 ),若未找到则返回 -1。 ss所指字符串数组中共有 N个内容不

22、同的字符串,且串长 小于M。 请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include stdio h #include string h #define N5 #define M8 int fun(char(*ss)M, char*t) int i; *found* for(i=0; i【 1】; i+) *found* if(stremp(ssi, t)=0)return【 2】; return-1; main() char chNM=“if“, “while“, “sw

23、itch“, “int“, “for“, tM; int n, i; printf(“ nThe original string n n“); for(i=0; i N; i+)puts(ehi); printf(“ n“); printf(“ nEnter a string for search: “); gets(t); n=fun(ch, t); *found* if(n=【 3】 )printf(“ nDont found! n“); else printf(“ nThe position is d n“, n); 三、程序修改题 42 给定程序 modil c的主函数中,将 a、 b

24、、 c三个结点链成一个单向链表,并给各结点的数据域赋值,函数 fun()的作用是:累加链表结点数据域中的数据作为函数值返回。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include stdio h typedef struet list int data; struet list*next; LIST; int fun(UST*h) LIST*p; *found* int t; p=h; *found* while(*p) *found* t=t+p data; p=(*p) next; r

25、eturn t; main() LIST a, b, c, *h; adata=34; b data=51; c data=87; C next= 0; h=&a; a)next=&b; b next=&c; printf(“总和 = d n“, fun(h); 四、程序设计题 43 请编写函数 fun,其功能是:判断 t所指字符串中的字母是否由连续递增字母序列组成 (字符串长度大于等于 2)。例如字符串: uvwxyz满足要求;而字符串:uvxwyz不满足要求。 注意:部分源程 序存放在 PROGl C中,请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun指定的部位填入所编写的

26、若干语句。 试题程序: #include stdio h #include string h void NONO(); int fun(char*t) main() char s26; printf(“请输入一个字母组成的字符串: “); gets(s); if(fun(s)printf(“ s是由连续字母组成的字符串 n“, s); else pfinff(“ s不是由连续字母组成的 字符串 ! n“, s); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*fp, *wf; int i; char s26, *p; fp

27、=fopen(“in dat“, “r“); wf=fopen(“out dat“, “w“); for(i=0; i 10; i+) fgets(s, 26, fp); p=strchr(s, n); if(p)*p=0; if(fun(s)fprintf(wf, “ s n“, s+2); else finff(wf, “ s n“, strrev(s); fclose(fp); fclose(wf); 国家二级( C语言)机试模拟试卷 147答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 线性链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以一般要多于顺

28、序存储结构。 2 【正确答案】 D 【试题解析】 栈是一种先进后出的线性表,队列是一种先进先出的线性表,栈与队列都是线性结构。 3 【正确答案】 D 【试题解析】 软件测试是为了发 现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。不是为了评估软件或改正错误。 4 【正确答案】 D 【试题解析】 需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择 D。 5 【正确答案】 A 【试题解析】 通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为

29、止的整个时期都属于软件生命周期。 6 【正确答案】 D 【试题解析 】 继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。 7 【正确答案】 D 【试题解析】 层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。 8 【正确答案】 C 【试题解析】 因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之 间是多对多的关系。 9 【正确答案】

30、C 【试题解析】 数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,所以选择 c。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法。 10 【正确答案】 B 【试题解析】 关系 T中的元组是 R关系中有而 s关系中没有的元组的集合,所以进行的是差的运算。 11 【正确答案】 D 【试题解析】 计算机能直接执行的程序是二进制的可执行程序,扩展名为 exe。所以选择 D选项。 12 【正确答案】 A 【试题解析】 C语言中的主函数只能是 ma

31、in()函数,不能任意指定,所以 B选项错误。 C语言从主函数 main()开始,到主函数 main()结束,所以 C选项错误。主函数必须写成小写的 main,不能混淆大小写,所以 D选项错误。 13 【正确答案】 B 【试题解析】 A选项中 e后面的指数必须为整数,所以错误。 C语言规定, E之前必须要有数字,所以 C选项错误。 E后面必须要有数字,且必须为整数,所以D选项错误。 14 【正确答案】 D 【试题解析】 C语言规定,变量命名必须符合标识符的命名规则。 D选项中包含了非法字符 “$”,所以错误。标识符由字母、数字或下划线组成,且第一个字符必须是大小写英文字母或者下划线,而不能是数

32、字。大写字符与小写字符被认为是两个不同的字符,所以 For不是关键字 for。 15 【正确答案】 B 【试题解析】 先将整型数据 9强制转换成 double型,然后除以 2得到的结果与double型保持一致,即为 4 5,然后将 4 5强制转换成整型数据 4,然后计算9 2的值为 1,最后计算 4-1的值为 3,所以选择 B选项。 16 【正确答案】 C 【试题解析】 输入数据的格式必须与 scanf()的格式控制串完全匹配,如果 A、B、 C选项中在数字 10后面均输入了空格,则会将空格赋给变量 c1,而不是把 X赋给 c1,所以选择 C选项。 17 【正确答案】 B 【试题解析】 要想表

33、示字符串常量应该用双引号表示,即 “cd”,单引号用于表示字符常量,所以 B选项中的表示方法错误。 18 【正确答案】 D 【试题解析】 if语句中的表达式可以是任意合法的数值,如常量、变量表达 式。所以 D选项正确。 19 【正确答案】 B 【试题解析】 题目中嵌套语句的含义是当 a b且 a c成立,则将 a的值赋给k。如果 a b成立而 a c不成立将 c的值赋给 k。如果 a b不成立而 b c成立,将 b的值赋给 k。如果如果 a b不成立且 b c也不成立,将 c的值赋给 k。判断条件表达式只有 B选项可以表示这个含义。 20 【正确答案】 A 【试题解析】 -k先自减再使用,所以

34、第一次判断条件即为 while(4),条件为真,执行打印 k的值 k=4-3,结果为 1;第二次判断条件即为 while(0),条 件为假,结束循环,打印回车换行符。所以选择 A选项。 21 【正确答案】 B 【试题解析】 第一次执行外循环, i的值为 3,第一次执行内循环 j的值为 1, j=2条件成立,打印 i+j的值,即 4;第二次执行内循环 j的值为 2, j =2条件成立,打印 i+j的值,即 5;再判断条件不成立,打印回车换行符,跳出内循环。第二次执行外循环, i的值为 2,内循环的执行同第一次一样,所以打印 3和 4,打印回车换行,结束内循环。第三次执行外循环 i的值为 1,同理

35、内循环中打印 2和3,打印回车换行符,结束内循环。 22 【正确答案 】 C 【试题解析】 k的值为 5,逐个对 case语句进行匹配,均不匹配,执行 default下的语句 n=0; k-。再执行 case2: cased:后面的语句 n+=2; k-;。执行 break语句跳出 switch判断,打印 n的值,即 2。经过第一次循环后, k的值为 3,然后进行 k 0&n 5条件判断为真。第二次执行循环体,执行 case3:后面的语句n+=1; k-;。再执行 break语句跳出循环,此时打印 n的值 3,此时 k的值为2。第三次执行循环体 k的值为 2,满足条件,执行 case2: ca

36、sed:后面的语句n+=2; k-;。执行 break语句跳出循环体,打印 n的值 5。此时 n不满足条件 k 0&n 5,所以结束循环。整个程序的打印结果为 235。 23 【正确答案】 B 【试题解析】 在函数中允许有多个 return语句,但每次调用只能有一个 return语句被执行,因此只能返回一个函数值。定义成 void类型的函数不允许从该函数取得返回值,也不允许使用 return语句, C选项描述错误。没有 return语句的函数在执行到函数的最后一条语句后会自动返回到调用处, A、 D选项描述错误。因此 B选项正确。 24 【正确答案】 A 【试题解析】 返回值为指针变量指向的数

37、据,该数据已被定义为整型。因此 A选项正确。 25 【正确答案】 C 【试题解析】 A选项中错在没有对指针进行初始化,是无效指针,并且在scanf(“ d“, &p)中无需再进行取地址操作; B选项中没有对指针进行初始化,是无效指针; D选项中语句 *p=&k;的左端 *p是指针所指内存空间的值, &k是地址,应为 p=&k。因此 C选项正确。 26 【正确答案】 B 【试题解析】 语句 *s=a;表示指针变量 s指向一维数组 a的首地址。 a3表 示引用数组 a的第 4个元素, *(s+i)表示引用指针 s所指数组 a的第 i+1个元素,选项A、 C、 D的表示方法错误,只有 B选项正确。

38、27 【正确答案】 A 【试题解析】 本题考查的是函数的地址调用,将数组名作为数组首地址进行传递,然后取首个数组元素值进行加 1运算,循环 5次。因此 A选项正确。 28 【正确答案】 C 【试题解析】 本题重点考察二维数组名作为实参进行参数传递,在主函数中调用了 fun函数,实参为二维数组名 a和两个整数 4、 0,这样对应定义 fun函数首部有三种形式,这里采用了第一种形式 行指针,这样在 fun函数对 sij进行操作实际上就是对主函数中的 aij进行操作,再分析 fun函数的作用便可知,是求二维数组第 0列中最大的那个元素。因此 C选项正确。 29 【正确答案】 B 【试题解析】 A选项

39、去掉大括号就正确了; C选项和 D选项应在定义时赋初值。因此 B选项正确。 30 【正确答案】 B 【试题解析】 strcmp(s1, s2)是字符串比较函数,比较规则是两个字符串自左向右逐个字符相比 (按照 ASCII码值大小 ),以第一个不相同的字符的大小作为比较结果。因为; 0 0,所以 strcmp(s1, s2)为负值,只有 B选项正确。 31 【正确答案】 A 【试题解析】 本题主函数中定义了一个指针数组 a,可以将它看成一个以字符指针为元素的一维数组。和一般的一维数组名能赋给同类型指针变量一样,该字符指针数组也可以赋给指向字符指针的指针,所以数组名 a可以用做函数 fun()的实

40、参。在 fun()函数中, +p操作使形参 p往后移动一个字符指针的位置,即指针 a1的位置。故最后通过 printt()函数输出的字符串为 “Afternoon”。因此 A选项正确。 32 【正确答案】 D 【试题解析】 调用 fun函数后,实参数组名 s1传给形参指针 p, p也指向数组s1。 fun函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一个字符是小写字母的话,就把前一个字符转换为大写。程序中语句 pi-1=pi-1-a+A;即 pi-1=pi-1-32,意思是将 pi-1中的字符转换为大写。因此 D选项正确。 33 【正确答案】 C 【试题解析】 主函数中调用

41、f函数,同时将数值 3传递给变量 x,执行条件不满足条件 if(x=0|x=1);跳过 return(3);,直接执行语句 y=x*x-f(x-2);这里 f(x-2)为函数的递归调用,再次调用 f函数,此时 x=1,判断条件成立,返回 3给 f(1),y=3*3-3=6,最后将 6返回主函数,并进行输出。因此 C选项正确。 34 【正确答案】 D 【试题解析】 内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。 fun(a, 5)的值是 15,再次调用后 sum=15,所以 fun(b, 4)=45, s: 45+15=60。

42、因此 D选项正确。 35 【正确答案】 D 【试题解析】 本题考查结构体的相关知识,题目中需要输入一个变量, scanf要求参数为指针,而 D选项中 ps- age为一个变量,不是指针,所以错误。 36 【正确答案】 B 【试题解析】 本题考查 typedef重新声明一种结构体类型,那么 T为结构体类型,而不是结构体变量,所以 B选项正确。 37 【正确答案】 B 【试题解析】 本题考查结构体变量的引用以及作为函数参数,题目虽然看似复杂,其实比较容易, f函数的参数是结构体变量,然后对参数重新赋值并返回,所以 该题目的答案为 B选项。 38 【正确答案】 B 【试题解析】 本题考查逻辑运算符的

43、相关概念,逻辑与若要为真,那么两边都要为真,即 m都能被 5和 7整除都余 1,所以选项 B正确。 39 【正确答案】 A 【试题解析】 本题考查位运算符以及相关运算, 为按位或, &为按位与,那么ab为 3,再与 c按位与仍然为 3,所以答案为 A选项。 40 【正确答案】 D 【试题解析】 fprintf()函数向文本文件输出数据,将输出的内容按格式输出到硬盘的文本文件中。执行两次 fprintf后,文件中的内容 为 “123 456”,所以 D选项正确。 二、程序填空题 41 【正确答案】 (1)N (2)i (3)-1 【试题解析】 填空 1:变量 i是循环变量,它的取值范围是在 0到

44、 N之间。 填空 2:如果 ss所指字符串数组中的字符串和 t所指字符串相同的话,则返回其下标值,即 return i;否则返回 -1,即 return-1;。 填空 3:在 main函数中输出最后结果,判断函数返回值 n,如果 n=-1,说明没有找到,否则输出 n。 三、程序修改题 42 【正确答案】 (1)int t=0; (2)while(p)或 while(p!=NULL) (3)t=t+p- data。 【试题解析】 (1)题目中变量 t是用来存放累加和的,因此必须初始化。 (2)题目中 *p是结构体,不能转化为 bool型。 (3)p是指针,只能用 p-,不能用 p。 四、程序设计

45、题 43 【正确答案】 int fun(char*t) int len=strlen(t); if(len 2) return0; char before_ch=t0; char current_ch; int flag=1; for(int i=l; ti!= 0; +i) current_ch=ti; if(before_ch!=current_ch-1) flag=0; break; before_ch=current_ch; return flag; 【试题解析】 函数 fun的功能是判断指针 t指向的字符串是否是由连续递增的字母构成,返回值为整数, 0代表不满足条件。根据题目要求,字符串长度必须大于等于 2,所以首先需要对 t指向的字符串进行长度判断,小于 2的字符串返回 0。接着需要对字符串中的连续字符,逐个进行比较 。 C语言中字符变量可以当作整数使用,所以当前字符只有是前一个字符的 ASCII码 +1,才能说它们是连续递增字母序列,然后比较后一个字符与当前字符的 ASCII码,如果字符串中的所有字符都满足条件,则返回 1;否则说明该字符串不满足要求,此时设置 flag=0,后面的字符也就不需要再比较了,跳出循环返回即可。

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