for的循环嵌套算各位数之和为7为什么运行不了

我觉得我这个代码没有问题但是结果就是循环不能输出结果是为什么啊究竟

img

img

主要原因是你在第二个for循环判断区间的每一个数的时候一些条件选择的不对,如要选择i的值备份j来遍历每一个数是否各位数为7,
选择i的话在for进行数字自除操作会影外层for循环的执行,然后for循环的结束条件也要稍微改下,修改了一下,如下:


#include <iostream>
#include <iomanip>
using namespace std;

int main(void){
    
    int n,m,num,sum,i,j;
    cout<<"请按从小到大的顺序输入两个正整数:"<<endl;
    cin>>m>>n;
    cout<<m<<"到"<<n<<"之间数字之和为7的数有"<<endl;
    
    sum=0;
    int k=0;
    
    for(i=m;i<=n;i++){
        
        j=i;  //测试区间的每一个数 
        for(sum=0;j!=0;){
            num=j%10;   //获取j的个位 
            sum=sum+num;  //把j的个位数读入sum 
            j=j/10;   //让j除以10,以便下一次获取j的后面位上的数 
            
        }
        if(sum==7){  //打印结果 
            cout<<i<<"\t";
            k++;
            if(k%5==0){
                cout<<endl;
            }
        }
                
        
    } 
    
    return 0;
}