C 未执行主方法

C 未执行主方法,c,C,这是一个用埃拉托斯烯筛寻找素数的程序。程序正在编译,但在执行时,它会变得无响应。不会执行print语句本身。我能知道我哪里出错了吗 #include<stdio.h> int main() { printf("Enter the range"); int n,i; scanf("%d",&n); int j; int a[--n]; for(i=0;i<n;i++) a[i]=i+2; fo

这是一个用埃拉托斯烯筛寻找素数的程序。程序正在编译,但在执行时,它会变得无响应。不会执行print语句本身。我能知道我哪里出错了吗

#include<stdio.h>
int main()
{
    printf("Enter the range");
    int n,i;
    scanf("%d",&n);
    int j;
    int a[--n];
    for(i=0;i<n;i++)
            a[i]=i+2;
    for(i=0;i<n;i++)
            if(a[i])
            {
                    printf("%d",a[i]);
                    for(j=2;(i*j)<n;j++)
                            a[i*j]=0;
            }
    return 0;
}
#包括
int main()
{
printf(“输入范围”);
int n,i;
scanf(“%d”和“&n”);
int j;
int a[--n];

对于(i=0;i您的
printf
调用可能正在被缓冲,这意味着在缓冲区填满或遇到换行符之前,它可能不会被实际打印


尝试在字符串末尾添加一个换行符,或者调用
fprintf(stderr,…)
(未缓冲)。

您的程序第一次在循环中无限循环

当i=0时,此循环永远不会结束:

for(j=2;(i*j)<n;j++)

for(j=2;(i*j)“Eratosthenes的筛子”?那是什么?调试器很棒!!试着在程序中键入一个数字,然后点击回车键。别忘了用换行符结束你想看到的输出。@ShivanRaptor:你是在开玩笑,还是在抱怨大写?还是…真的?@ShivanRaptor这是一个。