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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级( C语言)机试模拟试卷 156及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)所谓算法就是计算方法 ( B)程序可以作为算法的一种描述方法 ( C)算法设计只需考虑得到的计算结果 ( D)算法设计可以忽略算法的运算时间 2 程序流程图中带有箭头的线段表示的是 ( )。 ( A)图元关系 ( B)数据流 ( C)控制流 ( D)调用关系 3 深度为 5的完全二叉树的结点数不可能是 ( )。 ( A) 15 ( B) 16 ( C) 17 ( D) 18 4 下列选 项中不属于结构化程序设计原则的是 ( )。 ( A)可封装 ( B)自顶向下 ( C)模块化 ( D)

2、逐步求精 5 下列关于栈的叙述中正确的是 ( )。 ( A)栈按 “先进先出 ”组织数据 ( B)栈按 “先进后出 ”组织数据 ( C)只能在栈底插入数据 ( D)不能删除数据 6 下列描述中不属于软件特点的是 ( )。 ( A)软件是一种逻辑实体,具有抽象性 ( B)软件在使用中不存在磨损、老化问题 ( C)软件复杂性高 ( D)软件使用不涉及知识产权 7 计算机软件的构成是 ( )。 ( A)源代码 ( B)程序和数据 ( C)程序和文档 ( D)程序、数据及相关文档 8 按照 C语言规定的用户标识符命名规则,不能出现在标识符中的是 ( )。 ( A)下画线 ( B)大写字母 ( C)数字

3、字符 ( D)连接符 9 设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号 ),课程 C(课号,课名 ),选课 SC(学号,课号,成绩 ),则表 SC的关键字 (键或码 )为( )。 ( A)课号,成绩 ( B)学号,成绩 ( C)学号,课号 ( D)学号,姓名,成绩 10 有两个 关系 R和 T如下: 则由关系 R得到关系 T的操作是 ( )。 ( A)投影 ( B)交 ( C)选择 ( D)并 11 以下叙述中正确的是 ( )。 ( A)不同函数的形式参数不能使用相同名称的标识符 ( B)用户自己定义的函数只能调用库函数 ( C)实用的 C语言源程序总是由一个或多个函数

4、组成 ( D)在 C语言的函数内部,可以定义局部嵌套函数 12 以下叙述中错误的是 ( )。 ( A) C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件 ( B) C语言中的每条可执行语句和非执行 语句最终都将被转换成二进制的机器指令 ( C)用 C语言编写的程序称为源程序,它以 ASCII代码形式存放在一个文本文件中 ( D) C语言源程序经编译后生成后缀为 obj的目标程序 13 设有两行定义语句: int scanf: float case; 则以下叙述中正确的是 ( )。 ( A)第 2行语句不合法 ( B)两行定义语句都合法 ( C)第 1行语句不合法 ( D)

5、两行定义语句都不合法 14 以下各项中,能正确表述算式 sin(2r+30)的 C语言表达式是 ( )。 ( A) sin(2*r+30) ( B) sin(2*3 14*r+30) ( C) sin(2*3 14*r+3 14*30 180 0) ( D) sin(2*3 14*r+30*3 14 360 0) 15 若有定义: int a, b, c;,则以下选项中的赋值语句正确的是 ( )。 ( A) a=(b=c)=1; ( B) (a=b)=c=1; ( C) a=(b=c)+1; ( D) a+b=c; 16 有以下程序: #include stdio h main() print

6、f(“ d n“, NULL); 程序运行后的输出结果是 ( )。 ( A) 1 ( B)变量无定义,输出不确定 ( C) -1 ( D) 0 17 设有定义: double x=2 12;,则以下各项中不能完整输出变量 x值的语句是( )。 ( A) printf(“x= 5 of n“, x); ( B) printf(“x= f n“, x); ( C) printf(“x= lf n“, x); ( D) printf(“x= O 5f n“, x); 18 若有定义: char c; int d;,程序运行时输入: c=1d=2回车,能把字 符 1输入给变量 c、把整数 2输入给变量

7、 d的输入语句是 ( )。 ( A) scanf(“c= c d= d“, &c, &d); ( B) scanf(“c= cd= d“, &c, &d); ( C) scanf(“c= d d= d“, &c, &d); ( D) scanf(“c= dd= d“, &c, &d); 19 若有定义 int x, y;并已正确给变量赋值,则以下选项中与表达式 (x-y)?(x+):(y+)中的条件表达式 (x-y)等价的是 ( )。 ( A) (x-y 0x-y 0) ( B) (x-y 0) ( C) (x-y 0) ( D) (x-y=0) 20 有以下程序: #include stdi

8、o h main() char a=H; a=(a =A&a =Z)? (a+32): a; printf(“ c n“, a); 程序运行后的输出结果是 ( )。 ( A) h ( B) H ( C) A ( D) a 21 关于 “while(条件表达式 )循环体 ”,以下叙述中正确的是 ( )。 ( A)循环体的执行次数总是比条件表达式的执行次数多一次 ( B)条件表达式的执行次 数总是比循环体的执行次数多一次 ( C)条件表达式的执行次数与循环体的执行次数一样 ( D)条件表达式的执行次数与循环体的执行次数无关 22 有以下程序: #include stdio h #define f(

9、x)x*x*x main() int a=3, s, t; s=f(a+1); t=f(a+1); printf(“ d, d n“, s, t); 程序运行后的输出结果是 ( )。 ( A) 10, 64 ( B) 10, 10 ( C) 64, 10 ( D) 64 64 23 在一个 C源程序文 件中所定义的全局变量,其作用域为 ( )。 ( A)所在文件的全部范围 ( B)所在程序的全部范围 ( C)所在函数的全部范围 ( D)由具体定义位置和 extem说明来决定范围 24 有以下程序: #include stdio h void main() char a, b, c, d; sc

10、anf(“ c c“, &a, &b); C=getchar(); d=getchar(); printf(“ c c c c n“, a, b, c, d); 当执行程序时,按下列方式输入数据 (从第一列开始, CR 代表回车,注意:回车是一个字符 ): 12 CR 34 CR 则输出结果是 ( )。 ( A) 12 CR 34 ( B) 12 ( C) 12 CR 3 ( D) 123 CR 4 25 有以下程序: #include stdio h void fun(int x) if(x 2 1)fun(x 2); printf(“ d“, x); void main() fun(7);

11、 printf(“ n“); 程序运行后的结果是 ( )。 ( A) 137 ( B) 731 ( C) 73 ( D) 37 26 有以下程序: #include stdio h int b=2; int fun(int*k) b=*k+b; return(b); void main() int a10=1, 2, 3, 4, 5, 6, 7, 8, i; for(i=2; i 4; i+) b=fun(&ai)+b; printf(“ d“, b); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 1012 ( B) 810 ( C) 1028 ( D) 1016

12、27 以 下语句中存在语法错误的是 ( )。 ( A) char ss620; ss1=“right?“; ( B) char ss20=“right?“; ( C) char*ss6; ss1=“right?“; ( D) char*ss=“right?“; 28 有以下程序: #include stdio h int f(int x, int y) return(y-x)*x); void main() int a=3, b=4, c=5, d; d=f(f(a, b), f(a, c); printf(“ d n“, d); 程序运行后的输出结果是 ( )。 ( A) 9 ( B) 10

13、 ( C) 8 ( D) 7 29 以下叙述中正确的是 ( )。 ( A)函数调用时,不必区分函数名称的大小写 ( B)调用函数时,函数名必须与被调用的函数名完全一致 ( C)函数名允许用数字开头 ( D)在函数体中只能出现一次 return语句 30 以下叙述中正确的是 ( )。 ( A)当对文件的读 (写 )操作完成之后,必须将它关闭,否则可能导致数据丢失 ( B)打开一个已存在的文 件并进行了写操作后,原有文件中的全部数据必定被覆盖 ( C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1个数据 ( D) C语言中的文件是流式文件,因此只能顺序存取数据 31

14、 有以下程序: #include stdio h int m1(int x, int y) returnx =y?x: y; int m2(int x, int y) returnx =y?y: x; im fun(int a, int b) return a+b; main() int x=2, y=3, z=1; printf(“ d n“, fun(m1(x, y), m2(y, z); 程序的运行结果是 ( )。 ( A) 5 ( B) 6 ( C) 4 ( D) 3 32 有以下程序 (strcpy为字符串复制函数, strcat为字符串连接函数 ): #include stdio

15、h #include string h void main() char a10=“abc“, b10=“012“, c10=“xyz“; strcpy(a+1, b+2); puts(strcat(a, c+1); 程序运行后的输出结果是 ( )。 ( A) a12xyz ( B) 12yz ( C) a2yz ( D) bc2yz 33 以下叙述中正确的是 ( )。 ( A)如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息 ( B)即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同 ( C)设变量 p是一个指针变量,则语句 p=0;是非法的,应该使用 p

16、=NULL; ( D)指针变量之间不能用关系运算符进行比较 34 以下叙述中正确的是 ( )。 ( A)如 果 p是指针变量,则 &p是不合法的表达式 ( B)如果 p是指针变量,则 *p表示变量 p的地址值 ( C)在对指针进行加、减算术运算时,数字 1表示 1个存储单元的长度 ( D)如果 p是指针变量,则 *p+1和 *(p+1)的效果是一样的 35 有以下程序: #include stdio h #include stdlib h void fun(int*s, int x23) *s=*(x1+1); void main() int a23=1, 2, 3, 4, 5, 6, *p;

17、 p=(int*)malloc(sizeof(int); fun(&p, a); printf(“ d n“, *p); 程序的运行结果是 ( )。 ( A) 5 ( B) 2 ( C) 6 ( D) 3 36 有以下程序: #include stdio h main() int a=2, 3, 5, 4, i; for(i=0; i 4; i+) switch(i 2) case0: switch(ai 2) case0: ai+; break; case1: ai-; break; case1: ai=0; for(i=0; i 4; i+) printf(“ d“, ai); print

18、f(“ n“); 程序运行后的输出结果是 ( )。 ( A) 3344 ( B) 2050 ( C) 3040 ( D) 0304 37 有如下程序: #include stdio h void main() int x=0x13; if(x=0x18)printf(“T“); printf(“F n“); 程序运行后的结果是 ( )。 ( A) TF ( B) T ( C) F ( D) TFT 38 下面结构体的定义语句中,错误的是 ( )。 ( A) struct ordint x; int y; int z; street ord a; ( B) struct ordint x; in

19、t y; int z; ; struct ord a; ( C) struct ordint x; int y; int z; a; ( D) streetint x; int y; int z; a; 39 有以下程序: #include stdio h void fun(int n) static int x3=1, 2, 3; int k; for(k=0; k 3; k+) xk+=xk-n; for(k=0; k 3; k+) printf(“ d, “, xk); main() fun(0); fun(1); 程序运行后的输出结果是 ( )。 ( A) 1, 2, 3, 0, 2,

20、 4, ( B) 2, 4, 6, 3, 7, 11, ( C) 2, 4, 6, 1, 3, 5, ( D) 1, 2, 3, 4, 5, 6, 40 有以下程序: #include stdio h void main() unsigned char a=8, c; c=a 3: printf(“ d n“, c); 程序运行后的输出结果是 ( )。 ( A) 32 ( B) 16 ( C) 1 ( D) 0 二、程序填空题 41 给定程序中,函数 fun的功能是:把形参 s所指字符串中最右边的 n个字符复制到形参 t所指字符数组中,形成一个新串。若 S所指字符串的长度小于 n,则将整个字符

21、串复制到形参 t所指字符数组中。 例如,形参 s所指的字符串为: abcdefgh, n的值为 5,程序执行后 t所指字符数组中的字符串应为: defgh。 请在程序的 下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include string h #defin 三、程序修改题 42 下列给定程序中,函数 fun的功能是:将长整型数中各位上为偶数的数依次取出,构成一个新数放在 t中。高位仍在高位,低位仍在低位。 例如,当 s中的数为 87653142时, t中的数为 8642。 请改

22、正程序中的错误,使它能得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h void fun(long s, long*t) int d; long s1=1; *t=0; while(s 0) d=s 10; *found* if 四、程序设计题 43 请编写函数 fun,该函数的功能是:将 s所指字符串中 ASCII码值为偶数的字符删除,串中剩余字符形成一个新串放在 t所指的数组中。 例如,若 s所指字符串中的内容为 “ABCDEFG12345“,其中字符 B的 ASCII码值为偶数,字符 2的 ASCII码值为偶 数,都应当删除,

23、其他依此类推。最后 t所指的数组中的内容应是 “ACEG135“。 注意:请勿改动 main函数和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题程序: #include stdio h #include string h 国家二级( C语言)机试模拟试卷 156答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 算法是一组有穷指令集,是解题方案的准确而完整的描述。通俗地说,算法就是计算机解题的过程,重在解题方案的设计,并且不等于计算方法,故 A和 C选 项不正确。程序的编制不可能优于算法的设计,但算法的描述可以用程序、伪代码、流程图来描述,故 B选项正确。

24、算法要求执行过程中所需要的基本运算次数和时间最少,即时间复杂度最低,所以 D选项不正确。正确答案为B。 2 【正确答案】 C 【试题解析】 在程序流程图中: 标有名字的带箭头线段表示控制流; 矩形表示加工步骤; 菱形表示逻辑条件。 3 【正确答案】 A 【试题解析】 对于满二叉树,叶子结点的数目等于 2n-1, n为深度,这里就是24=16。 4 【正确答案】 A 【试题解析】 结构化程 序设计的思想包括:自顶向下、逐步求精、模块化、限制使用 goto语句,所以选择 A。 5 【正确答案】 B 【试题解析】 栈是只允许在栈顶进行插入和删除运算的线性表,按 “先进后出 ”组织数据。 6 【正确答

25、案】 D 【试题解析】 软件不像硬件一样具有实物的特性,而是一种逻辑实体,具有抽象性;开发复杂性高,成本昂贵;在运行、使用期间不存在磨损、老化问题。故A、 B和 C选项正确。由于软件是一种知识产品,受知识产权法的保护,所以 D选项不正确。 7 【正确答案】 D 【试题解析】 计算机软件是 计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。答案选 D。 8 【正确答案】 D 【试题解析】 C语言中标识符由字母、下画线或数字组成,且开头必须是字母或下画线。 9 【正确答案】 C 【试题解析】 学号是学生表 S的主键,课号是课程表 C的主键,因此选课表 SC的关键字应该与前

26、两个表能够直接联系且能唯一定义元组,学号和课号的组合满足条件。 10 【正确答案】 A 【试题解析】 从表图中可以看出,关系 T是从关系 R中选取一部分字段 (A和 C)及其值构成新的关系 ,是一种纵向操作产生新列,属于投影,正确选项为 A。 11 【正确答案】 C 【试题解析】 函数是一个独立的模块,不同函数之间的定义相互没有影响,所以标识符可以相同,选项 A错误;除了 main函数不能被其他函数调用之外,用户自定义函数可以调用其他任意函数,选项 B错误;一个 C程序可以有一个或多个程序文件,所以也可以有一个或多个函数,选项 C正确;函数体内部只可以调用,但是不可以定义其他函数,选项 D错误

27、。故答案选 C。 12 【正确答案】 B 【试题解析】 C语言程序编译时将每条可执行语句转换为二进 制的机器指令,但非执行语句 (如注释语句 )不被编译。所以选项 B错误。 13 【正确答案】 A 【试题解析】 本题考查用户标识符,用户自己定义的标识符不能与关键字相同,并且尽量避免和预定义标识符相同。本题中 scanf为预定义标识符,可以作为用户标识符; case为关键字,不能作为用户标识符,故而答案选 A。 14 【正确答案】 C 【试题解析】 考查算术表达式的写法,选项 C中没有, ,需要用数值 3 14代替, sin函数的参数为弧度,角度 30转成弧度应为 3 14*30 180。故应选

28、 C。 15 【正确答案】 C 【试题解析】 赋值运算符的左侧必须为变量而不能是表达式,所以答案选 C。 16 【正确答案】 D 【试题解析】 NULL为一个符号常量,对应的 ASCII码值为 0,答案选 D。 17 【正确答案】 A 【试题解析】 本题考查 printf函数的格式输出, “格式控制字符串 ”部分为 “ f”表示按照浮点型输出,选项 B正确;加入长度格式符 1即 “ 1”表示按照双精度浮点型输出,选项 C正确;若要控制输出精度,则需以 “ ”开头,后跟十进制整数,如 “ 2f”或 “ O 2f”,选项 D正 确;控制输出宽度则是用整数表示,如“ 5f”,选项 A中 “ 5 Of

29、表示输出宽度为 5,右对齐,小数点后保留位数为0,所以结果输出为 2,不能完整输出 x,答案选 A。 18 【正确答案】 A 【试题解析】 在 sanf()函数中格式字符串的形式必须与地址格式保持一致,所以B、 D选项不正确。 C选项中 c= d是以数值格式存入 c变量。故只有 A选项正确。 19 【正确答案】 A 【试题解析】 条件表达式: x=表达式 1?表达式 2:表达式 3,其含义是先求解表达式 1,若其值为非 0(真 ),则求解表达式 2,将表 达式 2的值赋给 x;若表达式 1的值为 0(假 ),则求解表达式 3,将表达式 3的值赋给 x。与表达式 (x-y)等价的是(x-y 0x

30、-y 0)。 20 【正确答案】 A 【试题解析】 考查条件运算符。条件表达式的形式为:表达式 1?表达式 2:表达式 3,计算 “表达式 1”的值,若为 “真 ”,取 “表达式 2”的值作为整个条件表达式的值;若为 “假 ”,取 “表达式 3”的值作为整个条件表达式的值。字符参与运算时一般计算其 ASCII码,并且一个字母的小写 -大写 =32(ASCII码 ),该程序将大写字母转成对应的小写字母,答案选 A。 21 【正确答案】 B 【试题解析】 考查 while循环的执行过程。先计算括号内表达式的值,若不为 0则执行循环体语句,若为 0则跳出 wlaile循环,所以条件表达式的执行次数总

31、是比循环体的执行次数多一次答案选 B。 22 【正确答案】 A 【试题解析】 C语言中带参数的宏可以理解为用参数直接替代定义式中的变量,而不经过任何修改。所以 s=f(a+1)=a+1*a+1*a+1, t=f(a+1)=(a+1)*(a+1)*(a+1),所以有无括号的运算结果是不同的。 23 【正确答案】 D 【试题解析】 全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。 24 【正确答案】 C 【试题解析】 scanf()函数的一般调用形式为: scanf(格式控制,输入地址列表 )。其中,格式控制是用双引号括起来的字符串,包括格式字符和普

32、通字符,格式是是由 “ ”和格式字符组成。 getchar()函数的功能是从标准输入设备上读入一个字符。根据程序中的格式控制可知,接收输入时分别把 1赋给了 a, 2赋给了 b,然后 getchar()函数提取一个换行符赋给 c,再提取一个字符 3赋给 d。所以程序的输出结果为: 12 CR 3。 25 【正确答案】 D 【试题解析】 函数 fun是递归函数,递归终止条件是 x小于等于 2,当大于 2时递归调用 fun(x 2)。第一次循环 x 2=3,调用 fun(3), x 2=1,跳出 if循环,执行输出 x=3,然后回到第一次循环,执行 if循环的语句,输出 x=7。 26 【正确答案

33、】 C 【试题解析】 因为 b是全局变量,所以它的值在整个程序结束才会消失。 for循环中,第一次循环, i=2, a2=3,所以 fun(&ai=3+2=5, b=5,所以b=fun(&ai)+b=5+5=10;第二次循环, b=10,然后 fun(&ai)代入 a3=4,这时fun(&ai=10+4=14,所以 b=fun(&ai)+b=14+14=28。 27 【正确答案】 A 【试题解析】 A项错误,数组定义后,不能对数组整体赋值, ss是二维数组,ss1是一维字符数组,即字符串,字符串赋值可以使用 “strcpy(ss1, ”right”); ”的形式,但不能使用赋值的形式。 B、

34、D两项正确,在定义时对数组同时进行初始化; C项 正确,将常量字符串在内存中的首地址赋给指针数组的一个元素。 28 【正确答案】 A 【试题解析】 考查函数的返回值。 d=f(f(a, b), f(a, c)=f(b-a)*a, (c-a)*a)=f(3, 6)=(6-3)*3=9,所以答案选 A。 29 【正确答案】 B 【试题解析】 调用函数的时候只有保证调用语句的函数名和被调函数的函数名、参数列表一致才能保证调用的正确性,选项 B正确。 C语言对大小写敏感,选项A错。用户自定义的函数名需要遵循用户标识符的命名规则,由字母、数字、下画线组成并且第 一个字符不能为数字,选项 C错。一个函数每

35、次只能使用一个return语句,但是该函数体中可以有多个返回点,也就是有多条 return语句,每次只从其中一点返回,选项 D错。答案选 B。 30 【正确答案】 A 【试题解析】 A选项正确, C语言通过文件缓冲区对文件进行操作,如果操作完成后不进行关闭文件,可能导致文件缓冲区中的数据丢失。 B选项错误,打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等; C选项错误,在一个程序中当对文件进行了写操作后,用 fSeek()函数进行重新定位就能够读到第 1个数据; D选项错误, C语言中的文件可以进行随机读写。 31 【正确答案】 A 【试题解

36、析】 函数 m1()返回两个参数中较小的数值,函数 m2()返回两个参数中较大的数值,函数 fun()返回两个参数之和,所以 fun(m1(x, y), m2(y,z)=fun(m1(2, 3), m2(3, 1)=fun(2, 3)=5,答案选 A。 32 【正确答案】 C 【试题解析】 先执行 strcpy,将 b2中的 2复制到 a1中的 b及之后的存储空间中,即此时数组 a中值为 a2, 再执行 strcat连接函数,将 c1所指的 y及之后的 z与 a连接,即为 a2yz。 33 【正确答案】 A 【试题解析】 空指针意味着该指针没有指向任何具体的变量,所以不能访问一个存储单元,选项

37、 A正确。指针的赋值运算只能在同一数据类型之间进行,故选项B错。语句 p=0和 p=NULL是一样的,都是把一个空指针赋给指针变量 p,故选项 C错。指针之间能进行关系运算,比较的是地址值的大小,选项 D错。答案选A。 34 【正确答案】 C 【试题解析】 考查指针的用法。指针进行算术运算的时候,数字 “1”不再 代表十进制整数 “1”,而是指一个存储单元长度,选项 c正确。指针变量存储的是其指向的变量的地址,其本身的地址仍用取地址运算符 “&“求得,木 p表示的是 p指向的变量的值,选项 A、 B错。 *p+1表示的是指针 p指向的变量值 +1,而 *(p+1)则是取得了下一个变量的值,两者

38、不同,选项 D错。答案选 C。 35 【正确答案】 A 【试题解析】 *s=*(x1+1);的作用是将 a数组的 5的地址赋给了 p,故正确答案为 A。 36 【正确答案】 C 【试题解析】 main函数的函数体是一个 for循环语句, for循环中包含一个switch语句,如果判断条件为 0,则进入第二个 switch语句,如果判断语句为 1,则执行 “ai=0”,最后将数组按顺序输出。所以程序功能是将数组的偶数项设为O,奇数项如果为奇数则减 1,为偶数就加 1,最后得到结果。 37 【正确答案】 A 【试题解析】 x=1x18为赋值表达式,十六进制数 0x18非 0, if条件成立输出T,

39、之后再输出 F与回车符。程序运行后的输出结果是 TF。 38 【正确答案】 A 【试题解析】 分号代表该结构体定义语句的结束,选项 A的结构体没有定义完全就用该结构体另外定义变量,用法有误,所以答案选 A。 39 【正确答案】 B 【试题解析】 第一次调用 fun()函数,此时 n=0,数组 x是静态的,因此,只在第一次时初始化,由 xk+=xk-n计算可知, x=2, 4, 6,第二次调用 fun(),此时 n=1, x=2, 4, 6,经计算得 x=3, 7, 11,故输出结果为 2, 4, 6,3, 7, 11,。 40 【正确答案】 C 【试题解析】 字符常量与其 ASCII码值一一对

40、应,在计算的时候,可以使用该字符的 ASCII码参与运算, 输出时会根据格式控制符输出对应的字符或者 ASCII码。右移运算符 “ ”的运算规则是把左边运算数的各二进制位全部右移 n位, n取决于 “ ”右边的数值。字符 a的 ASCII码值为 8,对应二进制为 1000,所以a 3=1,输出的字符 c的 ASCII码值为 1,答案选 C。 二、程序填空题 41 【正确答案】 (1)t, s (2)si (3)0或 0 【试题解析】 本题考查:在矩阵中找出在行上最大、在列上最小的那个元素。 填空 1:当给定的长度 n大于该字符串 s的长度,那么把该字符串直接复制到 t就可以了 ,所以应填 t,

41、 s。 填空 2:使用 for循环语句,把最右边 n个字符依次添加到 t中,所以应填 si。 填空 3:字符串操作结束,需要给 t加一个字符串结束符,所以应填 0或 0。 三、程序修改题 42 【正确答案】 (1)if(d 2=0) (2)s =10; 【试题解析】 本题考查: if语句条件表达式,注意 “=”和 “=”的区别;除法运算符 “ ”。 (1)分析程序,在 if的条件表达式中,不应该出现赋值运算符 “=”,应使用 “=”运算符。 (2)这里是一个运算符的错误,表示除法的运算符是 “ ”。 四、程序设计题 43 【正确答案】 void fun(char*s, char t) int

42、i=0; for(; *s!= 0; s+) *找出 ASCII值为奇数的字符依次存入数组 t中 * if(*s 2=1) ti+=*s; ti= 0; *在字符串的末尾加上串结束符 * 【试题解析】 本题要求将 s所指字符串中 ASCII码值为偶数的字符删除,因此本题要求采用一个 for循环来找出 ASCII码值为奇数的字符依次存入数组 t中,并使用 if条件句来判断 s所指字符串中 ASCII码值是否为奇数。用 0加在字符串的末尾来表示字符串的结束。 要删除 ASCII码值为偶数的字符,也就是要留下 ASCII码值为奇数的字符。由于最终是要求出剩余字符 (即 ASCII码值为奇数 )形成的新串,所以本题程序的算法是对原字符串从头到尾扫描,找出 ASCII码值为奇数的字符并将其依次存入数组 t中。此外,还要注意数组 t的下标变化

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