那个达人帮我看看? 编译没有问题 运行出错-应用程序发生异常。。
// 目的 求和: 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]]
----------------解决方案--------------------------------------------------------
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# 的帖子
你误会了,我的意思是叫你加上那句,可以看出那个循环是个死循环,而不是说加上之后就对了。 ----------------解决方案--------------------------------------------------------