LQ0022 打印大X打印图形
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0022 打印大X打印图形相关的知识,希望对你有一定的参考价值。
题目来源:蓝桥杯2015初赛 C++ C组E题
题目描述
小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。
为了便于比对空格,所有的空白位置都以句点符来代替。
要求输入两个整数m n,表示笔的宽度,X的高度。
输入格式
输入存在多组数据
每组测试数据输入一行,包含两个整数,用空格分开
(0<m<n, 3<n<1000, 保证n是奇数)
输出格式
要求输出一个大X
输入样例
3 9
4 21
输出样例
…
.….
….…
……
……
……
….…
.….
…
…
.….
………
………
………
………
………
………
…**…
……
……
……
…***…
………
………
………
………
………
………
.….
…
问题分析
根据题意来写程序,不解释。
AC的C语言程序如下:
/* LQ0022 打印大X */
#include <stdio.h>
#include <string.h>
#define N 1000
char mp[N + 1][N + 1];
int main()
int m, n;
while (~scanf("%d%d", &m, &n))
memset(mp, '.', sizeof mp);
/* 左上到右下设置*号 */
for (int i = 1; i <= n; i++)
for (int j = i; j <= m + i - 1; j++)
mp[i][j] = '*';
/* 右上到左下设置*号 */
for (int i = 1; i <= n; i++)
for (int k = 1, j = 2 * (n / 2) + 1 - i + m; k <= m; k++, j--)
mp[i][j] = '*';
for (int i = 1; i <= n; i++)
for (int j = 1; j <= 2 * (n / 2) + m; j++)
putchar(mp[i][j]);
putchar('\\n');
return 0;
以上是关于LQ0022 打印大X打印图形的主要内容,如果未能解决你的问题,请参考以下文章