Advertisement

上海计算机学会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)

还没有任何评论哟~