| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2102 人关注过本帖
标题:C程序运行中途“停止”
只看楼主 加入收藏
RebelRebel
Rank: 1
等 级:新手上路
帖 子:19
专家分:7
注 册:2013-4-3
结帖率:80%
收藏
已结贴  问题点数:10 回复次数:6 
C程序运行中途“停止”
  VC环境下; 程序没报错,能运行,但运行到某个语句就“好像”不执行下面的语句了,前面的运行结果能正确输出,但后面的语句好像是被注释了一样。不用麻烦大家去细看我那无语的程序,只是想向大家请教一下这可能是什么原因?是我后面的语句编写的有问题,还是其它?
  程序摆上,供大家参考(我在上面标记了运行“停止”的位置);
程序代码:
#include <stdio.h>
#define N 4

 int main ()
{
    int i,j,k,a,sum,ca=1,cb=1,sa=0,sb=0;
    int A[N][N];
    for (i=0;i<N;i++)
    {
         for (j=0;j<N;j++)
          scanf("%d",&A[i][j]);
    }
    for (i=0;i<N;i++)
    {
         for (j=0;j<N;j++)
         printf("%4d",A[i][j]);
         printf("\n");
    }                             /*程序运行到这,并输出了相应的结果,但之后的运行结果就不出现了*/

    for (a=0;a<N;a++)
    {
        for (i=0;i<N;i++)
        {
           j=i+a;
           if (j<N)
               ca=ca*A[i][j];
           else
               while(i<N-1)
                   for (k=0;k<a;k++)
                       ca=ca*A[i][k];
        }
         sa+=ca;
    }
      
       for (a=0;a<N-1;a++)
       {
         for (i=0;i<4;i++)
         {
           j=N+a-i-1;
           if(j>=a)
               cb=cb*A[i][j];
           else
           {
               while (i<N-1)
                   for(k=a;k>=0;k--)
                       cb=cb*A[k][a-k];
           }
         }
              sb+=cb;
       }
      sum=sa+sb;
      printf("%d\n",sum);
      return 0;
}
搜索更多相关主题的帖子: 眼镜架 汽车 包邮 用品 
2013-04-10 09:25
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:3 
在你所谓的中断的地方后面设置断点。debug一下...   问题自然就清楚了

三十年河东,三十年河西,莫欺少年穷!
2013-04-10 10:04
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
猜测  数组下标越界

DO IT YOURSELF !
2013-04-10 10:07
y3765258
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:106
专家分:172
注 册:2013-4-9
收藏
得分:3 
看了下,问题很明显。第三个FOR循环中的  ca=ca&A[i][j];  语句中
j大于3了  所以下标越界,会报错的。

有问题一起探讨,一起进步。
2013-04-10 10:26
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:3 
for (a=0;a<N;a++)
     {
         for (i=0;i<N;i++)
         {
            j=i+a;
            if (j<N)
                ca=ca*A[i][j];
            else         //此处如果if不成立,即j>N,网下执行,你的j的范围就没有判断了,然后就数组就越界了,因为的的数组是A[4][4]的,j>4了
                while(i<N-1)
                    for (k=0;k<a;k++)
                        ca=ca*A[i][k];
         }
          sa+=ca;
     }

Maybe
2013-04-10 11:41
RebelRebel
Rank: 1
等 级:新手上路
帖 子:19
专家分:7
注 册:2013-4-3
收藏
得分:0 
回复 5楼 邓士林
先谢谢哦,试着修改了一下,确实是这样 !
但我还是有点不明白;
我后面的语句中没用到含有j为下标的数组A啊,下一个for循环对j也重新赋值了。为什么为出现越界呢?
               else         //此处如果if不成立,即j>N,网下执行,你的j的范围就没有判断了,然后就数组就越界了,因为的的数组是A[4][4]的,j>4了
               
while(i<N-1)
                    for (k=0;k<a;k++)
                        ca=ca*A[i][k];
         }
          sa+=ca;
     }

青春,应该是奋斗的,而不是娱乐的。。。。。。。。
2013-04-10 18:30
weikeli19
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2013-2-25
收藏
得分:0 
姑娘 计算机中有很多未解之谜
2019-12-03 19:58
快速回复:C程序运行中途“停止”
数据加载中...
 
   



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

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