有人能帮我弄清楚为什么带有变量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]
的内容为零时,会发生"除以零"异常,程序崩溃。