for循环中While循环的代码说明

Code explanation for a While Loop within a For Loop

本文关键字:循环 代码 说明 While for      更新时间:2023-10-16

有人能向我解释一下,如果您输入以下值:5、222、2043、29、2、20035,为什么下面程序的输出是22222吗?我正试图在纸上解决它,但我就是达不到这个结果。

#include <iostream>
using namespace std;
int n=0;
int x=0;
int s=0;
int i=1;

int main() {
    cin >> n;
    for(i=1; i<=n; i++) {
        cin >> x;
        int nr=1;
        while(x>9) {
            nr=nr*10;
            x=x/10;
        }
        s=s+x*nr;
    }
    cout << s;
    return 0;
}

while循环每次将x除以10。由于您处理的是整数,所以只需将十进制数字1向右移动:7234 -> 723。它一直这样做,直到它小于10,或者换句话说,还有一个(第一个)数字:7。然后再乘以10^(乘以10):7000。
这意味着,for循环中的white代码使每个x中除前几位外的所有数字都为零。因此,最终您将获得:200 + 2000 + 20 + 2 + 20000