空心三角形

来源:互联网 发布:免流云端app源码 编辑:程序博客网 时间:2024/05/17 06:02

把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。

 
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

(注意输出输入格式!!!第一行和最后一行输入后紧接输出答案,其他行输入后输出一空行再输出答案,我个人还因为n==1时没处理好,错了很久。。。

#include<stdio.h>#include<string.h>int main(){int n,i,t,k,h,f=0;char a;while(scanf("%c",&a)!=EOF&&a!='@'){scanf("%d",&n);if(n==1)//因为这个搞死了********{if(f)       printf("\n");    f=1;printf("%c\n",a);    getchar(); //吸收回车键,要不出错,把a当做回车了。continue;}if(f)   printf("\n");f=1;t=2*n-1;        for(i=0;i<t/2;i++)//输出第一行。    printf(" ");printf("%c\n",a);k=t/2;h=1;if(k>1){while(k--){for(i=0;i<k;i++)            //输出第i行(1<i<n)前面的。printf(" ");printf("%c",a);for(i=0;i<h;i++)            //输出第i行(1<i<n)后面的    printf(" ");  printf("%c\n",a);  h+=2;  if(k==1) //k==1时已经循环完了,  break;}}for(i=0;i<t;i++)//输出最后一行。printf("%c",a);printf("\n");getchar(); //吸收回车键,要不出错,把a当做回车了。}return 0;}


点击打开链接http://acm.hdu.edu.cn/showproblem.php?pid=2091