电子科大信软互+班 程算I 2022级机考真题
基本情况
对应课程:程序设计与算法基础I
考试时间:3小时
题型:函数题+编程题
函数题只需要完成期中一些(个)函数即可
编程题需要自己手动写main函数
说明:题目从icoding看的,不确定是不是真的是2022级的题,可以供学弟学妹练习
题目
三角形面积
题目编号:188
一. 已知条件
秦九韶公式 给定三个边长a、b、c。如果这三条边能构成一个三角形,那么该三角形的面积可以由秦九韶公式求出:
s = (a + b + c) / 2.0
area = sqrt(s * (s - a) * (s - b) * (s - c))
三角形任意两边之和大于第三边。
求平方根函数sqrt 该函数的原型如下:
double sqrt(double x);
其功能是:求数x的平方根。你可以在程序中直接调用它。
二. 任务
请补全函数area。该函数的原型如下:
double area(double a, double b, double c);
此函数的功能是:判断给定的边长a、b、c是否能构成三角形。
如果能,计算并返回三角形的面积。
如果不能,返回任意负值。
三. 测试用例
测试程序 测试程序已经写好,并保证输入的有效性。你不必自行编写。 测试程序的功能是:
从键盘输入三条边长。各输入项间用空格隔开。
调用你补全的函数area,得到结果。
如果结果是正值,则按%.2lf格式输出面积;否则输出invalid。
测试用例举例
用例1 输入 3 4 5 输出 6.00
用例2 输入 1 2 3 输出 invalid
四. 要求
请在框架文件中完成任务。
请将你的代码写在//TODO和//END OF TODO这对标记之间。
请勿修改框架中的任何已有内容。
#include <math.h>
#include <stdio.h>/** 求三角形面积函数area* 参数说明:* - a、b、c都是三角形的边长。* 返回值说明:* - 如果a、b、c能构成三角形,则返回面积。* - 否则,返回任意负值。*/
double area(double a, double b, double c) {//TODO//END OF TODO
}int main(){float a, b, c;scanf("%f %f %f", &a, &b, &c);double res = area(a, b, c);if(res < 0)printf("invalid");elseprintf("%.2lf", res);
}
找出闭区间内所有完全数
题目编号:189
一. 已知条件
真因子 有正整数f和m,且f < m。如果m能被f整除,那么f是m的真因子。显然,1是任意大于1的正整数的真因子;m不是它本身的真因子。
完全数 如果一个正整数m,其所有真因子之和等于m,那么它就是一个完全数。例如完全数6和28:
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
二. 任务
请补全函数is_perfect。该函数的原型如下:
bool is_perfect(unsigned m);
此函数的功能是:
判断m是否是一个完全数。
如果是,则返回真true;否则返回假false。
注:你可以将bool类型看作是int类型,true视为1,false视为0。
提示:如果判断i是m的真因子?
三. 测试用例
测试程序 测试程序已经写好,并保证输入的有效性。你不必自行编写。 测试程序的功能是:
从键盘输入两个正整数a和b并保证3 < a < b <= 10000。
调用你补全的函数is_perfect,找出区间内的所有完全数,并按如下格式输出结果: (完全数1)(完全数2)...(完全数n) 如果区间内没有完全数,则输出为: ()
测试用例举例
示例1 输入 1 30 输出 (6)(28)
示例2 输入 7 27 输出 ()
四. 要求
请在框架文件中完成任务。
请将你的代码写在//TODO和//END OF TODO这对标记之间。
请勿修改框架中的任何已有内容。
#include <stdio.h>
#include <string.h>
#include <stdbool.h>/** 判断m是否为完全数* 参数说明:* - m:unsigned,待判断的正整数* 返回值说明:* - bool,如果m是完全数,返回true;否则返回false。*/
bool is_perfect(unsigned m) {//TODO//END OF TODO
}static void print_perfect(unsigned a, unsigned b) {int c = 0;for (unsigned i = a; i <= b; ++i)if (is_perfect(i)) {++c;printf("(%d)", i);}if (!c) printf("()");putchar('\n');
}int main() {unsigned a, b;scanf("%u%u", &a, &b);print_perfect(a, b);return 0;
}
利用斐波那契数列求黄金分割比例
题目编号:190
一. 已知条件
斐波那契数列 斐波那契数列的定义为:第1、2项都是1;第n项是前两项之和。递推公式如下: Fn = 1, 当n=1,2时 Fn = Fn-1 + Fn-2, 当n>2时
黄金分割比例 黄金分割比例phi约等于0.618,可以用斐波那契数列中的相邻两项求得: phi = Fn-1 / Fn n越大,得到得结果就越精确。
二. 任务
请补全函数phi的编码。该函数的原型如下:
double phi(int n);
此函数的功能是:
根据递推公式计算出斐波那契数列的第n-1项和第n项
计算并返回二者的商。
注意:不能也不需要用递归方法
三. 测试用例
测试程序 测试程序已经写好,并保证输入的有效性。你不必自行编写。 测试程序的功能是:
从键盘输入正整数n(3 <= n <= 20)。
调用你补全的函数phi,计算并用格式"%.5lf"输出结果。
测试用例举例
用例1 输入 3 输出 0.50000
用例2 输入 8 输出 0.61905
用例3 输入 20 输出 0.61803
四. 要求
请在框架文件中完成任务。
请将你的代码写在//TODO和//END OF TODO这对标记之间。
请勿修改框架中的任何已有内容。
#include <stdio.h>/** 利用斐波那契数列求黄金分割比例** 参数说明:* - n:int, 斐波那契数列的项数* 返回值说明:* - double,黄金分割比例** 提示:斐波那契数列每项的值都是整数* 注意:不能也不需要用递归方法*/
double phi(int n) {//TODO//END OF TODO
}int main() {int n;scanf("%d", &n);printf("%.5lf\n", phi(n));return 0;
}
还原压缩的三角方阵
题目编号:191
一. 已知条件
三角方阵压缩 有这样的一种方阵(行列数相同的矩阵),左上三角地带所有值都是0,右下三角地带全是无规律的非0值。 例如,以下是这样的一个4阶方阵:
0 0 0 7
0 0 2 4
0 9 6 3
8 5 1 10
因为存在大量的0元素,所以常把它压缩存储到一个一维序列中:
7 2 4 9 6 3 8 5 1 10
假设方阵是n阶的,其非0元素个数为m,则有:m=n(n+1)/2;那么反推过来,n就接近于2m的平方根。提示:是向上取整还是向下取整?
数据结构 在C语言实现上,方阵可以用一个二维数组表示,压缩成的一维序列可以用一个一维数组表示。
二. 任务
请补全函数restore_matrix的编码。该函数的原型如下:
int restore_matrix(int a[], int b[][MAXN]); //#define MAXN 512
此函数的功能是:
将一维数组a中的压缩数据还原到方阵b中,返回方阵的阶数。
三. 测试用例
测试程序 测试程序已经写好,并保证输入的有效性。你不必自行编写。 测试程序的功能是:
从键盘依次输入压缩一维数组的值,最后一个数据是0值,表示输入结束。输入数值间用空格隔开。
调用你补全的函数restore_matrix,得到结果,并按行依次输出还原的二维方阵的所有元素,元素间用空格隔开。
测试用例举例
用例 输入 7 2 4 9 6 3 8 5 1 10 0 输出 0 0 0 7 0 0 2 4 0 9 6 3 8 5 1 10
四. 要求
请在框架文件中完成任务。
请将你的代码写在//TODO和//END OF TODO这对标记之间。
请勿修改框架中的任何已有内容。
/*
1. 本题需要的数据较多。因此,为了避免你在本地调试时反复输入,已将测试用例写在了一个数据文件q4.in中,其内容如下:
7 2 4 9 6 3 8 5 1 10 0上述数据产生的输出是:
0 0 0 7 0 0 2 4 0 9 6 3 8 5 1 102. 如果这个文件不存在,那么你就要从键盘手动输入。3. 如果你的程序编译后是a.out,那在命令行里,你可以这样运行程序 a.out < q4.in ,避免重复从键盘输入
*/#include <stdio.h>
#include <math.h>#define MAXN 512int a[MAXN];
int b[MAXN][MAXN];
/** 将压缩到一维数组的二维方阵还原* 首先要根据一维数组的非0元素个数m,计算二维方阵的阶数n。* 提示:n接近于sqrt(2m)* * 参数说明:* - a:int[],存储压缩数据的一维数组。其中的第一个0值只表示结尾,不是压缩数据。* - b:int[][MAXN],待还原的方阵。* 返回值说明:* - int。方阵的阶数。*/
int restore_matrix(int a[], int b[][MAXN]) {//TODO//END OF TODO
}int main() {int i, j;i = 0;while (1) {scanf("%d", &a[i]);if (a[i] == 0) break;++i;}int n = restore_matrix(a, b);for (i = 0; i < n; ++i)for (j = 0; j < n; ++j)printf("%d ", b[i][j]);putchar('\n');return 0;
}
去除字符串首尾的所有空格
题目编号:192
一. 已知条件
首尾空格去除 一个字符串的首尾可能存在多个无用的空格。例如:
" this is a test. "
现在需要将这个字符串首尾所有的空格去除,但字符串中间的空格要原样保留。结果是这样的:
"this is a test."
这个结果将保存到另一个字符串中。
思路 对于原始字符串s和结果字符串t:
指针p从s开头向后,找到第一个非空格字符;
指针q从s尾部向前,找到第一个非空格字符;
将指针p、q之间的字符复制到t中;
字符串t封尾。
提示:如何找到字符串的尾部?
二. 任务
请补全函数trim的编码。该函数的原型如下:
void trim(char *s, char *t);
此函数的功能是:
去除字符串s首尾所有空格,但s中间的空格原样保留。
结果保存到字符串t中。
三. 测试用例
测试程序 测试程序已经写好,并保证输入的有效性。你不必自行编写。 测试程序的功能是:
从键盘输入首尾、中间可能带有空格的字符串,去掉行尾的'\n',用'\0'封尾。测试程序保证没有全是空格的输入。
调用你补全的函数trim,得到结果,并按如下格式输出: (去掉首尾空格的字符串)
加上()的作用是为了让结果一目了然。
测试用例举例
用例 输入 this is a test. 输出 this is a test. 注:输入输出背景加深是为了能看清两端空格的存在。
四. 要求
请在框架文件中完成任务。
请将你的代码写在//TODO和//END OF TODO这对标记之间。
请勿修改框架中的任何已有内容。
#include <stdio.h>
#include <string.h>/*对于原始字符串s和结果字符串t:- 指针p从s开头向后,找到第一个非空格字符;- 指针q从s尾部向前,找到第一个非空格字符;- 将指针p、q之间的字符复制到t中;- 字符串t封尾。
*//** 去除字符串两端空格的函数trim* 将字符串开头和末尾的所有空格字符去除* * 参数说明:* - s:char*,原始字符串* - t:char*,去掉所有首尾空格后的字符串* 返回值说明:* - 无**/
void trim(char *s, char *t) {//TODO//END OF TODO
}#define MAXN 512extern void trim(char *s, char *t);int main() {char s[MAXN + 1], t[MAXN + 1];fgets(s, MAXN, stdin);char *p = strchr(s, '\n');if (p) *p = '\0';trim(s, t);printf("(%s)\n", t);return 0;
}
键值对数组排序
一. 已知条件
键值对的数据结构 键值对(key-value pair)可以用C语言的结构来描述:
typedef struct {char key[30]; //用字符串表示的键int value; //基于简化的目的,数值的类型是int
} pair;
在此基础上,用键值对数组来存储更多的数据。
pair kv[128]; //kv是键值对类型的数组。元素的键无重复。
字符串比较函数 两个字符串进行值比较的标准库函数原型如下:
int strcmp(const char *s, const char *t);
这个函数的功能是:比较两个字符串的字典序大小。如果s>t,函数返回正值;如果s<t,返回负值;如果相等,返回0。
二. 任务
请补全排序函数sort_kv的编码。该函数的原型如下:
void sort_kv(pair kv[], int n);
此函数的功能是:
利用冒泡排序法,按照键值(注:是个字符串)的大小对长度为n的数组kv进行升序排序。
三. 测试用例
测试程序 测试程序已经写好,并保证输入的有效性。你不必自行编写。 测试程序的功能是:
先读入键值对数组长度,然后依次读入键值对。
调用你补全的函数sort_kv,然后如下格式输出排序结果: (键1=>值1)(键2=>值2)...(键n=>值n)
测试用例举例
用例 输入
5
pear 30
apple 100
pineapple 20
orange 80
durian 10
输出
(apple=>100)(durian=>10)(orange=>80)(pear=>30)(pineapple=>20)
四. 要求
请在框架文件中完成任务。
请将你的代码写在//TODO和//END OF TODO这对标记之间。
请勿修改框架中的任何已有内容。
/*
1. 本题需要的数据较多。因此,为了避免你在本地调试时反复输入,已将测试用例写在了一个数据文件q6.in中,其内容如下:
5
pear 30
apple 100
pineapple 20
orange 80
durian 10上述数据产生的输出是:
(apple=>100)(durian=>10)(orange=>80)(pear=>30)(pineapple=>20)2. 如果这个文件不存在,那么你就要从键盘手动输入。3. 如果你的程序编译后是a.out,那在命令行里,你可以这样运行程序 a.out < q6.in ,避免重复从键盘输入
*/#include <stdio.h>
#include <string.h>typedef struct {char key[30]; //用字符串表示的键int value; //基于简化的目的,数值的类型是int
} pair;/** 用冒泡排序法对键值对数组按键进行排序(升序)* * 参数说明:* - kv:int[],键值对数组* - n:int,数组长度* 返回值说明:* - 无*/
void sort_kv(pair kv[], int n) {//TODO//END OF TODO
}pair kv[128]; //kv是键值对类型的数组static void print_kv(pair kv[], int n) {for (int i = 0; i < n; ++i)printf("(%s=>%d)", kv[i].key, kv[i].value);putchar('\n');
}int main() {int n;scanf("%d", &n);for (int i = 0; i < n; ++i)scanf("%s%d", kv[i].key, &kv[i].value);sort_kv(kv, n);print_kv(kv, n);return 0;
}
自我练习
1. 登录icoding,点击左侧的开始编程
点击左侧栏的开始编程
2. 新建一个标签页,网址栏输入 https://icoding.run/ide/question/xxx/1
注意:上方网址的xxx更换为icoding题目编号,题目编号为上方的题目序号下面的黄帝文字,如第一题的编号为188.要练习哪个题就对应那个题目编号
3. 这个新建的标签页出现如下图像时
回到icoding,刷新,即可看到作答页面。
声明
本文章仅供学习使用。严禁作其他用途。
更多真题可参考https://blog.csdn.net/jjq15008419406/category_11960847.html
电子科大信软互+班 程算I 2022级机考真题相关推荐
- 电子科大信软互+班 程算I 2021机考真题
基本情况 对应课程:程序设计与算法基础I 考试时间:3小时 题型:函数题+编程题 函数题只需要完成期中一些(个)函数即可 编程题需要自己手动写main函数 提示:题目序号为x-x的可能为一组题目,若题 ...
- 电子科大信软互+班 程算I 2020机考真题
基本情况 对应课程:程序设计与算法基础I 考试时间:3小时 题型:函数题+编程题 函数题只需要完成期中一些(个)函数即可 编程题需要自己手动写main函数 提示:题目序号为x-x的为一组题目,若题目告 ...
- 电子科大信软互+班 程算II 2021机考真题(含答案)
目录 基本情况 具体题目 1 线性表1 2 线性表2 3 栈 4 二叉树 5 树 6 图 7 排序 自我练习 声明 基本情况 对应课程:程序设计与算法基础II(数据结构与算法基础) 考试时间:3小时 ...
- 软件设计师 软考 真题练习 (三)
软件设计师 软考 真题练习 (三) 以下关于散列表(哈希表),及其查找特点的叙述中,正确的是 A.在散列表中进行查找时,只需要与待查找关键字及其同义词进行比较 B.只要散列表的装填因子不大于1/2,就 ...
- 自考软考需要做什么题,自考软考真题哪里有呢?
除了可以自我提升,软考还能提供各式各样的帮助,包括但不限于北上广落户.孩子上学,人才引进.对于工作的人,报考培训班是不太现实的,时间没有那么自由,很多人会选择自考软考,那么自考软考需要做什么题呢?自考 ...
- 软考真题的重要性不用再强调了吧
各位考生都深知[真题]的重要性.大家对历年真题,从来都是"备考必做"的态度. 刷软考真题,除了可以让自己尽快熟悉考试题型和考点外,还有什么好处呢?真题都考过了,还会再出吗? 不管是 ...
- 2021年上半年软考真题及答案解析汇总
2021上半年软考考试在5月29日-5月30日举行,小编整理了2021年上半年软考各科目的真题及答案解析,欢迎一起讨论,可用于估分. 软考真题软考真题软考真题软考真题软考真题~重要的多说几遍!!! 持 ...
- 中科大-计算机类考研真题(初试笔试真题详解+复试笔试机试真题详解+面试问题汇总分析)
中科大-计算机类考研真题(初试笔试真题详解+复试笔试机试真题详解+面试问题汇总分析) 初试笔试真题2003年~2019年:答案+详解 复试面试问题总结:问题汇总+详解分析 复试面试经验总结:个人小结 ...
- 往年考过的软考真题,2021还会再出吗?
各位考生都深知[真题]的重要性.大家对历年真题,从来都是"备考必做"的态度. 刷软考真题,除了可以让自己尽快熟悉考试题型和考点外,还有什么好处呢?真题都考过了,还会再出吗? 不管是 ...
最新文章
- linux中怎么退出执行过程,(进程)处理过程中的Linux:从执行到退出
- php 360 极速模式,如何让360浏览器默认使用极速模式
- Android 简单基站定位程序
- netty springmvc_springmvc源码架构解析之HandlerMapping
- 五种方式让你在java中读取properties文件内容不再是难题
- spark整合MySQL
- ambari mysql jar_从零开始安装 Ambari (3) -- 安装 Ambari
- snmp,mrtg安装和配置(2) mrtg安装
- Spring MVC静态资源实例
- Cisco自反控制列表的应用
- 如何自己用U盘重装系统
- 阿里布局无人驾驶;滴滴成立汽车服务;“京东 AI 天团”首亮相| CSDN极客头条
- 关于结合测试时,数据准备的一些注意点 (之开始篇:如何能更快,更好的准备测试数据)。
- asp,jsp,php等web开发必懂技术---什么时候使用静态页,什么时候必须使用动态页...
- vue 第十天 (组件的基本使用)
- java和C#的相同之处笔记
- 8uftp cuteftp,8uftp cuteftp之间的差别
- Ubuntu 20.04 LTS 修改IP地址
- 【前沿技术RPA】 一文学会用UiPath实现自动发送电子邮件(Email Automation)
- 逆火软件测试工资,世界级人体工学设计:HyperX Pulsefire FPS逆火鼠标评测
热门文章
- Firefly AIO-3399Pro C开发板交叉编译OpenCV 3.4.10及FFmpeg、x264等依赖库,实现视频播放等功能
- [西南财经大学的Python应用基础]:python列表和元组的作业
- 原初.Le.premier.cercle.2009.480X272.PSP.iPhone.MP4
- 【每天学习一点新知识】robots.txt详解
- 【实战】使用Java结合Sendmail邮件服务器+Quartz开源框架定时发邮件
- 阿里巴巴达摩院通义千问【附申请链接】阿里版ChatGPT
- 光栅位移传感器如何安装
- 基于 vue 编写的vue图片预览组件,支持单图和多图预览,仅传入一个图片地址,即可实现图片预览效果,可自定义背景、按钮颜色等
- teamspeak搭建_关于teamspeak3搭建云服务器教程
- SpringBoot访问jar包静态文件