小程序

改变矩阵中心及四角

#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("%4d",a[i][j]);
  printf("/n");
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值