题目:
对于输入的整数n(n>=0),打印2n+1行的由1~9的数字构造的数字沙漏。例如:
输入:5
输出:如下图所示:
#include<stdio.h>
#include<math.h>
int main ()
{
int i,j,n,k,x=1;
scanf("%d",&n);
for(i=-n;i<=n;i++)//外循环:共2n+1行
{
//内循环1:输出空格 0 1 2 3 4 5 4 3 2 1 0
for(j=1;j<=n-abs(i);j++)
{
printf(" ");
}
//内循环2:循环输出数字1-9,每行数字数:11 9 7 5 3 1 3 5 7 9 11
for(k=1;k<=abs(i)*2+1;k++)
{
if(x%10==0)
{
x=1;
printf("1");
}
else
{
printf("%d",x);
}
x++;
}
printf("\n");
}
return 0;
}
PS:
这个题非常好,而且这种解法也很巧妙,希望大家牢牢掌握!!!
答案来源:【经典题目——图形】2、数字沙漏