输入一个字符,用它构造一个边长为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);
}
}