#include<bits/stdc++.h> using namespace std; int main(){ int n,flag=0,t; cin>>n; for(int i=1;i<=n;i++){ if(i%4==0) continue; t=i; while(t){ if(t%10==4){ flag=1; } t=t/10; } if(flag==1){ flag=0; continue; } cout<<i<<endl; } return 0; } 第一次错在while里面的用的也是i,在i/10的过程中改变了变量i的值导致循环无限循环。 第二个错误在while循环条件中用t/10判断的话会导致少判断一位