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

基本情况

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

考试时间:3小时

题型:函数题+编程题

考试年级:2021级

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

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

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


具体题目

1-1

(题目编号:40)

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

1-2

(题目编号:166)

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

其中,I是颜色的亮度,可以用如下公式计算: I = R * 30% + G * 59% + B * 11%

现要求编码实现:从键盘输入一种颜色三元组,输出该颜色对应的灰度颜色。请按如下范例安排输入和输出: (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

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谨慎谦虚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值