蓝桥杯历届-打印大X
打印大X
小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。
为了便于比对空格,所有的空白位置都以句点符来代替。
要求输入两个整数m n,表示笔的宽度,X的高度。用空格分开
要求输出一个大X
#include<cstdio>
#include<iostream>
using namespace std;
int go(int i, int j, int m, int n){
int m1 = n-m-1;
int len = m*2+m1;
//上下对称
if (i > (n/2)+1) {
i -= (i - ((n/2)+1))*2;
}
// 左右对称
if (j > (len/2)+1) {
if (len%2 == 1)
j -= (j - ((len/2)+1))*2;
else
j -= (j - ((len/2)+1))*2+1;
}
// 输出*
if (j >= i && j-i < m) return 1;
return 0;
}
int main() {
int m, n;
scanf("%d%d", &m, &n);
int m1 = n-m-1;
int len = m*2+m1;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= len; j++) {
if (go(i, j, m, n)) {
printf("*");
} else {
printf(".");
}
}
puts("");
}
return 0;
}