思来想去,首先必须满足整数n为奇数这一条件,然后看循环控制条件是否满足abs(i)<=abs(j),分别作不同的输出.在Turbo C环境下调试, 琢磨了好一阵子,又通过了。现在给出这种方阵的一般算法如下:
#include
#include
void func(int n) /* n must be an odd number and n must be greater than zero*/
{ int i,j,temp;
temp=n/2+1;
for(i=-n/2;i<=n/2;i++)
{for(j=-n/2;j<=n/2;j++)
if(abs(i)>=abs(j))
printf("%3d",temp-abs(i));
else
printf("%3d",temp-abs(j));
printf("\n");
}
}
main()
{ int n;
printf("\nInput an integer number n:");
scanf("%d",&n);
func(n);
}
所以,在以后的学习过程中,碰到类似的要求打印具有“对称”性质的图案时,我们可以试着利用Abs()来解答,它能丰富我们编程的思路,达到意想不到的效果。(CSDN)
|