字母图形
问题描述:利用字母可以组成一些美丽的图形,下面给出了一个例子
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。输出n行,每个m个字符,为你的图形。
样例输入:
5,7
样例输出:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
解题思路:首先我们看到题目的第一眼,就会感觉这是一个有规律的数列,所以我们首先就要找到它的规律。假设我们用i代表行,j代表列,可以发现如果第一行的第一个数i=0,j=0,那么第一行的第二个数就是i=0,j=1,而第二行的第一个数是i=1,j=0,第二行的第二个数是i=1,j=1,下几行同理,我们不难发现当i=j是字母都是A,而当i与j相差1时字母为B,同时因为A和B的ASCII值相差为1,所以我们可以根据这个规律去写程序。
程序的初步思路
我们首先要想到会用到的是循环,而这个程序除了规律之外最重要的也就是循环,这里由于我们发现了一个差值的规律,我们肯定就要用到多个循环,下面我们就来写一下这个代码。
#include<stdio.h>
void main()
{
int m,n,i,j,k;
char a[30][30];
printf("请输入n和m:");
scanf("%d,%d",&n,&m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
a[i][j]='A';//先把A的框架弄好
for(k=0;k<m;k++)//用循环来实现我们的差值
{
if(i==j+k||j==i+k)//这是我们所找到的规律
{
a[i][j]='A'+k;
}
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%c",a[i][j]);//整理输出
}
printf("\n");
}
}
总结:要注意这里的输出是用的%c,因为输出是字符,所以不要写成了%d。还有就是K在这里作为一个循环的数,要注意它的范围,不能超过你设置的m个数,以至于输出的字符会超。总之,最重要的还是明白这道题的规律。以上都只是本人粗略的见解。