当前位置: 首页 > news >正文

GESP C++ 二级拓展课(二)

课题及解析建议用时120分钟,
文字区只需要看懂,代码区需要自己敲,才更有效喔!


课题及解析:

1、4015:【GESP2309二级】小杨的X字矩阵

【题目描述】

小杨想要构造一个N×N 的 X 字矩阵(N 为奇数),这个矩阵的两条对角线都是半角加号 + ,其余都是半角减号-。例如,一个 的 X 字矩阵如下:

+---+
-+-+-
--+--
-+-+-
+---+

请你帮小杨根据给定的 打印出对应的“X 字矩阵”。

【输入】

一行一个整数N (5≤N≤49 ,保证N为奇数)。

【输出】

输出对应的“X 字矩阵”。

请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出N 行,每行除了换行符外恰好包含N个字符,这些字符要么是 +,要么是 - 。

【输入样例】

5

【输出样例】

+---+
-+-+-
--+--
-+-+-
+---+

【提示】

特别提醒:

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。

样例输入 2

7

样例输出 2

+-----+
-+---+-
--+-+--
---+---
--+-+--
-+---+-
+-----+

【解析】

思路:
①题意:输出一个行和列长度都是n的矩阵,坐上角(1,1)到右下角(n,n)的斜线上都是+,右上角(1,n)到左下角(n,1)的斜线上也都是+,其他位置上都是-。
②关键点:行的编号=列的编号 或 行的编号+列的编号=n+1 时输出'+',否则输出'-'。

解题步骤:
①变量:
int n;
②一级结构:
for(int i=1; i<=n; i++)// i是行的编号
③二级结构(在一级结构里面):
for(int j=1; j<=n; j++)// j是列的编号
cout<<endl;
④三级结构(在二级结构里面):
if(i==j || i+j==n+1)        cout<<'+';
else        cout<<'-'

【答案】

#include<iostream>
using namespace std;
int main()
{int n;cin>>n;for(int i=1; i<=n; i++){// i是行的编号		for(int j=1; j<=n; j++){// j是列的编号 if(i==j || i+j==n+1){cout<<'+';}		else{cout<<'-';}	}cout<<endl;}return 0;
}

二、4043:【GESP2403二级】乘法问题

【题目描述】

小 A 最近刚刚学习了乘法,为了帮助他练习,我们给他若干个正整数,并要求他将这些数乘起来。

对于大部分题目,小 A 可以精准地算出答案,不过,如果这些数的乘积超过106 ,小 A 就不会做了。

请你写一个程序,告诉我们小 A 会如何作答。

【输入】

第一行一个整数n ,表示正整数的个数。

接下来n 行,每行一个整数a 。小 A 需要将所有的a 乘起来。

保证n≤50 ,a≤100 。

【输出】

输出一行,如果乘积超过106 ,则输出>1000000 ;否则输出所有数的乘积。

【输入样例】

2
3
5

【输出样例】

15

【提示】

样例输入 2

3
100
100
100

样例输出 2

1000000

样例输入 3

4
100
100
100
2

样例输出 3

>1000000

【解析】

思路:
①题意:
第一行输入一个n,表示有n个数,第二行开始分别输入这n个数。然后把这n个数都乘起来,结果>1000000时,输出“>1000000”;结果不大于>1000000时,输出结果。
②关键点:可以用a表示输入的每个数,编号为:a1、a2、a3、······an,
如果a1+a2+a3+......+an大于1000000,输出“>1000000”;
否则,输出结果。


解题步骤:
①变量:
int n, a, ji=1;
cin>>n;
②一级结构:
for(int i=1; i<=n; i++)
③二级结构(在一级结构里):
cin>>a;
ji*=a;// ji每次循环都要*a,程序运行完后ji=1*a1*a2*a3*......an。
④一级结构运行完后要做判断:
if(ji>1000000)        cout<<">1000000";
else        cout<<ji;

【答案】

/*二、4043:【GESP2403二级】乘法问题*/
#include<iostream>
using namespace std;
int main()
{int n, a, ji=1;cin>>n;for(int i=1; i<=n; i++){cin>>a;ji*=a;// ji每次循环都要*a,程序运行完后ji=1*a1*a2*a3*......an。} if(ji>1000000)	cout<<">1000000";else	cout<<ji; return 0;
}

三、4027:【GESP2312二级】小杨做题

【题目描述】

为了准备考试,小杨每天都要做题。第 1 天,小杨做了a 道题;第 2 天,小杨做了b 道题;从第 3 天起,小杨每天做的题目数量是前两天的总和。

此外,小杨还规定,当自己某一天做了大于或等于m 题时,接下来的所有日子里,他就再也不做题了。

请问,到了第 天,小杨总共做了多少题呢?

【输入】

总共 4 行。第一行一个整数a ,第二行一个整数b ,第三行一个整数m ,第四行一个整数N 。

保证0≤a,b≤10 ;a,b<M≤1,000,000 ;3≤N≤364 。

【输出】

一行一个整数,表示小杨N 天里总共做了多少题目。

【输入样例】

1
2
10
5

【输出样例】

19

【提示】

样例解释 1

小杨第一天做1 题,第二天做2 题,第三天做1+2=3 题,第四天做2+3=5 题,第五天做3+5=8 题。因此他总共做了1+2+3+5+8=19 题。

样例输入 2

1
1
5
8

样例输出 2

12

样例解释 2

小杨前 5 天分别做了1,1,2,3,5 题,由于第 5 天小杨做了5 题,而m=5 ,于是小杨从此以后不再做题。因此小杨总共做了1+1+2+3+5=12 题。

【解析】

思路:
①题意:
第一个做a题,第二天做b题,第三天做前两天的和道题,依次类推。当某一天做题大于或等于m道时,不管做没做满n天都停止做题。问n天一共做题数量的和。
②关键点:h初始为a+b,每次循环先把a和b右移一个位置,也就是b可以表示从第二个数开始的所有数,每次循环都把h加上b。如果循环中途,b>=m,就提前结束循环。

解题步骤:
①变量:
int a, b, m, n;
cin>>a>>b>>m>>n;
int h=a+b;// 上一行输入了a和b后,才能把h初始为a+b;
int gjr;// 工具人变量,用于保存a原来的值。
②一级结构:
for(int i=1; i<=n; i++)
③二级结构(在一级结构里):
if(b>=m)        break;

【答案】

/*4027:【GESP2312二级】小杨做题*/
#include<iostream>
using namespace std;
int main()
{int a, b, m, n;cin>>a>>b>>m>>n;int h=a+b; for(int i=1; i<=n; i++){int gjr=a;a=b;b=gjr+b;h+=b;if(b>=m){break;}}cout<<h;return 0;
}

四、4028:【GESP2312二级】小杨的 H 字矩阵

【题目描述】

小杨想要构造一个N×N 的 H 字矩阵(N 为奇数),具体来说,这个矩阵共有N 行,每行N 个字符,其中最左列、最右列都是 | ,而中间一行(即第N+12 行)的第2∼N−1 个字符都是 − ,其余所有字符都是半角小写字母a 。例如,一个N=5 的 H 字矩阵如下:

|aaa|
|aaa|
|---|
|aaa|
|aaa|

请你帮小杨根据给定的N 打印出对应的“H 字矩阵”。

【输入】

一行一个整数N (≤N≤49,保证N 为奇数)。

【输出】

输出对应的“H 字矩阵”。

请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出N 行,每行除了换行符

外恰好包含N 个字符,这些字符要么是 − ,要么是 | ,要么是 a 。你的输出必须和标准答案完全一致才能得分,请在提交前仔细检查。

【输入样例】

5

【输出样例】

|aaa|
|aaa|
|---|
|aaa|
|aaa|

【提示】

样例输入 2

7

样例输出 2

|aaaaa|
|aaaaa|
|aaaaa|
|-----|
|aaaaa|
|aaaaa|
|aaaaa|

【解析】

思路:
①题意:输出一个行和列长度都是n的矩阵,n是奇数。每行的第一列和最后一列都是|,中间一行(行==(n+1)/2时)都是-,其他位置上都是a。
②关键点:本题|的优先级比-高。

解题步骤:
1.变量
int n;
cin>>n;
2.一级结构:
for(int h=1; h<=n; h++)// h为行的编号
3.二级结构:
for(int l=1; l<=n; l++)// l为列的编号
4.三级结构:
if(l==1 || l==n)    cout<<"|";
else if( h==(n+1)/2 )    cout<<"-";
else    cout<<"a";

【答案】

#include<iostream>
using namespace std;
int main()
{int n;cin>>n;for(int h=1; h<=n; h++){for(int l=1; l<=n; l++){if(l==1 || l==n)	cout<<"|";else if(h==(n+1)/2)	cout<<"-";else	cout<<"a"; }cout<<endl;} return 0;
}
http://www.dtcms.com/a/470286.html

相关文章:

  • Repository Contribution Count Action:开源贡献者的专属统计神器
  • B4414 [GESP202509 三级] 日历制作
  • 手机网站分页设计广州网站推广排名
  • 基于 EtherCAT 转 MODBUS RS485 的轧辊轴承智能温控系统应用
  • oa报表网站开发工作室设计
  • vue3中图片裁切组件封装
  • 从 0 到 1 搭建 Python 语言 Web UI自动化测试学习系列 15--二次开发--封装公共方法 3
  • 做新媒体文的网站网站开发 ppt
  • 东莞市建设局网站电子商务网站建设教程 pdf
  • numpy第三方库学习(更新中)
  • 【开题答辩全过程】以 报考意向分析系统为例,包含答辩的问题和答案
  • Spring AI
  • ssm速通1(2/2)
  • Android GPS定位与行车轨迹追踪完整实战
  • [持续更新] HPC高性能计算CUDA/C++面试知识点
  • 【有源码】基于Hadoop生态的大数据共享单车数据分析与可视化平台-基于Python与大数据的共享单车多维度数据分析可视化系统
  • 上海做网站推荐做景观要用的植物网站
  • 珠海 网站建设和推广万网网站空间
  • Jasperreport 导出word 多个element重叠部分导致不显示(不支持)
  • GRU(门控循环单元) 笔记
  • 莱州网站建设哪家好做网站要会哪些知识
  • ubuntu离线安装 xl2tpd
  • 如何在百度上做网站最好用的免费建站
  • 关联网站有那些wordpress超级排版器插件
  • 熊猫比分 APP:开启体育赛事观赛新“姿势”
  • 第二章:模块的编译与运行-9 Platform Dependency
  • java多模块概念
  • 小企业网站维护什么东西互联网培训
  • 找人做网站做的很烂网站自助建设推广
  • uhttpd HTTPS 在嵌入式与 OpenWrt 上的实战部署与排查