Problem Description
把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。
Input
每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。
Output
每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。
Sample Input
X 2 A 7 @
Sample Output
X XXX A A A A A A A A A A A AAAAAAAAAAAAA
java code
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
String str = input.next();
if (str.contains("@")) {
break;
}
int n = input.nextInt();
String[][] result = new String[n][2 * n - 1];
for (int i = 0; i < n; i++) {
for (int j = 0; j < 2 * n - 1; j++) {
result[i][j] = " ";
}
}
for (int i = 0; i < n; i++) {
if (i == 0) {
result[i][n - 1] = str;
} else if (i == n - 1) {
for (int j = 0; j < 2 * n - 1; j++) {
result[i][j] = str;
}
} else {
result[i][n - i - 1] = str;
result[i][n + i - 1] = str;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < 2 * n - 1; j++) {
System.out.print(result[i][j]);
}
System.out.println();
}
}
input.close();
}
}
c++ code
#include <iostream>
using namespace std;
int main()
{
char ch;
int n,i,j;
int flag=0;//空行用
while(cin>>ch&&ch!='@'){
cin>>n;
if(flag) cout<<endl;
flag=1;
for(i=1;i<n;i++) cout<<" ";
cout<<ch<<endl;
for(i=2;i<n;i++){
for(j=1;j<=n-i;j++) cout<<" ";
cout<<ch;
for(j=1;j<=2*i-3;j++) cout<<" ";
cout<<ch<<endl;
}
if(n!=1)
{
for(i=1;i<=2*n-1;i++) cout<<ch;
cout<<endl;
}
}
return 0;
}```
网友评论