总之就是两点的位置间的距离变成了横轴加纵轴的代数和,现只是初步记录下我的想法,到时候学到了更深层再来修修补补。
示范代码如下
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<iostream>
using namespace std;//单纯用abs的函数
int Wei(int x) {//计算位数
int a = 0, sum = 0;
while (x != 0) {
sum++;
x /= 10;
}
return sum;
}
void Kong(int x) {//空格
while (x--)//输出等同于位数的空格数,来使长方形像正方形
printf(" ");
}
int main()
{
int n;
printf("输入n:");//一共有2n+1行的长方形
scanf("%d", &n);
n = 2 * n + 1;
int x = Wei(n),x2=x;//正方形的边长的位数
int cx = n / 2, cy = n / 2;//坐标轴的中心
for (int i = 0; i < n; i++) {//横坐标
for (int j = 0; j < n; j++) {//纵坐标
x2 = x;
if (abs(i - cx) + abs(j - cy) <= n / 2) {//abs是绝对值的函数
printf("%-3d", n / 2 - abs(i - cx) - abs(j - cy) + 1);//如果距离中心的长度小于n
Kong(x - 2);
}
else {
printf("*");
Kong(x);
}
}
printf("\n");
}
return 0;
}