版权声明:转载请注明出处:https://blog.csdn.net/qq1013459920 https://blog.csdn.net/qq1013459920/article/details/88055481
历届试题 打印十字图
分析如下:
AC Code:
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iostream>
using namespace std;
typedef long long ll;
#define lowbit(x) x & -x;
const static int MAX_N = 1e6 + 5;
int main() {
int n;
while (scanf("%d", &n) != EOF) {
int len = 5 + 4 * n; //宽、高
printf("..");
for (int i = 3; i <= len - 2; i++) {
putchar('$');
}
printf("..\n");
printf("..$");
for (int i = 4; i <= len - 3; i++) {
putchar('.');
}
printf("$..\n");
for (int k = 0; k < n; k++) {
for (int sign = 0; sign < k; sign++) {
printf("$.");
}
printf("$$$.");
for (int j = 0; j < len - 8 - 4 * k; j++) { //中间补$
putchar('$');
}
printf(".$$$");
for (int sign = 0; sign < k; sign++) {
printf(".$");
}
putchar('\n');
for (int sign = 0; sign < k; sign++) {
printf("$.");
}
printf("$...$");
if (k == n - 1) {
printf("...$");
}
else {
for (int j = 0; j < len - 10 - 4 * k; j++) {//中间补.
putchar('.');
}
printf("$...$");
}
for (int sign = 0; sign < k; sign++) {
printf(".$");
}
putchar('\n');
}
for (int k = 1; k <= n; k++) {
printf("$.");
}
printf("$$$$$");
for (int k = 1; k <= n; k++) {
printf(".$");
}
putchar('\n');
for (int k = n - 1; k >= 0; k--) { //对称图案
for (int sign = 0; sign < k; sign++) {
printf("$.");
}
printf("$...$");
if (k == n - 1) {//靠近中间行的特殊处理
printf("...$");
}
else {
for (int j = 0; j < len - 10 - 4 * k; j++) {
putchar('.');
}
printf("$...$");
}
for (int sign = 0; sign < k; sign++) {
printf(".$");
}
putchar('\n');
for (int sign = 0; sign < k; sign++) {
printf("$.");
}
printf("$$$.");
for (int j = 0; j < len - 8 - 4 * k; j++) {
putchar('$');
}
printf(".$$$");
for (int sign = 0; sign < k; sign++) {
printf(".$");
}
putchar('\n');
}
printf("..$");
for (int i = 4; i <= len - 3; i++) {
putchar('.');
}
printf("$..\n");
printf("..");
for (int i = 3; i <= len - 2; i++) {
putchar('$');
}
printf("..\n");
}
return 0;
}