题干
C++实现
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
void func(int n) {
char str[100] = {0};
int i;
//填充上半部分(包括中间的一行)
for(i = 0; i <= n; i++) {
int j,k;
memset(str,0,100);
for(j = 0; j<2*n-2*i; j++) {
str[j] = ' ';
}
for(k = 0; k<=i; k++) {
str[j] = '0' + k;
str[j+1] = ' ';
j = j + 2;
}
for(k = i-1; k>=0; k--) {
str[j] = '0' + k;
str[j+1] = ' ';
j = j + 2;
}
printf("%s\n",str);
}
//填充下半部分
for(i = n+1; i <= 2*n; i++) {
int j,k;
memset(str,0,100);
for(j = 0; j<2*i-2*n; j++) {
str[j] = ' ';
}
for(k = 0; k<=2*n-i; k++) {
str[j] = '0' + k;
str[j+1] = ' ';
j = j + 2;
}
for(k = 2*n-i-1; k>=0; k--) {
str[j] = '0' + k;
str[j+1] = ' ';
j = j + 2;
}
printf("%s\n",str);
}
}
int main() {
int n;
scanf("%d",&n);
func(n);
}