首页 > 试题广场 >

箭形图案

[编程题]箭形图案
  • 热度指数:88 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的箭形图案。

输入描述:
多组输入,一个整数(2~20)。


输出描述:

针对每行输入,输出用“*”组成的箭形。

示例1

输入

2

输出

    *
  **
***
  **
    *
示例2

输入

3

输出

      *
    **
  ***
****
  ***
    **
      *
示例3

输入

4

输出

        *
      **
    ***
  ****
*****
  ****
    ***
      **
        *
推荐
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    
    while (scanf("%d", &n) == 1) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < 2 * (n - i); j++) putchar(' ');
            for (int j = 0; j <= i; j++) putchar('*');
            puts("");
        }
        for (int i = 0; i <= n; i++) putchar('*');
        puts("");
        for (int i = n - 1; i >= 0; i--) {
            for (int j = 0; j < 2 * (n - i); j++) putchar(' ');
            for (int j = 0; j <= i; j++) putchar('*');
            puts("");
        }
    }
}
这类问题主要在于格式的控制,输出多少个空格。
编辑于 2019-06-17 12:19:45 回复(0)
#include<stdio.h>

int main()
{
    int n=0;
    while(scanf("%d",&n)!=EOF)
    {
        //上-n行
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n-i;j++) //双空格
            {
                printf("  "); 
            }
            for(int j=0;j<=i;j++) //*
            {
                printf("*");
            }
            printf("\n");
        }
        //下-n+1行
        for(int i=0;i<n+1;i++)
        {
            for(int j=0;j<i;j++)
            {
                printf("  ");
            }
            for(int j=0;j<n+1-i;j++)
            {
                printf("*");
            }
            printf("\n");
        }
    }
    return 0;
}

发表于 2022-09-03 13:35:43 回复(0)