题目
输入 n 的值,输出如下例( n=4 )所示的数字菱形。
4
434
43234
4321234
43234
434
4
解答
#include <stdio.h>
int main(void)
{
int n,hang=1,wei,num;
scanf("%d", &n);
while (hang <=n)
{
wei = 1;
while (wei <= n - hang)
{
printf(" ");
wei = wei + 1;
}
num = n;
while (wei-n+hang <= hang)
{
printf("%-2d", num);
wei = wei + 1;
num = num - 1;
}
num = num + 2;
while (wei - n + hang - hang <= hang - 1)
{
printf("%-2d", num);
wei = wei + 1;
num = num + 1;
}
while (wei - n + hang - hang - hang + 1 <= n - hang)
{
if (wei == 2 * n - 1) printf("\n");
wei = wei + 1;
}
hang = hang + 1;
}
printf("\n");
hang = hang - 2;
while (hang >=1)
{
wei = 1;
while (wei <= n - hang)
{
printf(" ");
wei = wei + 1;
}
num = n;
while (wei - n + hang <= hang)
{
printf("%-2d", num);
wei = wei + 1;
num = num - 1;
}
num = num + 2;
while (wei - n + hang - hang <= hang - 1)
{
printf("%-2d", num);
wei = wei + 1;
num = num + 1;
}
while (wei - n + hang - hang - hang + 1 <= n - hang)
{
if (wei == 2 * n - 1) printf("\n");
wei = wei + 1;
}
hang = hang - 1;
}
return 0;
}
运行示例
评价
设计这题的也是个人才,视觉效果拉满。这个代码长是长了点,但是自以为逻辑还算清楚。美中不足的是两次大循环之间的printf("\n")是Debug的时候打补丁打上去的,一时想不明白为什么上个循环在结束的时候没有换行。