求解决“统计能整除N的数字”代码含0时的浮点异常问题
解决统计能整除N的数字个数时的除0错误
你的代码触发Floating-point exception (SIGFPE)错误的核心原因是:当输入数字包含0数位时,循环中会取出m=0,此时执行z%m相当于整数除以0,这是C++中未定义的非法操作,直接引发了异常。
解决方案
在判断整除性之前,先检查当前取出的数位m是否为0,如果是0就跳过该数位的判断(0不能作为除数,且0无法整除任何非零数,不符合统计要求)。
修改后的代码
#include<bits/stdc++.h> using namespace std; int main() { int n, m, z; cout<<"enter n: "; cin>>n; z = n; int count = 0; while(n > 0){ m = n % 10; // 先排除0的情况,再判断整除性 if(m != 0 && z % m == 0){ count++; } n = n / 10; } cout<<count; }
逻辑说明
以输入10为例:循环会取出数位1和0,1能整除10,计数加1;0被前置判断跳过,最终输出1,符合预期逻辑。
内容的提问来源于stack exchange,提问作者Nazrul Hoda
相关产品推荐
相关产品推荐

