首页 > 试题广场 >

字符圣诞树

[编程题]字符圣诞树
  • 热度指数:58236 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
输入一个字符,用它构造一个边长为5的三角形圣诞树。

数据范围:保证输入的字符是一个 char 类型的值

输入描述:
输入只有一行,一个字符。


输出描述:
该字符构成的三角形圣诞树。
示例1

输入

1

输出

    1
   1 1
  1 1 1
 1 1 1 1
1 1 1 1 1
import java.io.IOException;
public class Main{
    public static void main(String[] args) throws IOException{
        char c=(char)System.in.read();
        int n = 5;
        for(int i = 1; i <= n; i++){   // 控制行数
            for (int m = 1; m <= n-i; m++) { // 左侧空格
                System.out.printf(" ");
            }
            for (int j = 1; j <= 2*i-1; j++) {
                if ((j+1)%2 == 0){  // 基数输出1,偶数输出空格
                    System.out.print(c);
                }else {
                    System.out.printf(" ");
                }
            }
            System.out.println();
        }
    }
}

发表于 2020-04-13 21:57:23 回复(0)
#include <bits/stdc++.h>
using namespace std;
int main()
{
    //取中值,用奇偶性质
    char ch;cin>>ch;
    int mid = 5,left = 0,right = 0;
    for(int i = 1 ; i < 6 ;i++){
            left = mid-i+1;
            right = mid+i-1;
            for(int j = 1 ; j < 10;j++){
                if( j >=left && j <= right){
                    if(i%2!=0){
                        if(j%2!=0)cout<<ch;
                        else cout<<' ';
                    }else{
                        if(j%2==0)cout<<ch;
                        else cout<<' ';
                    }
                }else cout<<' ';
            }
            cout<<endl;
    }
}


发表于 2021-01-19 15:00:38 回复(0)
public class Test{ public static void main(String[ ] args){ for(int i=0;i&lt;5;i++){ for(int j=0;j&lt;=i;j++){ System.out.print('1'); if(i==j){ System.out.println();//换行 } } } } }
编辑于 2022-07-28 15:06:01 回复(2)
发表于 2022-01-01 19:20:20 回复(0)
int main()
{
    char x = 0;
    scanf("%c", &x);
    for (int i = 1; i <= 5; i++)
    {
        for (int j = 5; j > i; j--)
        {
            printf(" ");
        }
        for (int a = 1; a <= i; a++)
        {
            printf("%c ", x);
        }
        printf("\n");
    }
    return 0;
}


发表于 2021-12-25 00:10:57 回复(0)
num=input()
for i in range(1,6):
    for j in reversed(range(1,6-i)):
        print(" ",end="")
    for t in range(1,i+1):
        print(num,'',end="")
    print("\n",end="")

发表于 2021-12-01 21:27:54 回复(0)
#include<iostream>
using namespace std;
int main()
{
    char a;
    cin>>a;
    int i=1;
    while(i<=5)
    {
     for(int j=5-i;j>0;j--)
    {
        cout<<" ";
    }
        for(int k=i;k>0;k--)
        {
            cout<<a<<" ";
        }
        cout<<endl;
        
        i++;
    }
   
   
}


发表于 2021-07-05 21:35:15 回复(0)
//===========================
// char_pyramid.cpp
// 输入:一个字符
// 输出:字符金字塔
//===========================
#include <bits/stdc++.h>
//---------------------------
int main() {
    
    char a;
    scanf("%c", &a);
    
    printf("    %c\n", a);
    printf("   %c %c\n", a, a);
    printf("  %c %c %c\n", a, a, a);
    printf(" %c %c %c %c\n", a, a, a, a);
    printf("%c %c %c %c %c\n", a, a, a, a, a);
    
    return 0;
}
哈哈哈
发表于 2020-08-06 19:34:34 回复(5)
#include <stdio.h>
void solve(char c);
int main()
{
	char c;
	scanf("%c",&c);
	getchar(); //过滤换行符
	solve(c);
	return 0; 
}

void solve(char c)
{
	int i, j;
	for(i=0; i<5; i++)
	{
		for(j=0; j<4-i; j++)
			printf(" ");
		for(j=0; j<i+1; j++)
			printf("%c ",c);
		printf("\n");
	}
}

发表于 2020-07-23 23:30:31 回复(0)
#include <stdio.h>
int main()
{
    int i,j,k;
    char n;
    scanf("%c",&n);
    for(i=0;i<5;i++)
    {
        for(j=4-i;j>0;j--)
        {
            printf(" ");
        }
        for(k=0;k<=i;k++)
        {
            printf(" %c",n);
        }
        if(i<4)
            printf("\n");
    }
}
发表于 2020-05-30 11:26:19 回复(0)
#include <iostream>

int main() {
    char ch = '\0';
    std::cin >> ch;
    uint32_t cows = 5;
    uint32_t cols = 2 * cows - 1;
    uint32_t iNums = 1;
    for (uint32_t i = 0; i < cows; ++i) {
        uint32_t spaceNums = cows - i - 1;
        for (uint32_t j = 0; j < spaceNums; ++j) {
            printf(" ");
        }
        for (uint32_t j = 0; j < iNums; ++j) {
            printf("%c ", ch);
        }
        iNums++;
        printf("\n");
    }
}

发表于 2020-05-16 20:28:03 回复(0)

void Jzt(char a){

    int i=0;     //控制行数

    for(i=0;i<5;i++){      //打印5行

        int j=0;           //控制空格数量

        for(j=4-i;j>0;j--){

            printf(" ");

        }

        int k=0;   //控制打印的字母数量

        for(k=0;k<=i;k++){

            printf("%c ",a);

        }

        printf("\n");   //每行打印完后换行

    }

}


int main(){

    char a;

    scanf("%c",&a);  //输入想要打印的内容

    Jzt(a);   //金字塔函数

    return 0;

}

发表于 2021-08-10 16:33:37 回复(0)
#include <stdio.h>
int main(){
	char x;
	scanf("%c",&x);
	for(int i=1;i<=5;i++){
		for(int j=5-i;j>0;j--){
			printf(" ");
			
		}
		for(int m=1;m<=i;m++)
			printf("%c ",x);
			printf("\n");
	}
}


发表于 2020-03-12 22:30:37 回复(5)
作为一个小白来说一下我的思路
1
1 1
1 1 1
1 1 1 1
1 1 1 1 1
这样的数组大家肯定都会打印,就是每一行打印固定的 [ 1 + " " ],那么这样一看其实就给前面打印空格就好了,第一行打印4个,第二行打印三个......
上代码:
Scanner sc =  new Scanner(System.in);
        String str = sc.next();
        int key = 4;//定义空格打印
        for (int i = 0; i < 5; i++) {
            for(int j = key; j > 0; j--){
                System.out.print(" ");
            }
            //这里是第一步,就是打印字符数组,现在给前面加空格
            for (int j = 0; j < i + 1; j++) {
                System.out.print(str + " ");
            }
            key--;
            System.out.println();
        }
    }//BC12 字符金字塔



发表于 2021-09-07 16:15:15 回复(2)
#include <stdio.h>

int main()
{
    char ch=0;
    ch=getchar();
    int i=0;
    for(i=0;i<5;i++)
    {
        int j=0;
        for(j=0;j<4-i;j++)
        {
        printf(" ");
        }
        for(j=0;j<=i;j++)
        {
        printf("%c ",ch);
        }
        printf("\n");
    }
    return 0;
}
发表于 2021-08-16 23:54:15 回复(0)
#include<stdio.h>
int main()
{
    char a=0;
    scanf("%c",&a);
    int i=0;
    for(i=1;i<=5;i++)
    {
        int j=0;
        for(j=1;j<=(5-i);j++)
            printf(" ");
        int s=0;
        for(s=1;s<=i;s++)
            printf("%c ",a);
        printf("\n");
    }  
    return 0;
}

/*
    1    
   1 1   
  1 1 1  
 1 1 1 1 
1 1 1 1 1 
*/

最开始没有过是因为题设使用数字输入,而用例又用字符输入。改进后这版可以直接用于答题。这题思路很简单,找到行数、空格数和字符数之间的关系就可以很容易写出循环的条件。有个tip给大家说一下,就是我们输出的时候,只需要输出显示出的字符和字符左边的空格就足够了,右边自然会打印空格。
发表于 2021-08-03 00:06:23 回复(1)
a = input()
for i in range(5):
    print("{:^10}".format((a + ' ')*(i+1)))
发表于 2020-05-08 11:44:46 回复(0)
s=input()
b=s
def leerzeichen (b):
    
    for i in range(5):
        
        print("{:^9}".format(b))
        b=b+" "+s
leerzeichen(b)

编辑于 2020-04-29 11:16:41 回复(2)
import java.util.Scanner;

public class Main{

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        char c=scanner.nextLine().charAt(0);
        System.out.println("    "+c);
        System.out.println("   "+c+" "+c);
        System.out.println("  "+c+" "+c+" "+c);
        System.out.println(" "+c+" "+c+" "+c+" "+c);
        System.out.println(c+" "+c+" "+c+" "+c+" "+c);
    }


}
发表于 2020-03-22 12:50:42 回复(1)
#include<stdio.h>
int main()
{
    char ch=0;
    ch=getchar();
    for(int i=1;i<=5;i++)
    {
        for(int j=5-i;j>0;j--)
        {
            putchar(' ');
        }
       for(int k=1;k<=i;k++)
       {
           printf("%c ",ch);
       }
        
        putchar('\n');
        
    }
    
    return 0;
}

发表于 2022-05-12 11:00:21 回复(0)

问题信息

上传者:牛客309119号
难度:
154条回答 6002浏览

热门推荐

通过挑战的用户

查看代码
字符圣诞树