首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

大家帮忙看下这个程序代码怎么回事

2013-11-08 
大家帮忙看下这个程序代码咋回事数字魔方#include stdio.hint main (){int a[11][11],i,j,M,X,Yprintf(

大家帮忙看下这个程序代码咋回事
数字魔方
#include <stdio.h>
int main ()
{
    int a[11][11],i,j,M,X,Y;
    printf("M=");
    scanf("%d",&M);
    if (M%2==0)
    printf("error\n");
    else
    {
          a[M/2+1][0]=1;
          for(i=1;i<=M*M;i++)
          {
  if(Y==-1)
          Y=M-1;
   if(X==M)
         X=0;
 a[X][Y]=i;
if(i%M==0)
X++;
else
 {
 X--;
 Y++;
 }
}
for(i=1;i<M;i++)
{for(j=1;j<M;j++)
printf("|\n");
printf("%d",a[i][j]);
printf("\n");
}
    }
    return 0;
}
[解决办法]
问问题:
首先把你代码的目的说下,
然后把你思路说下,
再把你错误的地方说出来。


[解决办法]
 The variable 'Y' is being used without being initialized.
你这个你没初始化 你又没扶植
直接和-1去比啊

 scanf("%d",&M);
     if (M%2==0)
     printf("error\n");
     else
     {
           a[M/2+1][0]=1;
}
 
还有你这个M不限定多少啊 你就敢  a[M/2+1][0]=1;
这个M要是超级大 不一下就死了
[解决办法]

引用:
数字魔方
#include <stdio.h>
int main ()
{
    int a[11][11],i,j,M,X,Y;
X = -1;
Y = -1;
    printf("M=");
    scanf("%d",&M);
    if (M%2==0)
    printf("error\n");
    else
    {
          a[M/2+1][0]=1;
          for(i=1;i<=M*M;i++)
          {
  if(Y==-1)
          Y=M-1;
   if(X==M)
         X=0;
 a[X][Y]=i;
if(i%M==0)
X++;
else
 {
 X--;
 Y++;
 }
}
for(i=1;i<M;i++)
{for(j=1;j<M;j++)
printf("
[解决办法]
\n");
printf("%d",a[i][j]);
printf("\n");
}
    }
    return 0;
}

加上
X = -1;
Y = -1;
剩下的就是你想完成东西的逻辑问题了 问题不明 推理你要解决的是什么问题是要费脑筋的 
[解决办法]
引用:
Quote: 引用:

 The variable 'Y' is being used without being initialized.
你这个你没初始化 你又没扶植
直接和-1去比啊

 scanf("%d",&M);
     if (M%2==0)
     printf("error\n");
     else
     {
           a[M/2+1][0]=1;
}
 
还有你这个M不限定多少啊 你就敢  a[M/2+1][0]=1;
这个M要是超级大 不一下就死了


引用:
 The variable 'Y' is being used without being initialized.
你这个你没初始化 你又没扶植
直接和-1去比啊

 scanf("%d",&M);
     if (M%2==0)
     printf("error\n");
     else
     {
           a[M/2+1][0]=1;
}
 
还有你这个M不限定多少啊 你就敢  a[M/2+1][0]=1;
这个M要是超级大 不一下就死了




输入m的值,怎么限定


scanf("%d",&M);
      if (M%2==0)
      printf("error\n");
      else
      {
         a[M/2+1][0]=1;
      }
俩种方法 你判断下M的值不就得了 
例如这么写 代码我没测试过 但是逻辑方法是对的

#define MAX_SIZE 10
int a[MAX_SIZE][2];
M初始化
  scanf("%d",&M);


while(M > MAX_SIZE *2){
   scanf("%d",&M);
}
      if (M%2==0)
      printf("error\n");
      else
      {
         a[M/2+1][0]=1;
      }

 第二种直接保护起来 防止数组越界

#include<assert.h>

assert(0 <= idx && idx < sizeof(a) /sizeof(a[0]));
a[idx] 就是安全的  
 
[解决办法]
我只想说,你的源程序中 X 和 Y 的值确定了,你没确定并且都不知道 X 和 Y 的值是什么,你还拿两个数来相等,我把改过你的源代码给你看看,结果都出来了:
大家帮忙看下这个程序代码怎么回事

热点排行