| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 358 人关注过本帖
标题:问一下哈,小问题
只看楼主 加入收藏
张学平
Rank: 2
等 级:论坛游民
帖 子:26
专家分:13
注 册:2013-11-20
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:4 
问一下哈,小问题
要求,建立并输出魔方阵,大小自定。运行了program,在合法输入范围没啥问题,但是越了界(出界的奇数)却没有像预想的让你重新输入,而是崩溃。不知道为啥,求问
#include <stdio.h>
int main(void)
{
  int a[16][16];
  int i,j,k,p,m,n;
  /*初始化*/
  p=1;//
   while(p==1)//p的作用是在输入条件不满足时重新输入的开关
   {printf("请输入n.(0<n<=15,n是奇数)\n");
       scanf("%d",&n);//确定魔方阵的大小
       if((n!=0)&&(n<=15)&&(n%2!=0))//判断条件是否满足
        {printf("矩阵阶数是:%d\n",n);
         p=0;}//满足条件则终止循环
       for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
         a[i][j]=0;//给二维数组赋值
   }
   /*建立魔方阵*/
   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("%5d",a[i][j]);
         printf("\n");}
}
搜索更多相关主题的帖子: include 开关 
2013-11-20 20:15
mmrx
Rank: 2
等 级:论坛游民
帖 子:42
专家分:71
注 册:2012-10-18
收藏
得分:20 
 if((n!=0)&&(n<=15)&&(n%2!=0))//判断条件是否满足
        {printf("矩阵阶数是:%d\n",n);
         p=0;}//满足条件则终止循环
 else continue;


没有continue,你输入了越界数字后,跳过if判断直接到数组赋值那块了。发生数组越界。
2013-11-20 20:41
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:0 
数组越界是运行时错误,直接崩溃而已,编译器不约束

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-11-20 21:18
张学平
Rank: 2
等 级:论坛游民
帖 子:26
专家分:13
注 册:2013-11-20
收藏
得分:0 
回复 2楼 mmrx
谢谢啊!
2013-11-21 08:33
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:0 

埋头做牛,抬头做人,低头做狗
2013-11-21 21:02
快速回复:问一下哈,小问题
数据加载中...
 
   



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

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