修理奇怪的计算器,不用字符串网上抄的不要

计科专业的小明最近得到一个任务,去修理一台奇怪的计算器,这个计算器输出的结果是颠倒的,比如123它输出321,遇到小数点的时候,整数和小数部分分别是颠倒的,比如123.456显示成321.654,请编写一个程序,将输出的结果修正。
输入
首先输入一个整数N,然后输入N行,每一行是一个计算器的输出。
输出
依次输出每个值正确的值
输入示范
4
2.879
13410.41
2.0005
100
输出示范
2.978
1431.14
2.5
1

http://www.itdaan.com/blog/2005/04/26/a6b3b3c398bdaf35d5ef13cd92ddd34b.html

怎么就成了抄的,我自己写的啊,,为了避免小数的精度出现误差,还是用到了字符串

#include <string>
#include <stdio.h>
#include<math.h>
using namespace std;
int reversed(int n) {       //数字倒叙
    int y = 0;
    while (n) {
        y = y * 10 + n % 10;
        n /= 10;
    }
    return y;
}
int main() {
    double num;
    int n, integer/*整数部分*/, decimals = 0/*小数部分*/;
    string str;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%lf", &num);
        integer = int(num);
        str = to_string(num);                       //避免double的精度问题,还需要用到字符串    
        while (str[str.length() - 1] == '0')        //弹出末尾的0
            str.pop_back();
        if (str[str.length() - 1] == '.')           //字符最后一位是点,说明没有小数
            decimals = 0;
        else
            decimals = stoi(str.substr(str.find('.') + 1, string::npos));
        printf("%d", reversed(integer));
        if (decimals != 0)
            printf(".%d", reversed(decimals));
        printf("\n");
    }
    return 0;
}