基础练习 字母图形

来源:互联网 发布:网络手机高清直播软件 编辑:程序博客网 时间:2024/06/05 16:30

原题网址:http://lx.lanqiao.org/problem.page?gpid=T7

题目:

问题描述

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

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

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

输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定
1 <= n, m <= 26。


这题想的有一点时间,太久不用脑子了(/ □ \)。。

然后想到了打表。。(这个算是打表吧~~),先把Z~A~Z都给赋值到一个字符数组,确定显示的数量m,然后通过移动开始点n。把上面的补完就是这样:

GFEDCB # ABCDEFG

GFEDC # BABCDEFG

GFED # CBABCDEFG

GFE # DCBABCDEFG

GF # EDCBABCDEFG

其中#是开始的位置,m的值为7。


代码如下:

#include <stdio.h>#include <string.h>int main(){int n,m;scanf("%d %d", &n, &m);int i,j;char s[51];memset(s,0,sizeof(s)/sizeof(char));for (i=0; i<51; ++i){if (i<26){s[i] = 'Z'-i;}else{s[i] = 'A'+i-25;}}for (i=0; i<n; ++i){int k=0;for (j=25-i; k<m; ++k){printf("%c", s[j+k]);}printf("\n");}return 0;}

然后,在网上看到了一个简单点的代码:

#include <iostream>#include <cmath>using namespace std;int main(){int n,m;cin >> n >> m;for (int i=0; i<n; i++){for (int j=0; j<m; j++){cout << char('A'+abs(i-j));}cout << endl;}return 0;}


最后比较了下,发现我这个还不错。。


其实,做这题我主要了解到了。。memset函数竟然在string.h头文件中

0 0
原创粉丝点击