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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级 C语言机试( C语言程序设计)模拟试卷 22及答案与解析 一、选择题 1 设有定义: structchar mark12; int num1; double num2; t1, t2;若变量均己正确赋初值,则以下语句中错误的是 ( A) t2.num1 t1.numl: ( B) t2.mark t1.mark; ( C) t1 t2; ( D) t2.num2 t1.num2; 2 有以下程序 struct A int a; char b10; double c; ; void f(struct A t); main() struct A a 1001,“ZhangDa“,1098

2、 0; f(a); printf(“ d, s, 6 1f n“, a a, a b, a c); void f(struct A t) t a 1002; strcpy(t, b, “ChangRong“); t c 1202 0; 程序运行后的输出结果是 ( A) 1002, ChangRong, 1202 0 ( B) 1001, ZhangDa, 1098 0 ( C) 1001, ChangRong, 1098 0 ( D) 1002, ZhangDa, 1202 0 3 若有以下程序 struct stuchar *name, gender; int score; ; main()

3、 struct stu a NULL, m, 290, b; a name (char*)malloc(10); strcpy(a name, “Zhao“); b a: b gender f; b score 350; strcpy(b name, “Qian“); primf(“ s, c, d, “, a name, a gender, a score); printf(“ s, c, d n“, b name, b gender, b score); 则程序的输出结果是 ( A) Zhao, m, 290, Qian, f, 350 ( B) Qian, f, 350, Qian, f

4、, 350 ( C) Zhao, m, 290, Zhao, f, 350 ( D) Qian, m, 290, Qian, f, 350 4 若有以下程序 typedef struct stuchar *name, gender; int score; STU; void f(char*p)p (char*)malloc(10); strcpy(p, “Qian“); main() STU a NULL, m, 290, b; a name (char*)malloc(10); strcpy(a name, “Zhao“); b a; f(b.name); b gender f; b sco

5、re 350; printf(“ s, c, d, “, a name, a gender a score); printf(“ s, c, d n“, b name, b gender,b score); 则程序的输出结果是 ( A) Zhao, m, 290, Qian, f, 350 ( B) Qian, f, 350, Qian, f, 350 ( C) Qian, m, 290, Qian, f, 350 ( D) Zhao, m, 290, Zhao, f, 350 5 若有以下程序 typedef struct stuchar name10, gender; int score;

6、 STU; void f(STU a, STU b) b a; printf(” s, c, d, “, b name, b gender,b score); main() STU a “Zhao“, m, 290, b “Qian“, f, 350; f(a, b); printf(“ s, c, d n“, b name, b gender, score); 则程序的输出结果是 ( A) Zhao, m, 290, Zhao, m, 290 ( B) Zhao, m, 290, Qian, f, 350 ( C) Qian, f, 350, Qian, f, 350 ( D) Zhao,

7、m, 290, Zhao, f, 350 6 若有以下程序 typedef struct stuchar name10, gender; int score; STU; void f(char *P)strcpy(P, “Qian“); main() STU a “Zhao“, m, 290, b; b a; f(b name); b gender f; b score 350; printf(“ s, c, d, “, a name, a gender,a score); printf(“ s, c, d n“, b name, b gender, b score); 则程序的输出结果是 (

8、 A) Zhao, m, 290, Zhao, m, 290 ( B) Qian, f, 350, Qian, f, 350 ( C) Zhao, m, 290, Qian, f, 350 ( D) Zhao, m, 290, Zhao, f, 350 7 为了建立如图所示的存储结构 (即每个结点含两个域, data是数据域, next是指向结点的指针域 ),则在 处应填入的选项是 Struct linkchar data;node; ( A) struct link*next; ( B) link next; ( C) link*next; ( D) struct link next; 8

9、若有以下程序段 struct stint n; struct st*next; ; struct st a3 5, &a1, 7, &a2, 9, 0, *p; p &a0; 则以下选项中值为 6的表达式是 ( A) (p n) ( B) (*p) n ( C) p n ( D) P n 9 以下叙述中正确的是 ( A)结构体类型中的成分只能是 C语言中预先定 义的基本数据类型 ( B)在定义结构体类型时,编译程序就为它分配了内存空间 ( C)结构体类型中各个成分的类型必须是一致的 ( D)一个结构体类型可以由多个称为成员 (或域 )的成分组成 10 以下叙述中正确的是 ( A)结构体类型中的

10、各个成分均不能是数组或指针 ( B)结构体类型的变量,不能在声明结构体类型组成时一起定义 ( C)使用 typedef定义新类型名后,新类型名与原类型名实际上是等价的 ( D)元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义 11 以下叙述中正确的是 ( A)函数的返回值不能是结构体类型 ( B)函数的返回值不能是结构体指针类型 ( C)在调用函数时,可以将结构体变量作为实参传给函数 ( D)结构体数组不能作为参数传给函数 12 以下叙述中正确的是 ( A)结构体变量的地址不能作为实参传给函数 ( B)结构体数组名不能作为实参传给函数 ( C)即使是同类型的结构体变量,也不能进

11、行整体赋值 ( D)结构体中可以含有指向本结构体的指针成员 13 设有如下的说明和定义 structint a; char*s; )x, *p &x; x a 4; x shello“; 则以下叙述中正确的是 ( A)语句 +p a;的效果是使 P增 1 ( B) (p ) a与 p a都是合语法的表达式,但二者不等价 ( C)语句 *p s;等价于 (*p) s; ( D)语句 p a;的效果是使成员 a增 1 14 有以下程序 struct Sint a; int b; ; main() struct S a, *p &a; a a 99; printf(“ d n“, _); 程序要求输

12、出结构体中成员 a的数据,以下不能填入横线处的内容是 ( A) a a ( B) *p a ( C) p a ( D) (*p) a 15 若已建立以下链表结构,指针 P、 S分别指向如图所示结点则不能将 S所指节点插入到链表末尾的语句组是 ( A) S next 0; p p next; P next s; ( B) p p next; S nex p; p next s; ( C) p p next; S next p next; p next s; ( D) p (*p) next; (*S) next (*p) next; (*p) next s; 16 有以下程序 #include

13、struct STUchar name9; char sex; int score2; ; void f(struct STU a) struct STU b “zhao“, m, 85, 90; a1 b; main() struct STU c2 “Qian“,f, 95, 92, “Sun“, m, 98, 99); f(c); printf(“ s, c, d, d, “, c0 name, c0 sex, c0 score0,c0 score1); printf(“ s, c, d, d n, “, c1 name, c1 sex, c1 score0,c1 score1); 程序运

14、行后输出结果是 ( A) Qian, f, 95, 92, Sun, m, 98, 99 ( B) Zhao, m, 85, 90, Sun, m, 98, 99 ( C) Qian, f, 95, 92, Zhao, m, 85, 90 ( D) Zhao, m, 85, 90, Qian, f, 95, 92 17 以下叙述中错误的是 ( A)函数的返回值类型不能是结构体类型, 只能是简单类型 ( B)只要类型相同,结构体变量之间可以整体赋值 ( C)可以通过指针变量来访问结构体变量的任何成员 ( D)函数可以返回指向结构体变量的指针 18 有以下程序 main() unsigned ch

15、ar a 8, c; C a 3; printf(“ d n“, c); 程序运行后的输出结果是 ( A) 16 ( B) 32 ( C) 1 ( D) 0 19 有以下程序 main() unsigned char a 2, b 4, c 5, d: d a b; d c; printf(“ d n“, d); 程序运行后的输出结果是 ( A) 3 ( B) 5 ( C) 4 ( D) 6 20 下面选项中关于位运算的叙述正确的是 ( A)位运算符都需要两个操作数 ( B)左移运算的结果总是原操作数据 2倍 ( C)右移运算时,高位总是补 0 ( D)位运算的对象只能是整型或字符型数据 21

16、 变量 a中的数据用二进制表示的形式是 01011101,变量 b中的数据用二进制表示的形式是 11110000若要求将 a的高 4位取反,低 4位不变,所要执行的运算是 ( A) a b ( B) a b ( C) a b ( D) a 4 22 若有以下程序段 int r 8: printf(“ d n“, r 1); 输出结果是 ( A) 8 ( B) 4 ( C) 16 ( D) 2 23 有以下程序 main() int a 1, b 2, c 3, x; x (ab) c; printf(“ d n“, x); 程序的运行结果是 ( A) 1 ( B) 2 ( C) 3 ( D)

17、0 24 有以下程序 #include main() int a 2, b; b a 2; printf(“ d n“, b); ( A) 4 ( B) 6 ( C) 8 ( D) 2 25 有以下程序 #include main() char a 4; printf(“ d n“, a a main() int a 5, b 1, t; t (a2) b; printf(“ d n“, t); ( A) 11 ( B) 6 ( C) 21 ( D) 1 国家二级 C语言机试( C语言程序设计)模拟试卷 22答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 这个题目主要涉及到结构体的

18、定义与赋值操作。根据题意结构体变量 t1, t2的成员变量 mark是字符数组,对于字符数组之间的赋值操作应该使用循环语句对每个字符进行赋值,而选项 A是用数组名实现字符数组之间的赋值操作,是错误的。 【知识模块】 C语言程序设计 2 【正确答案】 B 【试题解析】 在主函数中定义结构体 A的变量 a,并对其赋初值, 再调用函数f(a),形参 t接收实参的数据,在函数 f(t)中对结构体变量 t的各个成员进行了赋值操作,需要注意的,形参和实参之间是数据传递,因此对形参的操作对实参不产生影响,因此在主函数输出仍然输出变量 a的数据 【知识模块】 C语言程序设计 3 【正确答案】 D 【试题解析】

19、 主函数中定义结构体类型 struct stu,有三个成员,第一个成员为字符指针变量。主函数中为 stu类型变量 a赋值,首先为 a name成员分配存储空间,存入数据。 b a;语句执行完毕以后, a和 b的各个成员值相同,需要注意的是 b name和 a name成员都保存了同一段内存的地址,因此当为变量 b赋值的时候,同样更改了 a的 name成员,而其他成员由于有单独的存储空间而不会发生改变。 【知识模块】 C语言程序设计 4 【正确答案】 D 【试题解析】 函数 f(char*p)的主要功能申请字符串的存储空间,然后存入字符串 “Qian“,但当程序调用结束以后,形参指针变量 p撤销

20、,存储的字符串地址丢失,而不能更改实参指针的值。主函数中结构体变量定义同时赋初值,初始情况其 name指针成员存储空,而后语句为其分配存储空间,存入字符 串 “Zhao“。执行 b a;语句后, b的数据和 a的数据相同,调用函数 f以后, b的 name成员的值没变。 【知识模块】 C语言程序设计 5 【正确答案】 B 【试题解析】 函数 f(STu a, STU b)的主要功能是为把结构体变量 a的值存放到b中,然后输出 b中各个成员的值。土函数中调用函数 f(a, b),输出赋值以后 b的数据,实际为 a“Zhao“, m, 290的数据,函数调用结束,形参 a和 b撤销,流程到主函数输

21、出 b “Qian“, f, 350的数据。 【知识模块】 C语言程序设计 6 【正确答案】 C 【试题解析】 主函数中结构体变量定义同时赋初值。执行 b a;语句后, b的数据和 a的数据相同,调用函数 f(b name),形参指针 p接收实参 b name的地址,此时 p和 b name指向同一个存储空间,流程转到 f执行, p指向的存储空间存放字符串 “Qian“,流程结束返回主函数。主函数中变量 b的其他成员存放数据。因此 a的数据 “Zhao“, m, 290, b的数据为 “Qian“, f,350。注意本题结构体 STU类型变量 a和 b中的 name成员为数组,不是指针,它具有

22、自 己的存储空间。 【知识模块】 C语言程序设计 7 【正确答案】 A 【试题解析】 单链表为动态分配的存储空间,在分配时,每个结点之间可以是不连续的 (结点内是连续的 )。结点之间的联系用指针实现, 即在结点结构中定义一个成员项用来存放下一结点的首地址,这个用于存放地址的成员,常把它称为指针域,该指针为了保持链表中结点的地址,因此其基类型和结点的类型相同,选项为 A。 【知识模块】 C语言程序设计 8 【正确答案】 A 【试题解析】 选项 A中表达式 (p n)为前缀自加表达式, p n和a0 n等价,其值为 5,前缀自加后值为 6。选项 B中表达式 (*p).n和选项 D的表达式 p n含

23、义相同,表示取结构指针 p所指向的成员,因此值为 5。选项 C中表达式 p n为后缀自加表达式,相当于 (p n),表达式值为 5。 【知识模块】 C语言程序设计 9 【正确答案】 D 【试题解析】 结构体类型,它是由若干 “成员 ”组成,每一个成员可以是一个基本数据类型或者是一个构造类型。在说明和使用之前必须先定义它,也就是构造它。 定义一个结构的一般形式为: struct结构名 成员 列表 ); 成员列表由若干个成员组成,对每个成员也必须作类型说明,其形式为: 类型说明符成员名; 可以说明类型不同的各个成员。 【知识模块】 C语言程序设计 10 【正确答案】 C 【试题解析】 C语言允许用

24、 typedef说明一种新类型名, typedef语句的作用仅仅是用 “标识符 ”来代表已存在的 “类型名 ”,并未产生新的数据类型,原有类型名依然有效。结构体变量定义有下面三种形式: (1)先定义结构,再说明结构变量。 (2)在定义结构类型的同时说明结构变量。 (3)直接说明结构变量。 【知识模块】 C语言程序设计 11 【正确答案】 C 【试题解析】 和普通变量相似,结构体变量也可以作为函数实参或者形参,函数的返回值也可以是结构体类型。 【知识模块】 C语言程序设计 12 【正确答案】 D 【试题解析】 一个结构体变量包含若干成员,这些成员可以是数值类型、字符类型、数组类型,也可以是指针类

25、型,甚至可以是正在定义的结构体类型指针。用结构体变量作实参时,采取的是 “值传递 ”的方式,将结构体变量所占的内存单元的内容全部顺序传递给形参。形参也必须是同类型的结构体变量。结构体数组作为参 数时,采取了 “地址传递 ”的方式,形参须为同类型的结构指针或者形参结构数组。 【知识模块】 C语言程序设计 13 【正确答案】 D 【试题解析】 p a得到 D指向的结构体变量中的成员 a的值。 p a得到 p指向的结构体变量中的成员 a的值,用完该值后使 p a加 1。 p a得到 p指向的结构体变量中的成员 a的值使之加 1(先加 )。由此可见指向运算符优先级高于,因此 *p s相当于 *(p s

26、),结合性自右至左,因此 p a和 (p ) a等价。 【知识模块】 C语 言程序设计 14 【正确答案】 B 【试题解析】 如果 p指向结构体,那么下面三种形式都可以访问结构体的成员:结构体变量成员名、 (*p)成员名、 p成员名。 【知识模块】 C语言程序设计 15 【正确答案】 B 【试题解析】 选项 A中首先 p后移, s的后继指针指向 p, p的后继指向 s,在 s和最后结点之间形成了圆圈,、无法完成题中的操作。 【知识模块】 C语言程序设计 16 【正确答案】 C 【试题解析】 在主函数中,定义了结构体 STU数组 c2,并对其赋初始值。执行 f(c)时,在函数 f()中,把结构体

27、变量 b的值赋给了 c1。 【知识模块】 C语言程序设计 17 【正确答案】 A 【试题解析】 函数的返回值类型可以是结构体类型。结构体变量之间可以相互复制。 【知识模块】 C语言程序设计 18 【正确答案】 C 【试题解析】 在程序中对无符号字符变量 a的值执行右移 3位运算后,相当于 a 8,其值等于 1,再赋给变量 c。 【知识模块】 C语言程序设计 19 【正确答案】 C 【试题解析】 本题考查位运算,为按位或运算, &为按 位与运算,按位与 (&)运算符的作用是:把参加运算的两个运算数按对应的二进制位分别进行 “与 ”运算,当两个相应的位都为 1时,该位的结果为 1;否则为 0。按位

28、或 (1)的运算规则是:参加运算的两个运算数中,只要两个相应的二进制位中一个为 1,则该位的运算结果即为 1;只有当两个相应位的数都为 0时,该位的运算结果才为 0。首先 d 2 4值为 6, d 6&5值为 4。 【知识模块】 C语言程序设计 20 【正确答案】 D 【试题解析】 位运算则是以位 (bit)一级进行的运算,位运算符中除 “ ”以外,均为二元运算符 ,即要求两侧各有一个运算量,运算量只能是整型或字符型的数据,不能为实型数据。其中右移时,右端 (低位 )移出的二进制数舍弃,左端 (高位 )移入的二进制数分两种情况:对于无符号整数和正整数,高位补 0;对于负整数,高位补 1。而左移

29、运算在没有溢出的前提下每移动一位,相当于原数据的 2倍。 【知识模块】 C语言程序设计 21 【正确答案】 A 【试题解析】 本题考查位运算功能。题目要求将 a的高 4位取反,低 4位不变,即操作完成之后 a的值应为 10101101。选项 A使用异或运行,相同为 0,相异为1,计算结果为 10101101;选项 B使用位或运算,计算结果为 11111101;选项 C使用位与运算,计算结果为 01010000;选项 D是把 a左移 4位,计算结果为11010000。 【知识模块】 C语言程序设计 22 【正确答案】 B 【试题解析】 定义了整型变量 r,其值等于 8,在输出语句中,把变量 r的

30、值向右移动一位,在 C语言中把变量向右移动一位,相当于其值除以 2,所以在题中把变量 r的值 8除 2,得到其值等于 4。 【知识模块】 C语言程序设计 23 【正确答案】 C 【试题解析】 1、 2、 3的二 进制形式分别为 00000001、 00000010、 00000011。首先计算 1与 2的或运算,即 1 2 (00000001) (00000010) 00000011,再将其与3进行 “与 ”运算,结果为 (00000011)&(00000011) 00000011,即十进制数 3。 【知识模块】 C语言程序设计 24 【正确答案】 C 【试题解析】 表达式 a 2,把 a向左移动 2位,相当于扩大 4倍。 【知识模块】 C语言程序设计 25 【正确答案】 A 【试题解析】 本题主要考查按位右 移运算。 a 4的二进制为 00000100, a 1后为 00001000,其值为十进制数值 8。 【知识模块】 C语言程序设计 26 【正确答案】 C 【试题解析】 本题考查位操作运算符。 “ ”是左移运算符,左移一位相当于乘2, “ ”是按位或运算符。 5左移两位相当于乘 4,得到 20, 20的二进制数是00010100,和 00000001进行按位或操作得到 00010101,即十进制的 21。 【知识模块】 C语言程序设计

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