改变矩阵中心及四角
#include<stdio.h>#include<malloc.h>
void Change(int **p,int n){ int temp; if(p[0][0]<p[0][1]) { temp=p[n/2][n/2]; p[n/2][n/2]=p[n-1][n-1]; p[n-1][n-1]=temp;
temp=p[0][n-1]; p[0][n-1]=p[0][1]; p[0][1]=temp;
temp=p[n-1][0]; p[n-1][0]=p[0][2]; p[0][2]=temp;
temp=p[n-1][n-1]; p[n-1][n-1]=p[0][3]; p[0][3]=temp; } else { temp=p[n/2][n/2]; p[n/2][n/2]=p[0][0]; p[0][0]=temp; temp=p[0][0]; p[0][0]=p[n-1][n-1]; p[n-1][n-1]=temp;
temp=p[0][n-1]; p[0][n-1]=p[n-1][n-2]; p[n-1][n-2]=temp; temp=p[n-1][0]; p[n-1][0]=p[n-1][n-3]; p[n-1][n-3]=temp;
temp=p[n-1][n-1]; p[n-1][n-1]=p[n-1][n-4]; p[n-1][n-4]=temp; }}
void main(){ int i,j; int c1,c2,c3; int **p; printf("1.正序矩阵 2.反序矩阵/n请选择正序或反序矩阵:"); scanf("%d",&c1); printf("输入矩阵开始值:"); scanf("%d",&c2); printf("输入矩阵阶数:"); scanf("%d",&c3); if((p=(int**)malloc(c3*sizeof(int)))==NULL) printf("申请内存失败!"); for(i=0;i<c3;i++) { if((p[i]=(int*)malloc(c3*sizeof(int)))==NULL) printf("申请内存失败!"); }
printf("原矩阵为:/n"); if(c1==1) { for(i=0;i<c3;i++) { for(j=0;j<c3;j++) { p[i][j]=c2; printf("%-4d",p[i][j]); c2++; } printf("/n"); } } else { c2=c2+c3*c3; for(i=0;i<c3;i++) { for(j=0;j<c3;j++) { p[i][j]=c2-1; printf("%-4d",p[i][j]); c2--; } printf("/n"); } }
Change(p,c3);
printf("修改后的矩阵为:/n"); for(i=0;i<c3;i++) { for(j=0;j<c3;j++) printf("%-4d",p[i][j]); printf("/n"); }}
魔方阵
#include <stdio.h>#define N 16 //这里可以修改N的值void main(){ int i,j,k,p,m,n,a[N][N]={0}; p=1; while(p==1) { printf("Enter n(1~%d):",N-1); scanf("%d",&n); if((n!=0)&&(n<N)&&(n%2!=0)) p=0; } i=n+1; j=n/2+1; a[1][j]=1; for(k=2;k<=n*n;k++) { i=i-1; j=j+1; if((i<1)&&(j>n)) { i=i+2;j=j-1; } else { if(i<1) i=n; if(j>n) j=1; } if(a[i][j]==0) a[i][j]=k; else { i=i+2; j=j-1; a[i][j]=k; } } for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("M",a[i][j]); printf("/n"); }}