SIM2022-精工书院2022级乐学机考模拟试卷
创始人
2024-03-22 18:05:40
0

出了这六道题还有十道题,但是这六道模拟题的难度明显更高,所以我就不更新那10道题了

【机考01】【三】角图形输出,20分

编写程序,从键盘输入 n ( 0 < n < 27 ),输出下面( n = 5 时 )所示的高度为 n 行的三角形图形(行尾没有空格)。

        AB B BC C C C CD D D D D D DE E E E E E E E E

输入:
三角形图形的行数 (不用校验)

输出:

相应的三角形图形(行尾没有空格)

#include 
int main()
{int n,i;char a='A',s[]="                                                                                          ";scanf("%d",&n);for(i=1;iprintf("%.*s",2*(n-i),s);for(int j=0;j<2*i-1-1;j++){printf("%c ",a+i-1);}printf("%c",a+i-1);printf("\n");}
}

我这里用了一个长空格串 ( s[] ) 和格式化输出控制空格长度,也可以改成for循环

【机考02】【天】数计算输出,20分

【机考02】【天】数计算: 输出2022年北京冬奥会倒计时天数

第24届冬季奥林匹克运动会(The XXIV Olympic Winter Games),即2022年北京冬季奥运会 ,将于2022年2月4日星期五开幕,2月20日星期日闭幕。北京冬季奥运会设7个大项,15个分项,109个小项。北京赛区承办所有的冰上项目;延庆赛区承办雪车、雪橇及高山滑雪项目;张家口赛区的崇礼区承办除雪车、雪橇及高山滑雪之外的所有雪上项目。

编写程序,从键盘输入日期(YYYY-MM-DD),输出该日期距离2022年北京冬奥会开幕日(2022年2月4日)的倒计时天数。

例如:输入 2021-10-27 , 输出: 100

输入:

日期 (不用校验)

输出:

倒计时天数
参考之前写过的日期计算输出差值即可,也可以吧2022-2-4的天数先预处理出来

#include int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int day(int y,int m,int d)
{if(y%4==0&&y%100!=0||y%400==0) a[2]=29;else a[2]=28;y--;for(int i = 1;i < m;i++)d += a[i];d += y*365+y/4-y/100+y/400;return d;}int main()
{int y,m,d;scanf("%d-%d-%d",&y,&m,&d);printf("%d\n",day(2022,2,4)-day(y,m,d));
}

【机考03】 哥【俩】好( 新版 ), 20分

其实新版比原版简单
【机考03】哥【俩】好(新版): 一维数组元素两两相乘

编写程序,从键盘输入一维数组的元素个数(不超过21个)和数组中每个元素的内容,然后输出一维数组中元素两两相乘的结果。

输出要求:

① 元素两两相乘的顺序是第一个元素与最后一个元素相乘,第二个元素与倒数第二个元素相乘,... ... ;② 如果数组元素个数为奇数,则最中间的数自己与自己相乘,实现两两相乘;③ 输出结果的行首和行尾都没有空格。

输入:

第一行数据为数组中总的元素个数,第二行数据为数组各个元素的具体内容,例如:

71 2 3 4 5 6 7

输出:

一维数组元素两两相乘的结果(行首和行尾都没有空格),例如:

7 12 15 16
#include 
int main()
{int n;scanf("%d",&n);int a[n+1],i = 1,j=n;for(i = 1; i <= n; i ++) scanf("%d",&a[i]);for(i = 1; i <= j; i ++, j --)printf("%d%c", a[i]*a[j],i < j - 1 ? ' ' : '\n');
}

【机考04】【回】文字符串构建,20分

【机考04】【回】文字符串: 对任一字符串,构建一个回文字符串

“回文字符串”是一个正读和反读都一样的字符串,比如 “xyZyx” 或者 “12345cbAbc54321” 等就是回文字符串。

编写程序,从键盘输入一个【 字符串 s 】(其长度为 n , 0 < n < 22 ),构建一个回文字符串并输出。

本题回文字符串构建规则:

 ① 构建的回文字符串的长度为 :2 * n - 1 ;② 构建的回文字符串的最右边 n 个字符正好是 【 字符串 s 】 本身 ;

输入:

字符串,如 "12345ABC" 或 "Zyx"

输出:

构建的回文字符串,如 "CBA543212345ABC" 或 "xyZyx"

其实就是正常输出再倒序输出一遍
(我这里用绝对值单纯炫技没啥实际价值)

#include 
#define abs(x) x>0?x:-x
int main()
{char in[24],x;int n,i=0;while((x=getchar())!='\n') in[i++]=x;for(n=-i+1;n

【机考05】【超】市购物车结算,20分

【机考05】【超】市购物: 购物车应付账款结算
小明在某购物平台开了一家名为“21极品超市”的网店,只售卖21种商品,每种商品明码标价,不打折扣;
网店库房货量充足,从不缺货;承诺订单生成之后,三天之内发货。
顾客在“21极品超市”网站将选好的多种商品及数量加入购物车后,点击【结账】,即会生成采购清单。
编写程序,根据从键盘输入的某购物车的购物清单,进行该购物车的应付账款结算。
购物车购物清单的输入格式如下(如果选购了 n 种商品,则有 3 + n + 21 行数据):

⑴ 第一行,系统生成的订单号;
⑵ 第二行,选购商品的种类数 n ( 0 < n < 22 ) ;
⑶ 随后的 n 行 ,每行包括一种【已选购】商品的编号和相应数量;
⑷ 一行分隔符,"----------------" ,可用类似 {char s[100]; scanf("%s",&s[0]);} 跳过此行内容;
⑸ 再随后的 21 行,每行包括一种【在售商品】的编号和单价,编号从 0001 至 0021 ,已排序。

输入:购物车的购物清单。下面为选购【 3 种商品】时的购物清单输入示例:

XM10000135
3
0018,3
0001,25
0007,49
----------------
0001,  45.48
0002,   7.67
0003,  52.05
0004,  59.00
0005,  52.53
0006,  44.17
0007,  19.78
0008,  20.87
0009,  51.69
0010,  97.50
0011,  75.85
0012,  42.36
0013,  21.60
0014,  75.01
0015,  79.45
0016,  65.48
0017,  15.40
0018,  45.55
0019,  37.19
0020,  80.32
0021,   1.83

输出用 %12.2f 格式输出购物车应付账款金额,如:

2242.87

这题就有点意思了,因为只有21种商品,所以可以默认21种商品都买了0个,然后卖了的改一下个数就行,最后没卖的商品价格一定是0

#include int main()
{char rub[100];int num,n,w[22]={0},x;float p,sum;scanf("%*s");scanf("%d",&num);for(int i = 0;i < num;i++){scanf("%d,%d",&n,&x);w[n]=x;}scanf("%*s");for(int i = 1;i < 22;i++){scanf("%*d,%f",&p);sum += p*w[i];}printf("%12.2f\n",sum);
}

【机考06】 校【车】座位预订,20分

【机考06】 校【车】座位预约:输出可预约的最小座位号
某大学的校车连接南北两个校区,每天对开多趟,为广大师生跨区的教学、工作和生活等活动提供
强有力的交通保障。为确保每日校车有序高效运行,校后勤集团采用了校车座位预约系统进行座位预约,
采取“先约先得”的规则,用户可从尚没有预约的座位中随意挑选座位号。校车准乘 51 人(不含司机),
校车内部座位图如下所示,具体说明:
⑴ 可以预约的座位号:从 01 至 51 号, 共 51 个座位;
⑵ 最前面的第 00 排包含 驾驶室 和 一个超级座位: 第 51 号;
⑶ 第 01 排 至 第 10 排,每排 5 个座位,座位号见下图:

                校   车   头   部+-------------+--------------------+------+
|   驾 驶 室  |    非  座  位  区  |  51  | 第 00 排
+------+------+------+------+------+------+
|  01  |  11  |  21  |      |  31  |  41  | 第 01 排
+------+------+------+      +------+------+
|  02  |  12  |  22  |      |  32  |  42  | 第 02 排
+------+------+------+      +------+------+
|  03  |  13  |  23  |  过  |  33  |  43  | 第 03 排
+------+------+------+      +------+------+
|  04  |  14  |  24  |      |  34  |  44  | 第 04 排
+------+------+------+      +------+------+
|  05  |  15  |  25  |      |  35  |  45  | 第 05 排
+------+------+------+      +------+------+
|  06  |  16  |  26  |      |  36  |  46  | 第 06 排
+------+------+------+      +------+------+
|  07  |  17  |  27  |  道  |  37  |  47  | 第 07 排
+------+------+------+      +------+------+
|  08  |  18  |  28  |      |  38  |  48  | 第 08 排
+------+------+------+      +------+------+
|  09  |  19  |  29  |      |  39  |  49  | 第 09 排
+------+------+------+      +------+------+
|  10  |  20  |  30  |      |  40  |  50  | 第 10 排
+------+------+------+------+-----+-------+校   车   尾   部

小明常乘坐校车往返两个校区,虽然很少能预约到 01 号座位,但他是有个性的青年,每次预约座位时,
都是从可预约的座位池中,选择最小的座位号。
编写程序,根据当前校车的座位预约图谱数据,为小明选择座位号。
座位号输出格式为 %02d ;如果已经满座,则输出"**"。

校车的当前座位预约图谱数据(共 12 行)见示例,格式说明如下:⑴ 第一行,为当天校车运行的车次号( 001 至 999 );⑵ 随后的 11 行,每行 5 列,为第 00 排 至 第 10 排的座位预约情况;⑶ 上述 ⑵所述的 11 行 5 列数据中各字符的含义:'H' - 司机座位,驾驶重地,双倍空间'/' - 非座位区,严禁超载,不卖站票'*' - 当前座位已经被预约,不可预约'+' - 当前座位可以预约
例如:第 00 排的数据为 "HH//*"时,表示第51号座位已经被预约,不能预约;第 00 排的数据为 "HH//+"时,表示第51号座位可以预约;第 06 排的数据为 "**++*"时,表示第06,16,46号座位已经被预约,第26,36号座位可以预约;第 10 排的数据为 "*****"时,表示第10,20,30,40,50号座位已经全部被预约。

输入校车的最新座位预约图谱,第1行(车次号)+ 11行5列(第00排,01排,…,第10排)座位预约数据,示例:

032
HH//*
**+++
*****
***+*
*****
*****
**+*+
*****
*****
*****
*****

输出可预约的最小座位号( %02d ),如果当前校车已经满座,则输出"**",示例:

21

只要先按行存图,再按列遍历即可(别忘了51特殊处理)

#include   
int main(){  char sit[10][5],y;  scanf("%*s\nHH//%c\n",&y);int i,j;for(i = 0;i < 10;i ++) gets(sit[i]);for(j = 0;j < 5;j ++) for(i = 0;i < 10;i ++) if(sit[i][j]=='+') { printf("%02d\n",j*10+i+1); return 0; }if(y=='+') printf("51\n");else printf("**\n");
}

相关内容

热门资讯

【深度学习笔记】CNN网络各种... FLOPs 这里先注意一下FLOPs的写法,不要弄混了: FLOPS(全大写):是floating...
Linux查看log日志命令总... 目录1,动态实时查看日志1.1 tail -f filename1.2 追踪特定内容日...
Elasticsearch 索... 1、创建\更新索引模板 PUT _template/logging_template {   "in...
语义分割------FCN、d... 一、个人理解 语义分割,其实就是为图片中的每个像素打上相应的标签,即将其所代表的语义具现化,呈现出的...
C++标准模版库中线程的使用 文章目录线程的基本使用最基础的使用方法在创建线程时传参再看看join线程与线程之间的同步 线程是程序...
CMMI之度量与分析(MA) 目的度量与分析(Measurement and Analysis, MA...
TII投稿时间线 IEEE论文审稿状态由awaiting ae recommendation变为AwaitingRev...
C++11中的完美转发 C++11中的完美转发 在讨论引用折叠这个话题之前,先回顾一下C...
Python调用lua 可以使用 Python 的第三方库 pylua 来调用 Lua 代码。 首先,需要在 ...
【手写 Promise 源码】... 一,前言 目前,以下专栏已完结(初版完结,持...