电子科大信软互+班 程算I 2021机考真题

基本情况

对应课程:程序设计与算法基础I

考试时间:3小时

题型:函数题+编程题

函数题只需要完成期中一些(个)函数即可

编程题需要自己手动写main函数

提示:题目序号为x-x的可能为一组题目,若题目告知可以调用之前写的某函数则可以直接调用(即使这个函数在上个题目中你没有写对)


具体题目

1-1

(题目编号:40)

编写如下程序:输入 a 和 b 两个数,计算并输出它们的和。

1-2

(题目编号:166)

数字颜色三元组(R,G,B)对应的灰度(颜色)是三元组(I,I,I)(R,G,B,I是在0~255之间的整数)。

其中,I是颜色的亮度,可以用如下公式计算:

现要求编码实现:从键盘输入一种颜色三元组,输出该颜色对应的灰度颜色。请按如下范例安排输入和输出: (174,68,200)(按回车) (114,114,114)

2-1

(题目编号:167)

有如下定义:

【定义1】假设有正整数n和f(f小于n),如果n能够被f整除,那么f就是n的一个因子。

【定义2】正整数n的因子范围包括1但不包括n本身。

基于上述定义,假设有两个正整数a和b(a小于b),如果a的所有因子之和等于b,且b的所有因子等于a,那么二元组(a,b)就被称为是“亲密数对”。例如,(220,284)就是一对亲密数对。

根据上述描述,编写程序,要求如下。 编写一个函数,其功能是求正整数n的所有因子之和。

函数原型为:

 unsigned sum_of_factors(unsigned n);

2-2

(题目编号:168)

有如下定义:

【定义1】假设有正整数n和f(f小于n),如果n能够被f整除,那么f就是n的一个因子。

【定义2】正整数n的因子范围包括1但不包括n本身。

基于上述定义,假设有两个正整数a和b(a小于b),如果a的所有因子之和等于b,且b的所有因子等于a,那么二元组(a,b)就被称为是“亲密数对”。例如,(220,284)就是一对亲密数对。

已定义好函数 sum_of_factors,其功能是求正整数 n 的所有因子之和。函数原型为: unsigned sum_of_factors(unsigned n);

根据上述描述,编写程序,要求如下: 完善下面的 main() 函数,其功能是:从键盘输入一个正整数n(<=20000),然后调用函数 sum_of_factors 找出 1~n 之间的所有亲密数对。 输出形式为:(a,b)(c,d)…。所有输出都在一行。提示:3000以内有三对。

【(a,b)中,仅仅认为a<=n,b不做限制】(此为考场临时更正题目所加)

提示:若使用双重嵌套循环(for里面再套一个for,while里面再套一个while之类)会导致超时且本题成绩为0,需另寻他路,本提示原题无,为编者添加

3-1

(题目编号:169)

有两个不包含空格的字符串 s1 和 s2,如果 s2 是 s1 的逆序,那么 s1 和 s2 互为镜像。

例如:"abcde"和"edcba"互为镜像,而"abcde"和"edcb"不是,"abcde"和"edcbA"也不是。

根据上述描述,编写程序,要求如下: 编写一个函数判断两个字符串是否互为镜像。函数原型为: int is_mirror(char *s1, char *s2); 如果s1和s2互为镜像,函数返回1;否则返回0。要求仅使用指针,并且不调用任何字符串处理库函数

3-2

(题目编号:170)

有两个不包含空格的字符串 s1 和 s2,如果 s2 是 s1 的逆序,那么 s1 和 s2 互为镜像。

例如:"abcde"和"edcba"互为镜像,而"abcde"和"edcb"不是,"abcde"和"edcbA"也不是。

已定义好函数 is_mirror,该函数判断两个字符串是否互为镜像。函数原型为: int is_mirror(char *s1, char *s2); 如果 s1 和 s2 互为镜像,函数返回 1;否则返回 0。

请根据上述描述,编写程序,要求如下。 编写main()函数,其功能是:从键盘输入两个字符串(使用scanf),调用 is_mirror 判断输入的串是否为镜像。如果是,输出yes;否则输出 no。 提示:注意不要使用野指针!。

4-1

(题目编号:171)

有链表类型定义如下:

typedef struct node { //链表结点类型定义
    int data;
    struct node *next;
} node;

typedef struct { //采用头结点模式的链表类型定义
    node head;  //头结点
    int length; //链表长度(即结点数量)
} mlist;

请采用排序算法(如冒泡排序)对链表进行升序排序,即完成 void list_sort(mlist *L) 函数的编码, 其中 L 为指向链表变量的指针。

提示: 1. 当链表没有或者只有1个节点,无须排序

2. 对于数据 23 65 98 15 49 22 31 70 68 84, 排序后其结果为:15 22 23 31 49 65 68 70 84 9


声明

本文章仅供学习使用。严禁作其他用途。


更多真题可以看https://blog.csdn.net/jjq15008419406/category_11960847.html

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