基础练习 字母图形

时间:2023-02-13 23:12:45

基础练习 字母图形  

时间限制:1.0s   内存限制:256.0MB

      

问题描述

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

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

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

输入格式

输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。

输出格式

输出n行,每个m个字符,为你的图形。

样例输入

5 7

样例输出

ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC

数据规模与约定

1 <= n, m <= 26

 思路:

我用的字母ASCII码,最后再强制转化为char型的。A的ASCII码为65,B的为66...

由图形可以看出(1)第一行和第一列都是以A为开始,接下来都是BCDEF....

        (2)从第二行开始,每一行从第二位开始,都是上一行右移一位后直接搬下来的

程序如下:

#include <iostream>
using namespace std;
//方法一
int main()
{
int n;
int m;
cin>>n>>m;
int array[n][m];//n行m列
for(int i=0;i<n;i++)//给第一列赋值65,66,67... 转化为char型即为A,B,C...
{
array[i][0]=65+i;//A的ASCII码为65
}
for(int i=0;i<m;i++)//给第一行赋值65,66,67... 转化为char型即为A,B,C...
{
array[0][i]=65+i;
}
for(int i=1;i<n;i++)//从第二行开始,每一行从第二位数开始的值都是上一行的右移一位后直接搬下来的
{
for(int j=1;j<m;j++)
{
array[i][j]=array[i-1][j-1];
}
}
for(int i=0;i<n;i++)//输出
{
for(int j=0;j<m;j++)
{
cout<<(char)array[i][j];//强制转化为char型
}
cout<<endl;
}
return 0;
}

#include <iostream>
using namespace std;
//方法二
int main()
{
unsigned int n,m;
cin>>n>>m;
int array[n][m];
for(int i=0;i<m;i++)//给第一行赋值65,66,67... 转化为char型即为A,B,C...
{
array[0][i] = i + 65;
}
for(int i=1;i<n;i++)
{
for(int j=1;j<m;j++)//从第二行开始,每一行从第二位数开始的值都是上一行的右移一位后直接搬下来的
{
array[i][j] = array[i-1][j-1];
}
array[i][0] = array[i-1][0] + 1;//给每一行的第一位赋值
}
for(int i=0;i<n;i++)//输出
{
for(int j=0;j<m;j++)
{
cout<<(char)array[i][j];
}
cout<<endl;
}
return 0;
}

上面两个程序差别不大,第一个是思维更直观的体现,而第二个稍稍简化了一点。


下面是参考别人的程序总结的,其程序十分的简洁

思路:

由图形可看出,是以A为对角线分别向两边递增(以ASCII而言)。

程序如下:

#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n, m;
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
putchar(abs(i - j) + 'A');
putchar(10);//换行的ASCII码为10
}
return 0;
}


知识点(于第三个程序而言):

1.    abs()和fabs()

头文件:<cmath>
abs()
求得是正数的绝对值。
fabs()
求得是浮点数的绝对值。

2.    putchar()和getchar()

putchar()

头文件:<stdio.h>

作用:输出一个字符

格式:putchar(c),c为输出的参数

基础练习 字母图形

getchar()

头文件:<stdio.h>

作用:输入一个字符

格式: getchar(),没有参数

基础练习 字母图形

注意:(1)敲下的字符先暂存在键盘的缓冲器,按了enter键后才会把所有敲下的字符一起输入到计算机,然后按先后顺序分别赋给相应的变量。

            (2)getchar()函数不仅可以从输入设备获得一个可显示的字符,而且可以获得屏幕上无法显示的字符,如控制字符回车换行,空格等。如下图:

基础练习 字母图形

上面的程序中,输入A,enter,B,再按enter。其中A将赋给了a,换行符enter将赋给了b,B将赋给了c,最后的enter将敲下的上述字符输入计算机。