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



有人能帮我弄清楚为什么带有变量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 的第一个循环后停止

关于:

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

模运算符%是"除以然后返回余数"运算。

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

最新更新