问题 E: 镂空三角形
时间限制: 1 Sec 内存限制: 32 MB
提交: 173 解决: 66
题目描述
把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。
输入
每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。
输出
每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。
样例输入 Copy
X 2 A 7 @
样例输出 Copy
X XXX A A A A A A A A A A A AAAAAAAAAAAAA
代码
#include <stdio.h>
//%d%d%d 与%d %d %d区别:空格的话输入时也必须输入空格作为间隔符,没空格的话,输入时用空格或回车做间隔都行。
//输入一定要规范,两个scanf之间忽略了空格回车键,需要用getchar()吸收
int main(){
char ch;
int n;
int i,j,k;
while(scanf("%c",&ch)!=EOF){
if(ch=='@'){
break;
}
scanf("%d",&n);
for( i=1;i<=n;i++){ //n行一起来
for(j=1;j<=n-i;j++){//开头打空格
printf(" ");
}
for( k = 1;k <=(2*(i-1)+1) ;k++){
if(i==1||i==n){ //首行和最后一行,别忘了第一行只有一个也是满的
printf("%c",ch);
}
else{
if(k==1||k==(2*(i-1)+1)){
printf("%c",ch);
}
else{
printf(" ");
}
}
}
printf("\n");
}
printf("\n");
getchar(); //这个很关键哦!吸收回车键
}
return 0;
}