Live2D

基础练习-3.字母图形

问题描述

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定
1 <= n, m <= 26。
 
某位大神的算法如下:
 
 1 #include <stdio.h> 
 2 #include <stdlib.h> 
 3 #define MAXSIZE 26   
 4 
 5 void Print(char matrix[MAXSIZE][MAXSIZE],int n,int m) 
 6 {  
 7     int i,j;  
 8     for(i=0;i<n;i++) 
 9     {  
10         for(j=0;j<m;j++) 
11         {  
12             printf("%c",matrix[i][j]); 
13         }  
14             printf("\n"); 
15     } 
16 } 
17    
18   
19  void Drawing(int n,int m) 
20  {  
21      int i,j; 
22      int point=0; 
23      char str;  
24      char matrix[MAXSIZE][MAXSIZE]; 
25      for(i=0;i<n;i++) 
26         {  
27            str='A';  
28            for(j=i;j<m;j++) 
29            {  
30                matrix[i][j]=str++; 
31            }  
32             str='A';  
33                 for(j=i-1;j>=0;j--) 
34                 {  
35                     matrix[i][j]=++str; 
36                 } 
37             }  
38          Print(matrix,n,m); 
39      }  
40 int main() 
41 {  
42     int n,m;  
43     scanf("%d%d",&n,&m); 
44     Drawing(n,m); 
45     return 0; 
46 }

 

也许是在下水平过低,看大神的代码头疼,自己写了一个比较好理解的
  如下:
 
 1 #include"stdio.h"
 2 int main()
 3 {
 4     int i,j,n,m,k;
 5     char a[100][100];
 6     scanf("%d %d",&n,&m);
 7     for(i=0;i<n;i++)
 8     {
 9         k=i+1;
10         for(j=0;j<m;j++)
11         {
12             if(i==j)
13                 a[i][j]='A';
14             else if(i<j)
15                 a[i][j]='A'+k++;
16             else if(i>j)
17                 a[i][j]='A'+ --k;
18         }
19     }
20 for(i=0;i<n;i++)
21 {
22     for(j=0;j<m;j++)
23     {
24         printf("%c",a[i][j]);
25     }
26     printf("\n");
27 }
28     return 0;
29 }

 

posted @ 2018-02-23 23:34  Mr丶L  阅读(279)  评论(0编辑  收藏  举报