本文主要是介绍2023秋电子科大信软 程算I 机考真题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基本情况
对应课程:程序设计与算法基础I
考试时间:2小时
题型:函数题+编程题
函数题只需要完成期中一些(个)函数即可
编程题需要自己手动写main函数
提示:本次考试为全年级机考,分上下午场,暂不清楚上下午场是哪些题目
考试这次不能看到实际评分(即程序通过了多少测试样例),只能提交,可以debug
上午场
求倍数的和
(题目编号:204)
题目描述
输入 N 个整数,计算并输出这 N 个数中 3的倍数 之和。
输入格式
第一行是一个正整数 N,表示第二行有 N 个数。
第二行是 N 个用空格隔开的整数。
输出格式
一个整数结果。
数据范围
0 < N < 100
0 ≤ 输入的整数 ≤ 40000
输入样例1
3
114514 1919 81
输出样例1
81
输入样例2
2
100 100
输出样例2
0
输入样例3
10
1 2 3 4 5 6 7 8 9 10
输出样例3
18
线性表是否是非递减序列
(题目编号:205)
题目描述
【定义】线性表是一种存储数据的结构,其C语言描述如下:
// 线性表的最大容量
#define CAPACITY 128typedef struct {int len; // 线性表实际存储的元素个数int data[CAPACITY]; // 数组形式的存储空间。数据存储在该数组前len个单元中,后面的单元空置
} list;
给定一个有 N 个元素的线性表,判断这个线性表是否是非递减序列。
【定义】非递减序列满足这样的条件:序列中任意相邻两项,后项不小于前项。
例如:[1 2 2 3 4 5]是非递减序列;[1 2 2 3 1 5]则不是。
输入格式
第一行是一个正整数 N,表示线性表元素的个数。
第二行是 N 个用空格隔开的整数。
输出格式
如果是非递减序列,输出字符串 yes。
如果不是,输出第一个违例的前后两项元素值,用空格隔开。
数据范围
1 ≤ N ≤ CAPACITY
线性表元素是任意整数值
输入样例1
1
-3
输出样例1
yes
输入样例2
10
1 2 2 3 3 3 4 5 6 6
输出样例2
yes
输入样例3
10
1 2 2 3 -1 3 4 5 6 6
输出样例3
3 -1
指定字符的出现次数
(题目编号:206)
题目描述
输入一个字符c,随后输入一个字符串S,找出c在S中的出现次数。
输入格式
第一行输入一个字符c,第二行输入一个只由小写英文字母a~z组成的字符串S。
输出格式
一个整数答案。
数据范围
'a' ≤ c ≤ 'z'
0 < len(S) ≤ 1000
输入样例1
s
uesutcsise
输出样例1
3
输入样例2
a
uestcop
输出样例2
0
输入样例3
w
whatifwhatifwelefttoday
输出样例3
3
十进制转二进制
(题目编号:207)
题目描述
十进制转二进制在计算机科学中经常用到。这里提供了一种常见的转换算法即除法取余法,请完成该算法。
【算法】
-
从右往左,将十进制数逐步除以2,记录每一步的余数。
-
将得到的余数从下往上排列,即得到二进制数的每一位。
-
将商作为新的被除数,重复上述步骤,直到商为0。
【案例】以十进制数 26 为例
-
26 ÷ 2 = 13余0,记录这个余数。这是最低位(最右边)。
-
13 ÷ 2 = 6余1,记录这个余数。
-
6 ÷ 2 = 3余0,记录这个余数。
-
3 ÷ 2 = 1余1,记录这个余数。
-
1 ÷ 2 = 0余1,记录这个余数。现出商为 0,计算过程结束。此时的余数是最高位(最左边)的。
-
因此,26 的二进制表示为余数记录的倒序:11010。
输入格式
一个十进制正整数 N。
输出格式
N转二进制后的结果。
数据范围
0 ≤ N ≤ 1000
输入样例1
2
输出样例1
10
输入样例2
66
输出样例2
1000010
输入样例3
999
输出样例3
1111100111
下午第一场
水质达标统计
(题目编号:208)
找出最小值
连续 N 天对沙河的水质进行检测,每天的水质value是一个正整数。有水质阈值T,当且仅当当日 value≥T 时认为水质合格,请输出水质合格的天数。
输入格式
第一行是一个正整数 N,表示第二行有 N 个数。
第二行是一个正整数 T,表示指定的水质阈值。
第三行是 N 个用空格隔开的整数。
输出格式
一个整数结果。
数据范围
0 < N < 100
100 ≤ T ≤ 200
0 ≤ 输入的整数 ≤ 40000
输入样例1
5
100
90 80 100 200 400
输出样例1
3
输入样例2
1
100
80
输出样例2
0
求交集
(题目编号:209)
【定义】两个集合A和B的交集(intersection)C定义为:包含既在A中又在B中的元素。
给定两个无重复元素的无序的正整数集合A和B,求这两个集合的交集并输出。交集仍是无序的。
【算法】
k = 0
对 A 中每一个元素 a: {对 B 中每一个元素 b: {如果 a 等于 b: C[k++] = a}
}
C[k] = -1
输入格式
第一行是用空格隔开的集合A的元素。最后一个值-1表示输入结束。注:-1不是集合的元素。
第二行是用空格隔开的集合B的元素。最后一个值-1表示输入结束。注:-1不是集合的元素。
测试用例保证交集至少有一个元素
输出格式
输出在一行的、用空格隔开的A和B交集的元素。
数据范围
0 < 输入值的个数 ≤ 20
输入样例1
1 3 5 -1
2 3 5 6 -1
输出样例1
3 5
输入样例2
6 7 8 9 2 -1
2 -1
输出样例2
2
输入样例3
1 2 3 -1
3 2 1 -1
输出样例3
1 2 3
大小写转换
(题目编号:210)
一个字符串中可能嵌入了一个整数(如果有,则只有这一个)。编写程序读取这个整数并输出。
输入格式
一行字符串S
输出格式
字符串中嵌入的整数。如果没有嵌入的整数,那么输出0。
数据范围
0 < len(S) ≤ 1000
输入样例1
abc1234def
输出样例1
1234
输入样例2
1234.
输出样例2
1234
输入样例3
abcde
输出样例3
0
判断是否是亲密数对
(题目编号:211)
【定义】亲密数对指的是一对正整数 m 和 n,m 的真因子之和等于 n,n 的真因子之和等于 m。其中,正整数 x 真因子 y 指得是 y < x 且 x 能被 y 整除。
输入正整数 m 和 n,判断它们是否是亲密数对。
【算法】
- 先求 m 的真因子之和 x
- 再求 n 的真因子之和 y
- 如果 x == y,则 m 和 n 是亲密数对;否则不是
输入格式
两个正整数 m 和 n,用空格隔开。
输出格式
m 和 n 是亲密对,输出 n m,用空格隔开
否则输出字符串 "not"。
数据范围
0 < n ≤ 10000
0 < m ≤ 10000
输入样例1
220 284
输出样例1
284 220
输入样例2
2620 2924
输出样例2
2924 2620
输入样例3
580 290
输出样例3
not
下午第二场
空气质量检测
(题目编号:212)
成都最近的雾霾很严重,连续 N 天对成都的空气质量进行检测,每天的空气质量value是一个正整数。有空气质量阈值T,当且仅当当日 value≤T 时认为空气质量合格,请输出空气质量合格的天数。
输入格式
第一行是一个正整数 N,表示第三行有 N 个数。
第二行是一个正整数 T,表示指定的空气质量阈值 T 。
第三行是 N 个用空格隔开的整数。
输出格式
一个整数结果。
数据范围
0 < N < 100
20 < T < 100
0 ≤ 输入的整数 ≤ 40000
输入样例1
3
80
114514 1919 810
输出样例1
0
输入样例2
2
50
10 50
输出样例2
2
输入样例3
10
90
70 80 90 100 110 120 130 140 150 160
输出样例3
3
线性表查找并删除元素
(题目编号:213)
线性表查找并删除元素
【定义】线性表是一种存储数据的结构,其C语言描述如下:
// 线性表的最大容量
#define CAPACITY 128typedef struct {int len; // 线性表实际存储的元素个数int data[CAPACITY]; // 数组形式的存储空间。数据存储在该数组前len个单元中,后面的单元空置
} list;
输入一个有 N 个元素的线性表,输入一个值 value,将线性表内部数组中值为 value 的元素删除,原有元素依次前移。
注:原始线性表满足每个元素最多出现一次。
输入格式
输入分三行:
第一行是一个正整数 N,表示元素的个数。
第二行是 N 个用空格隔开的元素值。
第三行是一个正整数 value ,表示要删除的元素的值。
测试用例保证要删除的元素是存在的。
输出格式
一行,用空格隔开输出删除操作后的线性表
数据范围
0 < N ≤ CAPACITY
0 ≤ value ≤ 1000
线性表元素是任意整数值
输入样例1
9
99 22 77 44 55 66 33 88 11
22
输出样例1
99 77 44 55 66 33 88 11
输入样例2
9
99 22 77 44 55 66 33 88 11
11
输出样例2
99 22 77 44 55 66 33 88
输入样例3
9
99 22 77 44 55 66 33 88 11
99
输出样例3
22 77 44 55 66 33 88 11
见不得O
(题目编号:214)
输入一个字符串S,将S中出现的O(大写字母O)替换为P(大写字母P)后重新输出字符串。
输入格式
一行字符串。
输出格式
一行替换元素后的字符串
数据范围
0 < len(S) ≤ 1000
输入样例1
abcdef
输出样例1
abcdef
输入样例2
OOOoooPPP
输出样例2
PPPoooPPP
输入样例3
OoO
输出样例3
PoP
区间内的质数之和
(题目编号:215)
给定两个正整数a,b请求出区间[a,b]内的质数之和并输出。
注:质数,指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
注:一种常见的判断一个数是否为质数的算法:根号范围遍历。利用合数定理——如果一个数是合数,那么它的最小质因数肯定小于等于他的平方根
例如:
输入 10 23
则区间[10,23]内的质数为 11 13 17 19 23
输出质数之和为 83
输入格式
两个正整数 a , b。
输出格式
一个正整数,即区间[a,b]内的质数之和。
数据范围
1 ≤ n ≤ 10000 ,n ≤ m ≤ 10000
输入样例1
5 5
输出样例1
5
输入样例2
1 50
输出样例2
328
这篇关于2023秋电子科大信软 程算I 机考真题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!