面向对象程序设计语言里不推崇knocker的这种写法。可读性、可维护性都不强,不过在封装好的函数内部这样写,应该没问题。
成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
#include <stdio.h>
int fun(int n,int i,int j)
{
int tmp ;
tmp=(n-1-i>i)?i:n-1-i ;
tmp=(j>tmp)?tmp:j ;
tmp=(n-1-j>tmp)?tmp:n-1-j ;
i-=tmp ;
j-=tmp ;
if(i<=j)tmp=(n-tmp)*(tmp<<2)+i+j+1 ;
else tmp=(n-tmp)*(tmp<<2)+((n-1-(tmp<<1))<<2)-i-j+1 ;
return tmp ;
}
int main(void)
{
int n ;
while(1)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
printf("%3d ",fun(n,i,j));
}
printf("\n");
}
}
}
这个怎样?