计算机二级C语言操作题高频考卷三
一、程序填空题 1 [填空题] 给定程序中,函数 tim 的作用是:不断从终端读入整数,由变量a 统计大于 0 的个数, 用变量 c 来统计小于 0 的个数, 当输入 0 时结束输入, 并通过形参 pa 和 pb 把统计的数据传 回主函数进行输出。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序存放在BLANK1.C 中。不得增行或删行,也不得更改程序的结构! 试题程序: 参考解析: 【参考答案】 (1)a=0,b=0,k (2)(k1.0) (3)scanf( “%d”,c++;。 (3)题目判断 n 是否是连续的正整数序列之和,若是,则输出所有序列,程序中m 依次减去连续的正整数,当 m 为 0 时,表示 m(即 n)满足条件,再输出当前序列中的每 个正整数,所以此处判断条件反了,应修改为:if(m==0)。 一、程序填空题 1 [填空题] 函数 fun 的功能是:将一副扑克牌编号为1,2,3,„,53,54,以某种特定的方式洗 牌,这种方式是将这副牌分成两半,然后将它们交叉,并始终保持编号为1 的牌在最上方, 如第一次这样洗牌后的结果为:1,28,2,29,„,53,27,54。两次洗牌后的结果为:1, 41,28,15,2,42„,53,40,27,14,54。 程序的功能是:输出经过n 次这样洗牌后的结果。 请在程序的下画线处填入正确的内容,并把下画线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C 中。不得增行或删行,也不得更改程序 的结构! 试题程序: 参考解析: 【参考答案】 (1)b (2)2 (3)b[k] 【解题思路】 填空 1:for 循环中使用了一个数组b.用来临时存放交换位置后的扑克牌,C 语言中变 量需要先声明后使甩,所以填空(1)处需要声明一个数组 b。答案为 b。 填空 2:第二个 for 循环是将数组 a 中前一半元素(即 1~27 编号的扑克牌)放人数组 b 的奇数位置,将数组 a 中的后一半元素(即 28~54 编号的扑克牌)放人数组 b 的偶数位置, 实现扑克牌的交叉洗牌。所以填空(2)处是数组 b 的起始值为 2 的偶数下标 2k,答案为 2。 填空 3: 由于数组 b 属于函数中的临时变量, 所以将数组 a 的元素交叉存储到数组b 后, 还需要将数组 b 的元素依次赋值给数组 a, 第三个 for 循环实现的功能是将数组b 赋值给数 组 a,所以填空(3)处需要填入对应下标为k 的数组 b 的元素,答案为 b[k]。 二、程序修改题 2 [简答题] 下列给定程序中,函数 fun 的功能是:依次取出字符串中所有的数字字符, 形成新的字 符串,并取代原字符串。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: 参考解析: 【参考答案】 【解题思路】 题目要求依次取出字符串中所有的数字字符, 因此将元素 S[i]存入 s[j]后要使 j 加 1, 为下次存储做准备。s[j]=“\0”;是一个语法错误。