题目链接
#include <iostream>
#include <string>
using namespace std;
// 分为三部分打印:根据规律
void myprint(char c, int n){
// 第一部分:第一行
cout << string(n- 1, ' ') << c << endl;
// 第二部分:中间部分
for(int i = n - 2, j = 1; i >= 1; i--, j += 2){
cout << string(i, ' ') << c << string(j, ' ') << c << endl;
}
// 第三部分:最后一行
if(n > 1)
cout << string(n + n - 1, c) << endl;
cout << endl;
}
int main() {
char c;
int n;
while(cin >> c){
if(c == '@')
break;
cin >> n;
myprint(c, n);
}
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String line = sc.nextLine();
if (line.equals("@"))
break;
String[] inputs = line.split(" ");
char ch = inputs[0].charAt(0);
int n = Integer.parseInt(inputs[1]);
// 输出图案
printPattern(ch, n);
}
sc.close();
}
private static void printPattern(char ch, int n) {
// 输出第一行
print(' ', n - 1);
System.out.println(ch);
// 输出第二行到倒数第二行
for (int i = 2; i < n; i++) {
print(' ', n - i);
System.out.print(ch);
print(' ', 2 * i - 3);
System.out.println(ch);
}
// 输出最后一行
if (n > 1) {
print(ch, 2 * n - 1);
System.out.println();
}
System.out.println();
}
private static void print(char ch, int count) {
while (count-- > 0) {
System.out.print(ch);
}
}
}
while True:
try:
line = input()
if line == '@':
break
ch, n = line.split()
n = int(n)
# 输出第一行
print(' ' * (n - 1) + ch)
# 输出第二行到倒数第二行
for i in range(2, n):
print(' ' * (n - i) + ch + ' ' * (2 * i - 3) + ch)
# 输出最后一行
if n > 1:
print(ch * (2 * n - 1))
print()
except:
package main
import (
"fmt"
)
func printSpaces(numSpaces int) {
for i := 0; i < numSpaces; i++ {
fmt.Print(" ")
}
}
func printAChars(numChars int, a rune) {
for i := 0; i < numChars; i++ {
fmt.Print(string(a))
}
}
func main() {
var n int
var a rune
for {
_, err := fmt.Scanf("%c", &a)
if err != nil || a == '@' {
break
}
_, err = fmt.Scanf("%d", &n)
if err != nil {
break
}
if n == 1 {
fmt.Println(string(a))
}
for i := 1; i <= n-1; i++ {
// 打印空格
printSpaces(n - i)
// 打印字符
if i == 1 {
fmt.Print(string(a))
} else {
fmt.Print(string(a))
printSpaces(2*i - 3)
fmt.Print(string(a))
}
fmt.Println()
}
// 打印底边
if n > 1 {
printAChars(2*n-1, a)
fmt.Println()
}
fmt.Println() // 每条结果下一个空行
}
}
function myprint(c, n) {
// 第一部分:第一行
console.log(" ".repeat(n - 1) + c);
// 第二部分:中间部分
for (let i = n - 2, j = 1; i >= 1; i--, j += 2) {
console.log(" ".repeat(i) + c + " ".repeat(j) + c);
}
// 第三部分:最后一行
if (n > 1) {
console.log(c.repeat(n + n - 1));
}
console.log();
}
function main() {
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', (input) => {
let [c, n] = input.split(' ');
if (c === '@') {
rl.close(); // 结束输入监听
return;
}
myprint(c, parseInt(n));
});
}
main();
#include <stdio.h>
void printSpaces(int numSpaces) {
for (int i = 0; i < numSpaces; ++i) {
printf(" ");
}
}
void printAChars(int numChars, char a) {
for (int i = 0; i < numChars; ++i) {
printf("%c", a);
}
}
int main() {
int n;
char a;
while (scanf(" %c", &a) == 1) { // 在%c前加空格,忽略换行符
if (a == '@') break;
scanf("%d", &n);
if (n == 1) printf("%c\n", a);
else {
// 打印第一行
printSpaces(n-1);
printf("%c\n", a);
// 打印中间行
for (int i = 2; i <= n-1; ++i) {
printSpaces(n-i);
printf("%c", a);
printSpaces(2*i-3);
printf("%c\n", a);
}
// 打印最后一行
if (n > 1) printAChars(2*n-1, a);
printf("\n");
}
printf("\n"); // 每条结果下一个空行
}
return 0;
}