上海计算机学会2020年6月月赛C++丙组T3打印K型
发布时间
阅读量:
阅读量
该任务要求根据给定的整数 n 生成一个由星号组成的 K 字形图案。该图案由 2n + 1 行组成。第一部分从顶部开始(从第 n 行到第 1 行),每一行包含两个固定的星号 () 和随着行数递减而减少的空格和星号数量;第二部分从第 3 行开始(当 i=1 时)到第 2n + 1 行结束,在此期间每一行同样包含两个固定的星号 () 和随着行数递增而增加的空格和星号数量。代码通过循环结构实现了这一逻辑,并使用了自定义函数简化了重复操作的部分。
示例:
输入:5
输出包括两部分:
- 第一部分(5 到 1 行):
`
ical
`
- 第二部分(从第3行开始):
`
`
题目描述
小爱想用 * 打出一个大写的 K。例如 n=3 时,输出
** *** ** ** ** * *** ** * ** ** ** ***
设整数 n 用于定义字形的规模,请生成相应的星号 K 形图案。该整体结构包含 2n+1 行内容,在最左侧竖直线占据前两列位置的基础上展开设计;右侧折线段会根据参数 n 的不同而宽度有所变化,请参考附录中的示例图进行具体操作。
输入格式
单个整数表示 n。
输出格式
共 2n+1 行,表示一个 K 字形图案。
数据范围
1≤n≤50
样例数据
输入:
5
输出:
输入:
7
输出:
详见代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
for (int i=n;i>=1;i--){
cout<<"**";
for(int j=1;j<=i;j++){
cout<<" ";
}
for(int j=1;j<=i;j++){
cout<<"*";
}
cout<<endl;
}
cout<<"***"<<endl;
for (int i=1;i<=n;i++){
cout<<"**";
for(int j=1;j<=i;j++){
cout<<" ";
}
for(int j=1;j<=i;j++){
cout<<"*";
}
cout<<endl;
}
return 0;
}
便于通过以下方式使用该函数进行简化处理:其中该函数为一个功能模块
#include <bits/stdc++.h>
using namespace std;
int myprint(int n,char c)
{
for (int j=1;j<=n;j++){
cout<<c;
}
return 0;
}
int main()
{
int n;
cin>>n;
for (int i=n;i>=1;i--){
cout<<"**";
myprint(i,' ');
myprint(i,'*');
cout<<endl;
}
cout<<"***"<<endl;
for (int i=1;i<=n;i++){
cout<<"**";
myprint(i,' ');
myprint(i,'*');
cout<<endl;
}
return 0;
}
全部评论 (0)
还没有任何评论哟~
