-1

有人可以帮我弄清楚为什么带有变量 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;
}

编辑(这是下面评论的副本!)

输入是 10 1 2 3 4 5 6 7 8 9 10 预期结果是 24,但实际结果是什么都没有,因为程序只是在 v 的第一个循环后停止

4

1 回答 1

0

关于:

if(h%x[k]==0) x[k]=0;

模运算符%是“除以然后返回余数”操作。

因此,当 的内容x[k]为零时,会发生“除以零”异常并且程序崩溃。

于 2020-03-27T00:00:27.607 回答