搜索
首页 教育/科学 学习帮助

1到25排成方阵

1到25排成方阵,横竖对角相加等于65,用C/C 实现,敬请各位大侠帮忙,小生多谢啦!

全部回答

2004-12-28

84 0
    任一阶幻方: #include #include void swap(int *a,int *b) { int t; t=*a; *a=*b; *b=t; } void hf1(int n,int *p) { int m=1,i,j,k,l; for(i=0;in*n) break; k=i-1; l=j+1; if(k==-1) k=n-1; if(l==n) l=0; if(*(p+k*n+l)!=0){ i++; continue; } i=k; j=l; } } void hf2(int n,int *p) { int i,j,*q; q=malloc(n*n/2); hf1(n/2,q); for(i=0;i=n-(n-4)/4;j--) swap(p+i*n+j,p+(i+n/2)*n+j); } swap(p+(n/2-1)/2*n,p+(3*n/2-1)/2*n); swap(p+(n/2-1)/2*n+(n/2-1)/2,p+(3*n/2-1)/2*n+(n/2-1)/2); } void hf3(int n,int *p) { int i,j,k,m=1; for(i=0;i=n/2;i++,j--){ if(i==n) i=0; swap(p+i*n+j,p+(n-1-i)*n+n-1-j); } } } void main() { int i,j,n,*p; printf("Enter n:"); scanf("%d",&n); p=malloc(2*n*n); if(n%2!=0) hf1(n,p); else if(n%4!=0) hf2(n,p); else hf3(n,p); for(i=0;i<n;i++){ for(j=0;j<n;j++) printf("%-4d",*(p+i*n+j)); printf("\n\n"); } }。
    。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

教育/科学
学习帮助
院校信息
升学入学
理工学科
出国/留学
职业教育
人文学科
外语学习
K12
学习帮助
学习帮助
举报
举报原因(必选):
取消确定举报