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  128

typedef 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)

题目描述

十进制转二进制在计算机科学中经常用到。这里提供了一种常见的转换算法即除法取余法,请完成该算法。

【算法】

  1. 从右往左,将十进制数逐步除以2,记录每一步的余数。

  2. 将得到的余数从下往上排列,即得到二进制数的每一位。

  3. 将商作为新的被除数,重复上述步骤,直到商为0。

【案例】以十进制数 26 为例

  1. 26 ÷ 2 = 13余0,记录这个余数。这是最低位(最右边)。

  2. 13 ÷ 2 = 6余1,记录这个余数。

  3. 6 ÷ 2 = 3余0,记录这个余数。

  4. 3 ÷ 2 = 1余1,记录这个余数。

  5. 1 ÷ 2 = 0余1,记录这个余数。现出商为 0,计算过程结束。此时的余数是最高位(最左边)的。

  6. 因此,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,判断它们是否是亲密数对。

【算法】

  1. 先求 m 的真因子之和 x
  2. 再求 n 的真因子之和 y
  3. 如果 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  128

typedef 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

你可能感兴趣的:(成电信软程算期末机考题,程序设计与算法基础,算法)