1212 Problem E-镂空三角形-入门题-排版-C语言实现

问题 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;

}

​
发布了20 篇原创文章 · 获赞 0 · 访问量 129

猜你喜欢

转载自blog.csdn.net/weixin_31789689/article/details/104710384