请问这道反置数题的代码如何理解呢?

img


#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
using namespace std;

int f(int n) {

    char s[20];
    itoa(n, s, 10);
    int len = strlen(s);
    for (int i = 0; i < len / 2; ++i) {
        char c = s[i];
        s[i] = s[len - 1 - i];
        s[len - 1 - i] = c;
    }
    return atoi(s);
}

int main() {
    //  fstream cin("a.txt");

    int a, b;
    cin >> a >> b;
    cout << f(f(a) + f(b)) << endl;

    return 0;
}

就是说先把传入的数字转化为字符串,然后再通过两两交换的方式将字符串逆置,最后将逆置后的新数字转化回整数

#include <stdio.h>
int rev(int n)
{
    int r = 0;
    while(n>0)
    {
        r = r*10+n%10;
        n/=10;
    }
    return r;
}
int main()
{
    int n,m,k;
    scanf("%d%d",&n,&m);
    k = rev(n)+rev(m);
    printf("%d",rev(k));
    return 0;    
}