当前位置: 代码迷 >> C语言 >> 那个达人帮我看看? 编译没有问题 运行出错-应用程序发生异常。。
  详细解决方案

那个达人帮我看看? 编译没有问题 运行出错-应用程序发生异常。。

热度:269   发布时间:2008-04-11 11:49:35.0
那个达人帮我看看? 编译没有问题 运行出错-应用程序发生异常。。
// 目的 求和: 1到1000000 之间的尾数为7的素数和

#include<stdlib.h>
#include<stdio.h>
int main()
{
unsigned long a,i,j;
long sum;
long x[i];
for(a=7;a<=999997;a+=10)
{
  for(i=1;;i++)
  {
   if(a%2==0)
    if(a%3==0)
     if(a%5==0)
      if(a%7==0) break;
      else x[i]=a;
     else x[i]=a;   
    else x[i]=a;
   else x[i]=a;
  }
}
  for(j=1;j<=i-1;j++)
  sum=x[j]+x[j+1];
  //cout<<sum;
  printf("%d",&sum);
  system("pause");
return 0;
}      


编程工具用的是dev c++

[[it] 本帖最后由 长久不上线 于 2008-4-11 12:14 编辑 [/it]]
搜索更多相关的解决方案: 应用程序  素数  sum  else  编译  

----------------解决方案--------------------------------------------------------
for(i=1;;i++)
  {
   if(a%2==0)
    if(a%3==0)
     if(a%5==0)
      if(a%7==0) break;
      else x[i]=a;
     else x[i]=a;   
    else x[i]=a;
   else x[i]=a;
//printf("%d,",a); 在此加上这句,你运行一次,看看情况。
  }      //首先当a==7时,循环可不可以退出?

[[it] 本帖最后由 now 于 2008-4-11 13:40 编辑 [/it]]
----------------解决方案--------------------------------------------------------
我在VC6.0下编译有问题:
long x[i];//C语言规定定义数组不能用变量只能用常量
比如  long x[1000];  才是合法的!你直接long x[i];而且你又没有告诉编译器i到底等于多少,那在运行时程序就会给i“随便”分配一个值,出现错误是必然的!
还有,如果你不知道到底要多大的话,可以这样定义:
int i;
long *x;
x = new long[i];
这是合法的,但是这里的new是C++里面的语句,Dev C++应该支持吧
----------------解决方案--------------------------------------------------------
回复 3# 的帖子
这是C99新增的特性,可以使用变量;
----------------解决方案--------------------------------------------------------
多谢


我知道我的算法方面有问题
但是我想弄清楚

出错的原因  谢谢

[[it] 本帖最后由 长久不上线 于 2008-4-11 15:05 编辑 [/it]]
----------------解决方案--------------------------------------------------------
回复 2# 的帖子
加不加都一样
因为运行的时候  只能是这样  
如图
----------------解决方案--------------------------------------------------------
回复 6# 的帖子
你误会了,我的意思是叫你加上那句,可以看出那个循环是个死循环,而不是说加上之后就对了。
----------------解决方案--------------------------------------------------------
  相关解决方案