HDU 2091 空心三角形

来源:互联网 发布:淘宝优惠券代理 编辑:程序博客网 时间:2024/05/16 15:42

http://acm.hdu.edu.cn/showproblem.php?pid=2091

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

Input
每行包含一个字符和一个整数n(0< n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。

Output
每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。

Sample Input
X 2
A 7
@

Sample Output
X
XXX

(A复制不过来……什么鬼)不过反正有链接。

解题思路:
1.这道题主要是格式问题。注意点,一行到字符输入结束不能再是空格而应该是换行。
2.从第二个案例开始,再打印出来那个图形之前要有一行空行。
3.可能在输入数据时将换行当做字符输入,会出现很多莫名其妙的空行。所以需要用getchar。
*魏子卿说:不要输入一个字符,而是输入一个字符串,即char str[N], scanf(“%s”,str); a=str[0]; 这样做在输入时默认输入空格或者换行符就结束。

代码:

#include<stdio.h>int main(){    char c;    int n,w=0;    while(scanf("%c",&c)!=EOF,c!='@')    {        int i,j;        scanf("%d",&n);        getchar();        if(w)            printf("\n");        else            w=1;        for(i=1;i<=n;i++)        {            for(j=1;j<=n+(i-1);j++)            {                if(i!=n)                {                    if(j==n+(i-1)||j==n-(i-1))                    {                        printf("%c",c);                    }                    else                        printf(" ");                }                else                    printf("%c",c);            }            printf("\n");        }    }    return 0;}
0 0
原创粉丝点击