标题:请高手进来帮忙解决魔方矩阵的问题,谢谢了..
只看楼主
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
得分:0 
是这样的。你看楼上的“getchar();”这个必须要包含在头文件《include <conio.h>》里面。就是这样。如果还是有些不清楚 ,建议看看书吧。

~~我的明天我知道~~
2007-01-09 18:20
qleevv
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2006-10-17
得分:0 
以下是引用pinglideyu在2007-1-9 18:20:24的发言:
是这样的。你看楼上的“getchar();”这个必须要包含在头文件《include <conio.h>》里面。就是这样。如果还是有些不清楚 ,建议看看书吧。

不对把 getchar() 好象包含在#include "stdio.h"
MM 表欺负偶
偶是只菜菜鸟哦


其实9楼的兄弟你的程序写成这样
#include "stdio.h"
#define N 5
main()
{
int a[N][N]={0},i,j,x,y,cur_x,cur_y;
a[0][N/2]=1;
cur_x=0;cur_y=N/2;
for(i=2;i<=N*N;i++)
{
x=cur_x;y=cur_y;
cur_x==0?cur_x=N-1:cur_x--;
cur_y==0?cur_y=N-1:cur_y--;
if(a[cur_x][cur_y]!=0)
{
cur_x=(x+1)%N;cur_y=y;
a[cur_x][cur_y]=i;
}
else a[cur_x][cur_y]=i;
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%-4d",a[i][j]);
printf("\n");
}
}
旧好了么
加#include "conio.h"
clrscr();
编译会出错的.

[此贴子已经被作者于2007-1-9 18:46:08编辑过]

2007-01-09 18:30
csight
Rank: 1
等 级:新手上路
威 望:1
帖 子:293
专家分:0
注 册:2006-6-11
得分:0 
clrscr()表示清屏,需要头文件"conio.h"而已

头可断,发型不可乱;血可流,皮鞋不可不擦油;
2007-01-09 22:10
风无声
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-9-15
得分:0 
我给出c语言针对任意阶数的魔方矩阵程序(运行过的,绝对没问题),一般网上只有奇次的,这个可以针对任意数:
#include <stdio.h>
#include <math.h>
#define N 100  /*N可以改变*/
void main()
{
    int n,p=1;
    void jici(int n);
    void sibeishu(int n);
    void elseoushu(int n);
    printf("***说明(本程序用于输出任意数阶次的魔方矩阵,其行,列,对角线之和的均值相同。)\n");
    printf("         ***说明(最右边的,和最下边的用于统计每行,每列的元素之和 。)        \n\n");
    printf("         请输入一个要求阶次的魔方矩阵的边长(2~%d): ",N);
    while(p)
    {
       scanf("%d",&n);
       if((n>1)&&(n<=N))
            p=0;
    }
    if(fabs((n-1)%2)<1e-006)
        jici(n);
    else
        if(fabs((n%4))<1e-006)
        sibeishu(n);
    else
        elseoushu(n);
}

void jici(int n)
{
    int a[N][N]={0};
    int i,j,k,sum;
    i=0;
    j=(n-1)/2;
    a[0][j]=1;
    for(k=2;k<=n*n;k++)
    {
        i=i-1;
        j=j+1;
       if((i<0)&&(j>n-1))
       {
        i=i+2;j=j-1;
       }
       else
       {
           if(i<0) i=n-1;
           if(j>n-1) j=0;
       }
       if(a[i][j]==0) a[i][j]=k;
      else
      {
        i=i+2;
        j=j-1;
        a[i][j]=k;
      }
    }
      sum=0;
      for(i=0,j=0;i<n;i++,j++)
      {
          sum=sum+a[i][j];
      }
      a[n][n]=sum;
     for(i=0;i<n;i++)
     {
       sum=0;
       for(j=0;j<n;j++)
       sum=sum+a[i][j];
       a[i][n]=sum;
     }
     for(j=0;j<n;j++)
     {
       sum=0;
       for(i=0;i<n;i++)
           sum=sum+a[i][j];
           a[n][j]=sum;
     }
     for(i=0;i<n+1;i++)
     {
        for(j=0;j<n+1;j++)
            printf("%5d",a[i][j]);
            printf("\n\n");
     }
}
void sibeishu(int n)
{  
    int a[N][N]={0};
    int k,t,i,j,sum;
    k=1;
    for(i=0;i<n;i++)
       for(j=0;j<n;j++)
       {
          a[i][j]=k;
          k++;
       }
    for(i=0,j=0;i<n/2;i++,j++)
    {
        t=a[i][j];
        a[i][j]=a[n-1-i][n-1-j];
        a[n-1-i][n-1-j]=t;
    }
    for(i=0,j=n-1;i<n/2;i++,j--)
    {
        t=a[i][j];
        a[i][j]=a[n-1-i][n-1-j];
        a[n-1-i][n-1-j]=t;
    }
     sum=0;
      for(i=0,j=0;i<n;i++,j++)
      {
          sum=sum+a[i][j];
      }
      a[n][n]=sum;
     for(i=0;i<n;i++)
     {
       sum=0;
       for(j=0;j<n;j++)
       sum=sum+a[i][j];
       a[i][n]=sum;
     }
     for(j=0;j<n;j++)
     {
       sum=0;
       for(i=0;i<n;i++)
           sum=sum+a[i][j];
           a[n][j]=sum;
     }
     for(i=0;i<n+1;i++)
     {
        for(j=0;j<n+1;j++)
            printf("%5d",a[i][j]);
            printf("\n\n");
     }
}
void elseoushu(int n)
{
       int a[N][N]={0};
       int m,k,i,j,sum,u,t,h;
       m=n/2;
       i=0;
       j=(m-1)/2;
       a[0][j]=1;
       for(k=2;k<=m*m;k++)
       {
           i=i-1;
           j=j+1;
           if((i<0)&&(j>m-1))
           {
               i=i+2;j=j-1;
           }
           else
           {
               if(i<0) i=m-1;
               if(j>m-1) j=0;
           }
           if(a[i][j]==0) a[i][j]=k;
           else
           {
                 i=i+2;
                j=j-1;
                a[i][j]=k;
           }
       }
       i=0;
       j=(m-1)/2+m;
       a[i][j]=m*m*2+1;
       for(k=m*m*2+2;k<=m*3*m;k++)
       {
           i=i-1;
           j=j+1;
           if((i<0)&&(j>m*2-1))
           {
               i=i+2;
               j=j-1;
           }
           else
           {
               if(i<0) i=m-1;
               if(j>m*2-1) j=m;
           }
          if(a[i][j]==0) a[i][j]=k;
          else
          {
               i=i+2;
               j=j-1;
              a[i][j]=k;
          }
       }
       i=m;
       j=(m-1)/2;
       a[i][j]=m*m*3+1;
       for(k=m*m*3+2;k<=m*4*m;k++)
       {
           i=i-1;
           j=j+1;
           if((i<m)&&(j>m-1))
           {
            i=i+2;j=j-1;
           }
           else
           {
               if(i<m) i=m*2-1;
               if(j>m-1) j=0;
           }
          if(a[i][j]==0) a[i][j]=k;
          else
          {
              i=i+2;
              j=j-1;
              a[i][j]=k;
          }
       }
       i=m;
       j=(m-1)/2+m;
       a[i][j]=m*m+1;
       for(k=m*m+2;k<=2*m*m;k++)
       {
           i=i-1;
           j=j+1;
           if((i<m)&&(j>m-1+m))
           {
               i=i+2;
               j=j-1;
           }
           else
           {
                if(i<m) i=m*2-1;
                if(j>m*2-1) j=m;
           }
           if(a[i][j]==0) a[i][j]=k;
           else
           {
               i=i+2;
               j=j-1;
               a[i][j]=k;
           }
       }
       t=(n+2)/4;u=n/2;
       for(j=0;j<t-1;j++)
       for(i=0;i<m;i++)
       {
           h=a[i][j];
           a[i][j]=a[i+m][j];
           a[i+m][j]=h;
       }
       for(j=n-t+2;j<n;j++)
       for(i=0;i<m;i++)
       {
           h=a[i][j];
           a[i][j]=a[i+m][j];
           a[i+m][j]=h;
       }
       {
           h=a[t-1][0];
           a[t-1][0]=a[t+u-1][0];
           a[t+u-1][0]=h;
       }
       {
           h=a[t-1][t-1];
           a[t-1][t-1]=a[t+u-1][t-1];
           a[t+u-1][t-1]=h;
       }
      sum=0;
      for(i=0,j=0;i<n;i++,j++)
      {
          sum=sum+a[i][j];
      }
      a[n][n]=sum;
      for(i=0;i<n;i++)
      {
          sum=0;
          for(j=0;j<n;j++)
          sum=sum+a[i][j];
          a[i][n]=sum;
      }
      for(j=0;j<n;j++)
      {
          sum=0;
          for(i=0;i<n;i++)
           sum=sum+a[i][j];
           a[n][j]=sum;
      }
      for(i=0;i<n+1;i++)
      {
            for(j=0;j<n+1;j++)
            printf("%5d",a[i][j]);
            printf("\n\n");
      }
}


2011-09-24 11:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-114982-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.473662 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved