失败 编译器没出结果 什么情况啊

img

#include <iostream>
using namespace std;
int main() {
    int y;
    int n;
    for(n=1; n>0; n++) {
        int x=n/10;
        if(n%10==8) {
            int i;
            for(i=10; n/i>10; i*=10);
            y=n%10*i+x;
            if(y==4*n)
                break;
        }
    }
    cout<<n;
    return 0;
}

for (n=1;n>0;n++) ?

n初始值等于1。第一次循环,n%10的值为1,不等于8,所以第一个if条件不满足。到了第二个if这里,y没有初始值,跟4n肯定不相等。所以第一次循环下,两个if一个都没有执行,你的代码逻辑设计的有问题,自己回去思考以下。然后说一下为什么报错,是因为第一次循环时候n==1,因为不满足第一个if,所以你的y没有初始值。走到第二个If的时候,y里面的值是随机值,有可能是个超过8位(int为8位),所以判断y==4n的时候系统中断了