首页 > 试题广场 >

K形图案

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

输入描述:

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



输出描述:
针对每行输入,输出用“*”组成的K形,每个“*”后面有一个空格。
示例1

输入

2

输出

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

输入

3

输出

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

输入

4

输出

* * * * * 
* * * * 
* * * 
* * 
* 
* * 
* * * 
* * * * 
* * * * * 
#include <cstdio>
int main()
{
    int a;
    while(~scanf("%d",&a))
    {
        for(int i=a;i>0;--i)//上半部分 a行
        {
            for(int j=0;j<=i;++j)
                printf("* ");
            for(int k=0;k<a-i;++k)//这是一个坑 需要输出空格
                printf(" ");
            printf("\n");
        }
        for(int i=0;i<=a;++i)//下半部分 a+1行
        {
            for(int j=0;j<=i;++j)
                printf("* ");
            for(int k=0;k<a-i;++k)//这是一个坑 需要输出空格
                printf(" ");
            printf("\n");
        }
    }
    return 0;
}

发表于 2020-03-26 10:53:36 回复(6)
import java.util.*;
public class Main {
public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int count;
        while(scanner.hasNext()) {
            count = scanner.nextInt();
            for(int i=0;i<=count;i++) {
                for(int j=0;j<=count;j++) {
                    if(j<=count-i)
                        System.out.printf("* ");
                    else
                        System.out.printf(" ");
                }
                System.out.println();
            }
            for(int i=0;i<count;i++) {
                for(int j=0;j<=count;j++) {
                    if(j<=i+1)
                        System.out.printf("* ");
                    else
                        System.out.printf(" ");
                }
                System.out.println();
            }
        }
    }
}

好家伙,浪费这么长时间,就是因为每行最后还有空格,艹,把图案复制到编辑器里就能发现了
* * * * 
* * *  
* *   
*    
* *   
* * *  
* * * * 

编辑于 2021-03-17 20:44:53 回复(0)
#include<stdio.h>
int main()
{
    int n;
    while( scanf("%d",&n) != EOF )
    {
        for( int i = 0 ; i <= n ; i++ )
        {
            for( int j = i ; j <= n ; j++) printf("* ");
            printf("\n");  
        }    
        for( int i = 0 ; i < n ; i++ )
        {
            for( int m = i + 2 ; m > 0 ; m--) printf("* ");  
            printf("\n");  
        }   
    }
    return 0;
}

发表于 2022-06-17 08:33:28 回复(0)
#include <iostream>
using namespace std;

int main()
{
    int n;
    while (scanf("%d", &n) != EOF)
    {
        // n ~ 1    n + 1 ~ 2
        for (int i = n; i >= 1; i -- )
        {
            for (int j = i + 1; j >= 1; j --) printf("* ");
            printf("\n");
        }
        // 1 个*
        printf("*\n");
        
        // 1 ~ n,  2 ~ n + 1
        for (int i = 1; i <= n; i ++ )
        {
            for (int j = 1; j <= i + 1; j ++ ) printf("* ");
            printf("\n");
        }
    }
}

发表于 2022-02-27 21:34:15 回复(0)
    int i=0,j=0,num;
    while(scanf("%d",&num)!=EOF)
    {
        getchar();
        for(i=1;i<=2*num+1;i++)
        {
            if(i<=num+1)
            {
                for(j=num+1;j>=i;j--)
                    printf("* ");
                for(j=i-1;j>0;j--)
                    printf("  ");
            }
            else
            {
                for(j=i-num;j>0;j--)
                    printf("* ");
                for(j=2*num+1-i;j>0;j--)
                    printf("  ");
            }
            printf("\n");
        }
    }
发表于 2020-04-01 18:33:00 回复(0)
#include<cstdio>
(802)#include<iostream>
using namespace std;
int main() {
    int n;
    while (cin >> n) {
        for (int i = n; i >= 1; i--) {
            for (int j = 0; j <= i; j++) {
                cout << "*0";
            }
            for (int h = i; h<n;h++) {
                cout << "0";
            }
            for (int h = i; h < n; h++) {
                cout << "0";
            }
            printf("\n");
        }
        cout << "*0";
        for (int i = 0; i < n;i++) {
            cout << "00";
        }
        printf("\n");
        for (int i = 1; i <= n; i++) {
            for (int j = 0; j <= i; j++) {
                cout << "*0";
            }
            for (int h = i; h < n;h++) {
                cout << "0";
            }
            for (int h = i; h < n; h++) {
                cout << "0";
            }
            printf("\n");
        }
    }
    return 0;
} 

编辑于 2020-03-20 14:49:11 回复(1)
#include <stdio.h>

int main(void)
{
    int i, j, k, t;
    
    while (scanf("%d", &k) != EOF && (k >= 2 && k <= 20))
    {
        for (i = 0; i <= k; i++)
        {
            for (j = i; j <= k; j++)
            {
                printf("* ");
            }
            for (t = 0; t < i; t++)
            {
                putchar(' ');//K型图案后面空格好多!!!!!!!!!!
            }
            putchar('\n');
        }
        for (i = 1; i <= k; i++)
        {
            for (j = 0; j <= i; j++)
            {
                printf("* ");
            }
            for (t = k; t > i; t--)
            {
                putchar(' ');//K型图案后面空格好多!!!!!!!!!!
            }
            putchar('\n');
        }
    }
    
    return 0;
}
//这题服了;
发表于 2020-05-22 14:56:48 回复(0)
每行除了基本的星号加空格之外还要多输出一些空格,坑。。。

编辑于 2021-02-05 18:50:03 回复(3)
#include <stdio.h>
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF){
        int i,j;
        for(i=0;i<2*n+1;i++){
            for(j=0;j<=n;j++){
                if(j==0||i+j<=n||(i>=n&&i-j>=n)){
                    printf("* ");
                }else{
                    printf("  ");
                }
            }
            printf("\n");
        }
    }
}

发表于 2020-04-11 09:07:06 回复(0)
#include <stdio.h>

int main() {
    int input,i,j,n,tmp;
    while(scanf("%d",&input)!=EOF)
    {
        for(n=0;n<input*2+1;n++)
        {
            tmp=input+1-n;
            if(n>=input+1)
            {
                tmp=n-(input-1);
            }
            for(i=0;i<tmp;i++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

发表于 2022-11-03 17:34:40 回复(0)
#include <stdio.h>
//这个题好坑
int main() {
    int n = 0;
//如果输入的是n,其实每行打印n+1组字符(*和空格)
    while (scanf("%d", &n) != EOF) {
        int i = 0;
        for (i = n; i >= 0; i--) {
            int j = 0;
            for (j = 0; j <= i; j++) {
                printf("* ");
            }
//*的后面还有空格-这个比较坑
            for (j = i; j < n; j++) {
                printf(" ");
            }
            printf("\n");
        }
        for (i = 1; i <= n; i++) {
            int j = 0;
            for (j = 0; j <= i; j++) {
                printf("* ");
            }
//*的后边还有空格-这个比较坑
            for (j = i; j < n; j++) {
                printf(" ");
            }
            printf("\n");
        }
    }
    return 0;
}

发表于 2024-01-09 12:46:01 回复(0)
while True:
    try:
        n=int(input())
        for i in range(n+1,0,-1):
            print('* '*i)
        for i in range(2,n+2):
            print('* '*i)  
    except:
        break   

发表于 2023-01-20 11:21:57 回复(0)
while True:
    try:
        n = int(input())
        
        for i in range(-n,n+1):
            print('* '*(abs(i)+1))
    except:
        break

发表于 2022-10-07 22:16:27 回复(0)
#include <stdio.h>

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

编辑于 2024-04-05 20:32:18 回复(0)
编辑于 2024-03-29 16:21:05 回复(0)
#include <stdio.h>

int main() {
    int n;
    while (scanf("%d", &n) != EOF) { // 注意 while 处理多个 case
        // 64 位输出请用 printf("%lld") to 
        int i=0;
        for(i=0;i<n+1;i++)
        {
            int j=0;
            for(j=0;j<n+1-i;j++)
            {
                printf("* ");
            }
            printf("\n");
        }
        for(i=0;i<n;i++)
        {
            int j=0;
            for(j=0;j<i+2;j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

编辑于 2024-03-27 19:35:25 回复(0)
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
    int n = 0;
    int i = 0;
    int j = 0;


    while (scanf("%d", &n) != EOF)
    {
        //输出上半部分与中线
        for (i = 0; i < n + 1; i++)
        {
            for (j = 0; j < n + 1 - i; j++)
            {
                printf("* ");
            }
            printf("\n");
        }
        //输出下半部分
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < 2 + i; j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }

    return 0;
}

编辑于 2024-03-19 12:23:37 回复(0)
while True:
    try:
        a = int(input())
        for i in range(-a, a + 1):
            print("* " * (abs(i)+1))
    except:
        break

编辑于 2024-02-05 13:33:57 回复(0)
#include <stdio.h>

int main() {
    int n;
    while(scanf("%d", &n) != EOF){
        for(int y=0; y<=2*n; y++){
            if(y<=n){
                for(int i=0; i<=n-y; i++){
                    printf("* ");
                }
            }else{
                for(int j=0; j<=y-n; j++){
                    printf("* ");
                }
            }
            printf("\n");
        }
    }
    return 0;
}
编辑于 2024-01-29 19:23:52 回复(0)
#include <stdio.h>

int main() {
    int a, b;
    while (scanf("%d", &a) != EOF) {
        b = a + 1;
        for (int i = 1; i <= b; i++) {//分两部分打印
            int c = i;
            while (c <= b) {
                printf("* ");
                c++;
            }
            printf("\n");//换行
        }
        for (int j = 1; j < b; j++) {//打印下半部分
            int d = j;
            while (d >= 0) {
                printf("* ");
                d--;
            }
            printf("\n");//换行
        }
    }
    return 0;
}
编辑于 2024-01-16 14:29:26 回复(0)

问题信息

上传者:牛客309119号
难度:
149条回答 2797浏览

热门推荐

通过挑战的用户

查看代码