打印十字图

问题描述

小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:

 

对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。

输入格式
一个正整数 n (n<30) 表示要求打印图形的层数。
输出格式
对应包围层数的该标志。
样例输入1
1
样例输出1

 

样例输入2
3
样例输出2

 

提示
请仔细观察样例,尤其要注意句点的数量和输出位置。
分析如下:

左边图是输入3时的结果,右边是输入1时的结果,之前曾经想要不要用地递归,查了一下发现没有必要,把图形分成四块,每块又分成三个部分,开个字符数组赋值输出就可以了,很简单

 1 #include<stdio.h>  
 2 #include<string.h>  
 3 int main(void){  
 4     char a[130][130];  
 5     int n, i, j, m;  
 6     int mid_of_row;  
 7     memset( a, '$', 116900 * sizeof(char));  
 8     //这里是一个投机取巧的办法,直接全都赋值成$,之后找'.'的位置就可以了,这也是我写完了以后才想到的  
 9     scanf("%d", &n);  
10        
11     mid_of_row = 5 + ( n - 1) * 2;//中线位置  
12     for( j = 1; j <= 22 * n + 1 ; j++){  
13         for( i = mid_of_row ; i > j + 1; i--){  
14             if( j % 2 == 0){  
15                 // 上三角  
16                 a[j][i] = '.';  
17                 // 下三角   
18                 a[i][j] = '.';  
19             }  
20         }  
21     }  
22       
23     // 中间  
24     for( i = mid_of_row - 1; i >= 1; i--){  
25         if( i == 1){  
26             a[i][i] = '.';  
27         }  
28         else if( i % 2 == 0){  
29             a[i][i] = a[i-1][i] = a[i][i-1] = '.';  
30         }  
31     }   
32       
33     for( i = 1; i <= mid_of_row; i++){  
34         //左上  
35         for( j = 1; j <= mid_of_row; j++){  
36             printf("%c", a[i][j]);  
37         }  
38         //右上  
39         for( j = mid_of_row - 1; j >= 1; j--){  
40             printf("%c", a[i][j]);  
41         }  
42         printf("\n");  
43     }  
44     for( i = mid_of_row - 1; i >= 1; i--){  
45         // 左下   
46         for( j = 1; j <= mid_of_row; j++){  
47             printf("%c", a[i][j]);  
48         }  
49         // 右下  
50         for( j = mid_of_row - 1; j >= 1; j--){  
51             printf("%c", a[i][j]);  
52         }  
53         printf("\n");  
54     }  
55     return 0;  
56 }  

这种字符形状输出的问题吧,我见过的通常不难,就是麻烦了点,打出来以后特别有成就感

 

===================================UPDATE===============================

貌似数组初始化成'.' 然后用这种方法赋值可能更简单

 

 

posted @ 2018-02-01 17:57  Curo  阅读(543)  评论(1编辑  收藏  举报