您的位置:首页 > 编程语言 > PHP开发

一道和打印字符有关的程序题

2011-03-17 10:16 239 查看
 Problem  字符打印

Description:

 
给你一个数字,请打印字符如下:
1
*
2

.*.

3
*****
*…*
*.*.*
*…*
*****
 
 
Input:
每测试例子中,只包含一个整数。当录入0时,程序结束。
 
Output:
 
每一个测试例子,输出相对应的字符图形
Sample Input:
1
2
3
4
Sample Output:
1
*
2

.*.

3
*****
*…*
*.*.*
*…*
*****
4
…….
.*****.
.*…*.
.*.*.*.
.*…*.
.*****.
…….
 
思路很多,以下是我的解题思路,仅供大家参考(代码可能不够严谨,没有注释,很抱歉^_^)

Code:

#include<stdio.h>  
  
int main()  
{  
    int n;  
    scanf("%d",&n);  
    while(n)  
    {  
    char a[100][100];  
    int m;  
    int j, k,z,q,h;  
    int p = 0;  
    int s=0;  
  
    m = 2*n-1;  
    q = z = m;  
    h = n;  
    h++;  
    if(n%2 == 0)  
    {  
        for(j = 0; j < m; j++)  
        {  
            for(k = 0; k < m; k++)  
                a[j][k] = '.';  
        }  
    }  
    else   
    {  
        for(j = 0; j < m; j++)  
        {  
            for(k = 0; k < m; k++)  
                a[j][k] = '*';  
        }  
    }  
    m = m-2;  
    s++;  
    j = k = s ;  
    p++;  
    h++;  
    while(m > 0)  
    {  
        if(h%2 != 0)  
        {  
            for(j=s; j <z-p; j++)  
            {  
                for(k=s; k <z-p; k++)  
                    a[j][k] = '.';  
            }  
        }  
        else   
        {  
            for(j=s; j <z-p; j++)  
            {  
                for(k =s; k <z-p; k++)  
                    a[j][k] = '*';  
            }  
        }  
        m = m-2;  
        s++;  
        j = k = s ;  
        p++;  
        h++;  
    }  
      
        for(j = 0; j < q; j++)  
        {  
            for(k = 0; k < q; k++)  
            {  
                printf("%c",a[j][k]);  
            }  
            printf("/n");  
        }  
    scanf("%d",&n);  
    }  
    return 0;  
}  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  output input 测试 图形 c
相关文章推荐