输入一个字符,用它构造一个边长为5的三角形圣诞树。
数据范围:保证输入的字符是一个 char 类型的值
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(); } } }
#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; } }
//=========================== // 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; }哈哈哈
#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"); } }
#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"); } }
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;
}
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 字符金字塔
#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给大家说一下,就是我们输出的时候,只需要输出显示出的字符和字符左边的空格就足够了,右边自然会打印空格。
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); } }