2 maomingtangtangzhu maomingtangtangzhu 于 2014.12.18 13:32 提问

为什么我的这个c程序会无法启动,拒绝访问,以前出错都可以按提示修改的

#include"stdio.h"
int main()
{
int m, n, i;
int a[20] = { 2, 3 };
for (m = 1; m <= 19; m++)
{
for (n = a[m] + 1;; n++)
{
int c = 1;
for (i = 0; i <= m&&c != 0; i++)
{
if (n%a[i] == 0) c = 0;
if (i = m)
{
a[m + 1] = n;
printf("%d", a[m + 1]);
}
}
}
}
return 0;
}

4个回答

save4me
save4me   Ds   Rxr 2014.12.18 13:37

用你的代码在Dev C++编译,可以执行的,只不过我把#include"stdio.h"该改成了#include< stdio.h>

maomingtangtangzhu
maomingtangtangzhu 回复save4me: 嗯,我修改了几次后成功了,原来那个好多问题,谢谢啊
接近 3 年之前 回复
save4me
save4me 我觉得不是你想要的结果,因为现在程序一直输出,刷屏一样的。就像你说的,第二个for没有判断停止的条件。你的程序是想实现什么,然后看看怎么修改。
接近 3 年之前 回复
maomingtangtangzhu
maomingtangtangzhu 可以把结果截图给我吗?我看是否得到我要的结果,那个双引号不会有什么问题吧
接近 3 年之前 回复
u011767611
u011767611   2014.12.18 13:44
if(i=m)

是什么意思,我想反问你?
你是想判断他们相等,还是m赋值给i是否成功!

maomingtangtangzhu
maomingtangtangzhu 额,写错了,是判断相等,我的第二个for没有结束语句也是个问题,但我还是奇怪问什么不提示错误处,而是直接无法执行
接近 3 年之前 回复
nanjian011
nanjian011   2014.12.18 14:47

应该问题不大,你是用什么编译器没办法运行,还是没办法编译

maomingtangtangzhu
maomingtangtangzhu 已经修改成功了,之前调试时会弹出无法执行等字眼,我也不知道是什么意思,之前出错都不是那样的,谢谢!
接近 3 年之前 回复
u011767611
u011767611   2014.12.18 18:02

我不知道你试图写这段代码做什么,但是我给你修改后如下:
第一:你出现无法运行,是因为你通过下表i访问数组a时,

//if (n % a[i] == 0) 

这句话本身没什么问题,但是当他试图遇到i>=2时
你的数组a[2]没有初始化,所以会出错。

#include <stdio.h>
#define MAX_N 100
int main()
{
    int m, n, i;
    int a[20] = { 2, 3 };
    for (m = 1; m <= 19; m++)
    {
        for (n = a[m] + 1;n<MAX_N; n++)
        {
            int c = 1;
            for (i = 0; i <= m && c != 0; i++)
            {
                /*Yur are just init the array with a[0]=2,a[1]=3*/
                 /*You try to call a uninit array ..
                  *if you wanna do it with 'i' as index
                  please make sure you a[index] have init first
                  */
                //if (n % a[i] == 0) {
                if (n % a[0] == 0) {
                    c = 0;
                }
                if (i == m)
                {
                    a[m + 1] = n;
                    printf("%d", a[m + 1]);
                }

            }

        }
    }
    return 0;
}

代码的注释,我只能用简单而且有可能有大量语法错误的英文写。
不过这里我的中文说明,希望我能够说得清楚。
希望能帮到你!

maomingtangtangzhu
maomingtangtangzhu 回复u011767611: 好的,我是初学者,能在这里找到帮忙的人真好,最近才发现这么好的地方,感谢你们这些好心人士!
接近 3 年之前 回复
u011767611
u011767611 恩恩!有什么问题可以下次再交流(记住写清楚你的目的,我们才好帮到你哦!)加油!
接近 3 年之前 回复
maomingtangtangzhu
maomingtangtangzhu 很感谢啊!我修改成功了,我是想编程寻找素数(自己设计的方法),修改后的代码如下#include"stdio.h" int main() { int m, n, i,z; int a[20] = { 2, 3 };/*假设已知最小两个素数,然后递推几个*/ for (m = 1; m <= 18; m++)/*m作为数组下标*/ { z = 0; for (n = a[m] + 1; z != 1; n++)/*寻找紧邻a【m】的下一个素数*/ { int c = 1; for (i = 0; i <= m&&c != 0; i++) { if (n%a[i] == 0) c = 0; if (i == m) { a[m + 1] = n; printf("%d ", a[m + 1]); z = 1; } } } } return 0; }
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片