C:for循环有两个嵌套的for循环,在第一个循环后停止工作

C:for循环有两个嵌套的for循环,在第一个循环后停止工作,c,for-loop,C,For Loop,有人能帮我弄清楚为什么在第一个循环之后,带有变量v的for循环没有执行吗 #include <stdio.h> #include <stdlib.h> int main() { int x[100],n,h,s,v,k,l; s=0; scanf("%d",&n); h=n; for(int j=0;j<n;j++) scanf("%d",&x[j]); for(v=0;v<n;

有人能帮我弄清楚为什么在第一个循环之后,带有变量v的for循环没有执行吗

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int x[100],n,h,s,v,k,l;
    s=0;
    scanf("%d",&n);
    h=n;
    for(int j=0;j<n;j++)
        scanf("%d",&x[j]);
    for(v=0;v<n;v++)
    {
        for(k=0;k<n;k++)
            if(h%x[k]==0) x[k]=0;
        for(l=0;l<n;l++)
            if(x[l]==0) h--;
    }
    for(int m=0;m<n;m++)
        s=s+x[m];
    printf("%d",s);
    return 0;
}
#包括
#包括
int main()
{
int x[100],n,h,s,v,k,l;
s=0;
scanf(“%d”和“&n”);
h=n;
对于(int j=0;j关于:

if(h%x[k]==0) x[k]=0;
模运算符
%
是一种“除以然后返回余数”运算


所以当
x[k]的内容
是否为零发生“被零除”异常,程序崩溃。

为什么不使用调试器逐步检查代码,自己找出答案?甚至是基本的调试打印语句?在诉诸堆栈溢出之前,您可以做更多的事情。如果您真的需要进一步的帮助,请提供确切的输入、预期的结果和结果实际结果。
scanf(“%d”和&n);
-检查
scanf
中的返回值,然后打印
n
的值。在for循环的内容周围放上大括号“刚停止”是什么意思?是否有任何错误消息?您的
printf
是无条件的。因此,除非程序崩溃,否则应该打印一些内容。那么您以何种方式确定程序“刚刚停止”?如果
x[k]
已经为零,则不需要进行除法。