蓝桥杯关于字母图形问题---C语言

字母图形

问题描述:利用字母可以组成一些美丽的图形,下面给出了一个例子
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个数,以至于输出的字符会超。总之,最重要的还是明白这道题的规律。以上都只是本人粗略的见解。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值