admin 管理员组文章数量: 887021
2023年12月16日发(作者:placeholder使用方法)
全国计算机等级考试2019年二级C语言程序设计模拟试题3
(总分100, 做题时间120分钟)
选择题
(每题 1 分, 共 40 分)
1.
下列叙述中正确的是( )。
SSS_SINGLE_SEL
A
栈与队列都只能顺序存储
B
循环队列是队列的顺序存储结构
C
循环链表是循环队列的链式存储结构
D
栈是顺序存储结构而队列是链式存储结构
分值: 1
答案:B
栈是所有的插入与删除都限定在表的同一端进行的线性表; 队列是指允许在一端进行插入, 而在另一端进行删除的线性表, 二者均即可以顺序存储也可以链式存储。 为了充分地利用数组的存储空间, 把数组的前端和后端连接起来, 形成一个环形的表, 称为循环队列, 因此循环队列是队列的一种顺序存储结构。
2.
算法空间复杂度的度量方法是( )。
SSS_SINGLE_SEL
A
算法程序的长度
B
算法所处理的数据量
C
执行算法所需要的工作单元
D
执行算法所需要的存储空间
分值: 1
答案:D
算法的空间复杂度是指执行这个算法所需要的存储空间, 包括: ①输入数据所占的存储空间; ②程序本身所占的存储空间; ③算法执行过程中所需要的额外空间。
3.
设有栈 S 和队列 Q, 初始状态均为空。 首先依次将 A, B, C, D, E, F
入栈, 然后从栈中退出三个元素依次入队, 再将 X, Y, Z 入栈后, 将栈中所有元素退出并依次入队, 最后将队列中所有元素退出, 则退队元素的顺序为( )。
SSS_SINGLE_SEL
A
DEFXYZABC
B
FEDZYXCBA
C
FEDXYZCBA
D
DEFZYXABC
分值: 1
答案:B
栈是一种特殊的线性表, 它所有的插入与删除都限定在表的同一端进行。 队列是指允许在一端进行插入, 而在另一端进行删除的线性表。 将 A, B,
C, D, E, F 入栈后, 栈中元素为 ABCDEF, 退出三个元素入队, 队列元素为 FED, 将 X, Y, Z 入栈后栈中元素为 ABCXYZ, 全部入队后, 队列元素为 FEDZYXCBA。
4.
某二叉树的前序序列为 ABCDEFG, 中序序列为 DCBAEFG, 则该二叉树的后序序列为( )。
SSS_SINGLE_SELA
EFGDCBA
B
DCBEFGA
C
BCDGFEA
D
DCBGFEA
分值: 1
答案:D
二叉树遍历可以分为 3 种: ①前序遍历, 访问根节点在访问左子树和访问右子树之前; ②中序遍历,访问根节点在访问左子树和访问右子树两者之间;
③后序遍历, 访问根节点在访问左子树和访问右子树之后。 二叉树的前序序列为 ABCDEFG, A 为根节点。 中序序列为 DCBAEFG, 可知 DCB 为左子树节点, EFG 为右子树节点。 同理 B 为 C 父节点, C 为 D 父节点, 且 CD 均为 B 的同侧子树节点。 同理 E 为 F 根节点, F 为 G 根节点,且 FG 为 E
同侧子树节点。 二叉树的后序序列为 DCBGFEA。
5.
软件生命周期是指( )。
SSS_SINGLE_SEL
A
软件产品从提出、 实现、 使用、 维护到停止使用、 退役的过程
B
软件的需求分析、 设计与实现
C
软件的开发与管理
D
软件的实现和维护
分值: 1
答案:A
通常把软件产品从提出、 实现、 使用、 维护到停止使用、 退役的过程称为软件生命周期。
6.
通常软件测试实施的步骤是( )。
SSS_SINGLE_SEL
A
集成测试、 单元测试、 确认测试
B
单元测试、 集成测试、 确认测试
C
确认测试、 集成测试、 单元测试
D
单元测试、 确认测试、 集成测试
分值: 1
答案:B
软件测试的实施过程主要有 4 个步骤: 单元测试、 集成测试、 确认测试(验收测试) 和系统测试。
7.
下面不属于对象主要特征的是( )。
SSS_SINGLE_SEL
A
唯一性
B
多态性
C
可复用性
D
封装性
分值: 1
答案:C
对象的基本特点主要有: ①标识唯一性, 一个对象通常可由对象名、 属性和操作三部分组成; ②分类性, 指可以将具有相同属性和操作的对象抽象成类; ③多态性, 指同一个操作可以是不同对象的行为, 不同对象执行同一操作产生不同的结果; ④封装性, 从外面看只能看到对象的外部特性, 对象的内部对外是不可见的;⑤模块独立性好, 由于完成对象功能所需的元素都被封装在对象内部, 所以模块独立性好。
8.
在数据库设计中, 描述数据间内在语义联系得到 E—R 图的过程属于( )。
SSS_SINGLE_SEL
A
逻辑设计阶段
B
需求分析阶段
C
概念设计阶段
D
物理设计阶段
分值: 1
答案:C
数据库设计主要有需求分析、 概念设计、 逻辑设计和物理设计四个阶段。 概念设计最常用的方法是E—R 方法, 它采用 E—R 模型, 将现实世界的信息结构统一由实体、 属性以及实体之间的联系来描述。
9.
在数据库系统中, 用于对客观世界中复杂事物的结构及它们之间的联系进行描述的是( )。
SSS_SINGLE_SEL
A
概念数据模型
B
逻辑数据模型
C
物理数据模型
D
关系数据模型
分值: 1
答案:C
数据模型按照不同的应用层次分为: ①概念数据模型, 着重于对客观世界复杂事物的描述及对它们内在联系的刻画; ②逻辑数据模型, 是面向数据库系统的模型, 着重于在数据库系统一级的实现; ③物理数据模型, 是面向计算机物理实现的模型, 此模型给出了数据模型在计算机上物理结构的表示。
10.
有三个关系 R、 S 和 T 如下:
则由关系 R 和 S 得到关系 T 的操作是( )。
SSS_SINGLE_SEL
A
并
B
投影
C
交
D
选择
分值: 1
答案:A
用于查询的 3 个操作无法用传统的集合运算表示, 引入的运算为投影运算、
选择运算、 笛卡尔积。常用的扩充运算有交、 除、 连接及自然连接等。 A
项, 并: R∪ S 是将 S 中的记录追加到 R 后面, 与题目中结果相符。
11.
结构化程序由顺序、 选择、 循环三种基本结构组成, 以下相关叙述错误的是( )。
SSS_SINGLE_SEL
A
三种基本结构不可以嵌套使用
B
顺序结构是按语句在程序中的先后顺序逐条执行, 没有分支, 没有转移
C
选择结构是根据不同的条件执行不同分支中的语句
D
循环结构是根据条件决定是否重复、 重复执行多少次循环体语句
分值: 1
答案:A
三种结构可以嵌套使用, A 项错误。 结构化程序主要由 3 种基本控制结构组成, 顺序结构是最基本的算法结构, 当执行由这些语句构成的程序时, 将按这些语句在程序中的先后顺序逐条执行, 没有分支, 没有转移, 没有步骤之间的相互约束, 没有对某一步骤的多次使用, 完全按照步骤的原有次序依次执行, B 项正确; 选择结构根据不同的条件去执行不同分支中的语句, C 项正确; 循环结构就是根据各自的条件, 使同一组语句重复执行多次, D 项正确。
12.
在 C 语言中, 以下选项中不能正确表示 10×1000 之值的是( )。
SSS_SINGLE_SELA
1. 0E4. 0
B
1. E4
C
10E3
D
1. 0e4
分值: 1
答案:A
实型常量用带小数点的数字表示, 其值有两种表达形式, 分别为十进制小数形式和指数形式。 指数形式由十进制数加阶码标志“e” 或“E” 以及阶码(只能为整数, 可以带符号) 组成。 指数形式中阶码必须是整型常量, 而
A 项中 4. 0 是浮点数, 所以 A 项不能正确表示 10×1000 之值, BCD 三项都表示正确并且值为 10000。
13.
以下选项中, 合法的 C 语言常量是( )。
SSS_SINGLE_SEL
A
21. 84
B
‘CPP’
C
” \ 1. 0
D
2MB
分值: 1
答案:A
21. 84 是典型的浮点型数据, 故 A 选项正确; 字符常量是单引号括起来的一个字符, 字符串常量是双引号括起来的字符序列, BC 两项错误; C 语言常量不能直接用未加引号的字母、 数字组合, 故 D 项错误。
14.
有以下程序:
程序运行后的输出结果是( )。
SSS_SINGLE_SELA
10, 9
B
11, 10
C
010, 9
D
9, 10
分值: 1
答案:D
整型常量有 3 种表示方法, 分别是十进制数表示法、 八进制数表示法和十六进制数表示法, 八进制整常量以 O 作为前缀。 自增和自减运算符的两种用法: 前置运算, 运算符放在变量之前, 规则是先使变量的值增(或减) 1,
然后以变化后表达式的值参与其他运算; 后置运算, 运算符放在变量之后,
规则是变量先参与其他运算, 然后再使变量的值增(或减) 1。 x=010=8,
y=10, ++x 先自加后取值, 输出 9, y--先取值输出 10, 再自减 y=9。
15.
若有定义: int a; float b; double c; , 程序运行时输入: a=1,
b=2, c=3<回车>, 能把值 1 输入给变量a、 值 2 输入给变量 b、 值 3 输入给变量 C 的输入语句是( )。
SSS_SINGLE_SEL
A
scanf("a=%d,b=%f,c=%lf",&a,&b,&c);
B
scanf("%d%f%lf",&a,&b,&c);
C
scanf("a=% d,b=% lf,c=%lf",&a,&b,&c);
D
scanf("a=%d,b=% f,c=%f",&a,&b,&c);
分值: 1
答案:A
格式字符 d, 输入十进制整数; 格式字符 f, 输入浮点数; 格式字符 if,
输入双精度浮点数。 除了格式说明字符和附加格式字符外, 如果还有其他字符, 则在输入数据时要求按一一对应的位置原样输入这些字符。程序运行时输入: a=1, b=2, c=3, 则 scanf函数格式控制串对应的应该是“a=%d,
b: %f, c: %if” 。
16.
有如下程序:
程序运行后的输出结果是( )。
SSS_SINGLE_SELA
Ta=1, b=2
B
Fa=0, b=2
C
Fa=1, b=1
D
Ta=0, b=1
分值: 1
答案:C
题目中判断 if条件是否成立, a++先取值为 0, 则(a++&&b++) 为 0,
且不计算 b++, 而后 a 自增得 a=1, if条件不成立执行 else 函数体, 输出 F。 最后执行语句printf("a=%d, b=%d\ n", a, b); 按照格式输出 a=1, b=1。
17.
以下不是合法 C 语言转义字符的是( )。
SSS_SINGLE_SEL
A
' \ c'
B
' \ a'
C
' \ b'
D
' \ r'
分值: 1
答案:A
C 语言中, ‘a’ 表示响铃, ‘b’ 表示退格, ‘r’ 表示回车不换行。
18.
有以下程序:
程序运行后的输出结果是( )。
SSS_SINGLE_SEL
A
123
B
ABC
C
abc
D
012
分值: 1
答案:A
当满足 ch<' E' , 输出 ch-' A' , 即字符在 ASCII 码相减进行输出, %d
表示输出十进制整数。 循环开始 ch=' B' , print(“%d” , ch-' A' )
=1。
19.
以下能够实现计算 5! 的程序段是( )。
SSS_SINGLE_SEL
A
int fac=l,k=1;
d{k++;fac*=k;} while(k <5);
B
int fac=0,k=1;
do(fac*=k;k++;)while(k<5);
C
int fac=1,k=1;
do(k++;fac*=k;} while(k <=5);
D
int fac=1,k=0;
do(fac*=k;k++;} while(k < 5);
分值: 1
答案:A
do…while 循环语句一般形式为: do{循环体} while(表达式), 执行过程为: 首先执行循环体, 之后判断表达式, 成立(非 0) 则再一次执行循环体, 不成立(0) 则退出循环。 A 项, k=1, fac=1*1, 判断 k<5,条件成立进行下一次循环, 直到 k=5, fac=1*2*3*4*5, k<5 不成立退出循环, 实现计算 5!, 正确。 B 项, fae 从0 开始, 做乘法一直都是 0, 无法实现 5!, 错误。 C 项, k=2, fac=1*2, 循环条件成立, 直到 k=6,fac=1*2*3*4*5*6才因循环条件不成立退出循环, 实现 6!, 错误。 D 项:
k=0, fae=1*0=0, 之后做乘法一直为 0, 无法实现 5!, 错误。
20.
有以下程序:
程序运行后的输出结果是( )。
SSS_SINGLE_SELA
True
B
TrueFalse
C
False
D
TrueFalseTrue
分值: 1
答案:B
if(x=0x12) 此处是赋值语句“=” , 注意赋值操作符“=” 与相等操作符“= =” 的区别。
21.
有以下程序段: char c1, c2, c3; scanf("%c%c%c", &c1, &c2,
&c3); 若要给 c1、 c2、 c3 分别输入字母 A、 B、 C, 则以下对输入形式的描述正确的是( )。
SSS_SINGLE_SEL
A
字母 A、 B、 C 之问可以用空格分隔
B
字母 A、 B、 C 之间不能有分隔符
C
字母 A、 B、 C 之间可以用回车符分隔
D
字母 A、 B、 C 之间可以用 Tab 键分隔
分值: 1
答案:B
在使用 scanf 函数时要注意, 在用“%c” 格式输入字符时, 分隔符(空格符、 制表符(Tab 键)、回车符) 和转义字符都将作为有效字符进行输入。
题目中要求以字符形式输入三个数据, 空格、 回车符、 Tab 键均会被视为有效字符赋给对应变量, 所以字母 A、 B、 C 之间不能有分隔符。
22.
有以下程序:
程序运行后的输出结果是( )。
SSS_SINGLE_SEL
A
0
B
变量无定义, 输出不确定
C
-1
D
1
分值: 1
答案:A
A 项, 定义了一个临时指针, 实现两个指针地址的交换, 而传入了参数是二个指针的副本, 即 a、b 地址的副本, 故交换了副本地址, 对 a、 b 无影响。 B 项调用函数传入的是 i 与 j 地址, 函数体内交换是地址内元素, 临时变量为整型变量, 能实现 i 与 j 值交换; C 项调用函数传入的是 i 与 j
地址, 函数体内交换是地址内元素, 临时变量为整型指针, 且已正确开辟内存, 能实现 i 与 j 值交换; D 项与 B 项相同, 能实现 i 与 j 值交换。
23.
以下关于函数的叙述中正确的是( )。
SSS_SINGLE_SEL
A
函数调用必须传递实参
B
函数必须要有形参
C
函数必须要有返回值
D
函数形参的类型与返回值的类型无关
分值: 1
答案:D
函数参数有两种: 形式参数和实际参数, 前者函数定义时函数名后括号内是形参列表, 每个形参由类型和名称两部分组成; 后者函数调用时函数名后括号内是实参列表, 实参可以是常量、 变量或表达式。 函数如果没有形参也就
不必传递实参, A 项错误; 函数可以没有形参, B 项错误; 函数可以没有返回值, C 项错误; 函数形参的类型与返回值的类型无关, D 项正确。
24.
有以下程序:
程序运行后的输出结果是( )。
SSS_SINGLE_SEL
A
1, 12, 13, 4, 15,
B
10, 9, 8, 7, 6,
C
1, 7, 13, 9, 15,
D
10, 12, 8, 4, 6,
分值: 1
答案:A
fun() 函数功能是: 对数组中, 下标对 3 求余为 0 的元素减去 5, 下标对 3 求余不为 0 的元素累加5, 所以执行完 fun() 函数后, 数组 c 中元素值为 1, 12, 13, 4, 15。
25.
以下程序中给数组所有元素输入数据, 请从选项中选择正确的答案填入下划线处。( )
SSS_SINGLE_SEL
A
a+(i++)
B
&a[i+1]
C
a+i
D
&a(i++)
分值: 1
答案:A
A 项正确, a 为数组首地址, i++先取 i 值再加 1, scanf读入的数据依次存放在数组中; B 项错误,进入死循环, i-直为 0, 一直对 a[i+1]读入数据; C 项错误, 控制变量 i 没有依次加 1, 无法结束循环, 也无法对整个数组赋值, 输入的数全是 a[0]; D 项错误, 数组元素引用错误, 数组元素引用为[], 不是()。
26.
有以下程序:
程序的运行结果是( )。
SSS_SINGLE_SEL
A
5, 5, 5, 5, 5
B
3, 5, 5, 5, 5
C
5, 3, 3, 3, 5
D
3, 5, 3, 5, 5
分值: 1
答案:A
程序执行过程为: p 指向 i, q 指向 j, 调用函数 f, 将 i 与 j 地址传递给 s 与 t, 判断 i 是否小于 j,成立则将 j=5 赋值给 i, 则 i=5, 返回指向 i 的指针并赋给 r, 则 r 指向 i, 最后输出 5, 5, 5, 5, 5。
27.
有如下程序:
程序运行后的输出结果是( )。
SSS_SINGLE_SELA
8
B
9
C
7
D
10
分值: 1
答案:A
strlen 是求字符串长度的函数, “0tnA0111” 是一个长度为 8 的字符串, 其中t、 n、 1 均为转义字符常量, 但是长度也是 1, 因此输出结果是 8。
28.
若有定义: char*ps[] ={“aa” , “bb” , “cc” , “dd” } ; ,
则以下叙述正确的是( )。
SSS_SINGLE_SEL
A
*ps[0]是字符‘a’
B
*ps[0]是字符串“aa”
C
ps[0]是字符‘a’
D
ps 是字符串” aa”
分值: 1
答案:A
指针数组 ps[ ]定义后, ps[0]代表数组首个元素的地址, 即“aa” 的地址, 同时也是“aa” 第一个字符 a 的地址, 所以* ps[0]代表字符 a。
29.
以下涉及字符串数组、 字符指针的程序段, 不会产生编译错误的是( )。
SSS_SINGLE_SEL
A
char*str, name[10]; str="Hello World";
B
char*str, name[10]; name="Hello World";
C
char str1[10]="prog. c", str2[10]; str2=str1;
D
char head_line[] ; head_line="== == == == == == =";
分值: 1
答案:A
将字符指针变量初始化为一个字符串有两种方式, 一种通过赋值运算使一个字符指针指向一个字符串常量: char*str; str="Hello World", A 项正确。
另一种是定义一个字符指针变量, 并且初始化为一个字符串的首地址:
char*str="Hello World"。 字符指针变量与字符数组都可以用来实现字符串的存储和运算, 但二者是有区别的: ①数组名是一个地址常量, 而字符指针变量是一个变量, 所以不能给一个数组名赋值, 如 name="Hello world"错误,
B 项错误; ②字符型的指针变量的值是可以改变的; ③字符指针变量和字符数组在内存中的存储情形不同, 数组指的是按照数组长度分配的若干存储空间, 而指针只是一个存储字符串首地址的存储空间, 所以相同类型指针可以相互赋值, 而数组不能直接用“=” 赋值, C 项错误。 数组不可以直接赋值字符串. Head_line="==== == == == ="不合法, 只有在数组初始化时可以直接赋值, 如 char head_line[] ="==== == == == == =” 合法,并且定义数组时必须指定数组长度, char head_line[]不合法, D 项错误。
30.
有如下程序:
程序运行时, 输入 ABCD<回车>, 则输出结果是( )。
SSS_SINGLE_SEL
A
DCDC
B
DCBA
C
BABA
D
ABCD
分值: 1
答案:B
本题考查了函数的递归调用, 进入 get_put 函数后, 字符变量 ch 每次保存读进来的字符, 如果不是换行符, 则继续读取下一个字符常量, 当 ch 保存完‘D’ 后, 下一次读取不满足 if 条件, 函数进行输出, 依次输出‘D’ , ‘C’ , ‘B’ , ‘A’ 。
31.
若有以下程序段:
则以下错误引用字符串的选项是(其中 0≤k<4)( )。
SSS_SINGLE_SEL
A
*strp
B
str[k]
C
strp[k]
D
strp
分值: 1
答案:A
字符串常量是用一对双引号括起来的零个或多个字符的序列。 在存储字符串常量时, 由系统在字符串的末尾自动加一个“\ 0” 作为字符串的结束标志。
strcpy 函数将“China” 复制给字符数组 s, 其在数组位置内存存储情况为“China\ 0g\ O” 。 strlen 函数统计字符串长度时, 遇到“\ 0” 结束, s 数组长度为 5。
32.
有以下程序:
则以下叙述正确的是( )。
SSS_SINGLE_SEL
A
在 main 函数中声明了 findmax 函数
B
在 main 函数中定义了 findmax 函数
C
在 main 函数中两次调用了 findmax 函数
D
在 main 函数内、 外重复定义了 findmax 函数
分值: 1
答案:A
题目中函数 findmax 定义放在了函数之后, 所以主函数中声明了 findma 函数。 Int findmax(int, int,int); 为函数声明, m=findmax(a, b,
c); 为函数调用, int findmax(int x, int y, int z) {} 为函数定义, 因此A 项正确。
33.
有如下程序:
程序运行后的输出结果是( )。
SSS_SINGLE_SEL
A
15
B
10
C
8
D
1
分值: 1
答案:A
程序执行过程为: 定义字符数组 array, 调用函数 sum 将数组首地址与 4
传入函数 len=4; len>0 递归调用 sum(array+1, 3) 传入地址为数组第二个元素地址; len>0 递归调用 sum(array+1, 2) 传入地址为数组第三个元素地址; len>0 递归调用 sum(array+1, 1)传入地址为数组第四个元素地址; len>0 递归调用 sum(array+1,0) 传入地址为数组第五个元素地址,
此时 len=0, 返回 5; 执行 sum(array+1, 1) 余下语句, 返回 9; 执行 sum(array+1, 2) 余下语句, 返回 12; 执行sum(array+1, 3) 余下语句, 返回 14; 执行 sum(array+1, 4) 余下语句, 返回 15, 并输出。
34.
若有定义: type defint$T: T a[20] ;
则以下与上述定义中 a 类型完全相同的是( )。
SSS_SINGLE_SEL
A
int*a[20];
B
int(*a) [20] ;
C
int a[20];
D
int**a[20];
分值: 1
答案:A
“typedef类型名新类型名” 表示为一个已定义的类型标识符重新定义一个新类型名, 题中 A 项代表的意思是数组指针, 即指向数组的指针, B 项是指针数组, 即数组存放的元素是整型指针, 首先为整型指针类型命名为 T, 再通过 T 定义了一个整型指针数组*a[20], 等价于 int*a[20] 。
35.
有以下程序:
程序的运行结果是( )。
SSS_SINGLE_SEL
A
aa
B
ma
C
am
D
mm
分值: 1
答案:A
malloc 函数的原型为: malloc(size); , 函数的作用是在内存的动态存储区分配一个长度为 size 的连续空间。 程序执行过程为: 定义两个字符类型指针 p1 和 p2, 动态开辟 10 个字符类型的内存单元, 并且使指针 p1 与
p2 均指向这 10 个内存单元的第一个单元。 调用 strcpy 函数, 将字符串“malloc” 赋值给这 10 个内存单元的前 7 个单元, 存储情况为: malloc\ 0, 此时 p1 指向 10 个内存单元的第一个单元。 再次调用 strcpy 函数,这 10 个内存单元的第 2 个单元到第 7 个单元元素重新赋值给 p2 指向的内存单元以及以后的 5 个单元, 存储情况为: alloc\ 0\ 0, 此时 p1
和 p2 均指向 10 个内存单元的第一个单元。 输出两个指针指向单元的数据值, 结果为:aa。
36.
有如下定义:
以下对内嵌结构体成员的引用形式错误的是( )。
SSS_SINGLE_SEL
A
ps->birth. y
B
s. birth. y
C
ps. birth. y
D
(+ps). birth-y
分值: 1
答案:C
使用结构体指针对结构体成员进行访问时, 形式为结构指针名->结构成员名,
或者(*结构指针名). 结构成员名, 题目中 ps 为结构体指针, 因此判断
A 项引用形式错误, 答案为 C。
37.
有以下程序:
程序运行后的输出结果是( )。
SSS_SINGLE_SELA
8
B
9
C
5
D
6
分值: 1
答案:A
带参数的宏的调用格式: 宏名(实参表), 替换过程是, 用宏调用提供的实参字符串, 直接置换宏定义命令行中相应形参字符串, 非形参字符保持不变。 MUN 被置换成(2+1+1) ×2+1/ 2; 程序的运行结果是 6。
38.
有如下程序:
程序运行后的输出结果是( )。
SSS_SINGLE_SEL
A
min=1, max=9
B
min=0, max=9
C
min=1, max=4
D
min=0, max=4
分值: 1
答案:B
在对数组进行初始化时, 如果在说明数组时给出了长度, 但没有给所有的元素赋予初始值, 而只依次给前面的几个数组元素赋予初值, 那么 c 语言将自动对余下的元素赋初值 0, 则 array[5]={9, 1, 3, 4, 0} 。程序的执行过程为: 调用函数 get_min_max(array, 5), 将数组 array 首地址传入函数, 定义结构体变量 res, 并为其成员赋值。 for 循环查找数组 array
数组的最小值 0, 将其赋值给 res 的成员 first, 查找数组最大值 9, 赋值给res 的成员 second。 最后返回结构体变量 res, 则min_max=res。 输出 min_max. first=0, min_max. second=9, 故B 选项正确。
39.
有以下程序:
程序的运行结果是( )。
SSS_SINGLE_SEL
A
5, 1
B
1, 1
C
18, 1
D
13, 1
分值: 1
答案:A
“&” 按位与运算, 13=11018, 5=1018, 执行语句 c=13&5; 结果为
101B=5, 即 c=5。 “&&” 逻辑与运算, 10 与 5 均为真, 结果为真, 即
d=1。
40.
有以下程序段:
若文件 test. txt 已存在, 则以下叙述正确的是( )。
SSS_SINGLE_SEL
A
程序运行后, 文件 test. txt 中的原有内容将全部消失
B
程序运行时, 会因文件存在而出错
C
对文件 test. txt 进行写操作后, 可以随机进行读取
D
对文件 test. txt 写入的内容总是被添加到文件尾部
分值: 1
答案:A
fopen 函数以一定方式打开指定文件, 返回一个指向文件的文件指针, 如果不能实现打开指定文件的操作, 则返回一个空指针 NULL。 如果指定文件不存在, 则创建一个文件名为指定文件名的新文件, 然后打开它。 在指定文件有错误或者指定文件不存在却不能创建新文件的情况下, 打开文件操作错误,
返回空指针。 本题程序中, 文件 test. txt 已存在, 程序运行后, 文件
test. txt 中的原有内容将全部消失, A 项正确。
程序填空题
41.
给定程序中, 函数 fun 的功能是: 调用随机函数产生 20 个互不相同的整数放在形参 a 所指数组中(此数组在主函数中已置 0)。
请在程序的下画线处填入正确的内容并把下画线删除, 使程序得出正确的结果。
注意: 部分源程序在文件 BLANK1. C 中。 不得增行或删行, 也不得更改程序的结构!
试题程序:
SSS_TEXT_QUSTI 分值: 18
答案:
【1】 N 或 20
【2】 break
【3】 n
第一空:变量 n 用于存储数组的下标, 要通过 while 语句对数组进行赋值,
数组的容量为 20, 因此循环条件应为 n<20 或 n 第二空:通过一个 for 循环判断 x 是否与数组中已存的元素重复, 若重复则跳出 for 循环结束。 第三空:若 for 循环是由 break 语句结束的, 则 x 与数组中的元素重复, 此时 i 必然小于 n; 若 for 循环是因为循环变量 i 递增到某值, 而不再满足循环条件结束的, 说明 x 的值与数组中的元素不重复, 则此时 i 的值等于n。 程序修改题 42. 下列给定程序中, 函数 fun 的功能是: 实现两个整数的交换。 例如, 给 a 和 b 分别输入 60 和 65, 输出为:a=65 b=60。 请改正程序中的错误, 使它能得出正确的结果。 注意: 不要改动 main 函数, 不得增行或删行, 也不得更改程序的结构。 试题程序: SSS_TEXT_QUSTI 分值: 18 答案: (1) void//fun(int*a, int*b) (2) t=*b; *b=*a; *a=t; 第一问:采用一般变量作参数, 不能改变实参的值; 采用指针变量作为参数, 则能够改变实参的值。 主函数中 fun 的调用方式说明 fun 函数的参数应当为指针类型。 第二问:a 和 b 都是指针变量, 进行变量交换时不能直接引用, 应加上“*” 号。 程序设计题 43. 编写函数 fun, 它的功能是: 求小于形参 n 同时能被 3 与 7 整除的所有自然数之和的平方根, 并作为函数值返回。 例如, 若 n 为 1000 时, 程序输出应为: s=153. 909064。注意: 部分源程序在文件 PROG1. C 中。 请勿改动主函数 main 和其他函数中的任何内容, 仅在函数 fun 的花括号中 填入你编写的若干语句。 试题程序: SSS_TEXT_QUSTI 分值: 24 答案: 1
版权声明:本文标题:全国计算机等级考试2019年二级C语言程序设计模拟试题3_真含答案与解析 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1702714572h427819.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论