求助:对小数点后是某些特定数字输出错误答案,请问问题在哪及如何修改?

P5705 【深基2.例7】数字反转

YoungK21 @ 2021-07-25 10:32:18

我代码的想法是对一个数,先逐位输入,再反过来一个一个数位输出。

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    float m=0;//输入
    int a=0,b=0,c=0,d=0;//四位
    cin>>m;
    a=m/100;
    b=(m-100*a)/10;
    c=m-100*a-10*b;
    d=10*(m-100*a-10*b-c);
    cout<<d<<"."<<c<<b<<a<<endl;
    return 0;
}

然后试了几个数 发现当原数小数点后是1,3,6,8时输出的数首位分别是0,2,5,7 小数点后是其他数貌似是正确的,请问代码问题出在哪里,如何解决?谢谢!


by wzmzmhk @ 2021-07-25 11:40:15

@YoungK21 变量c出了问题,如果是123.4,那么a=1,b=2,c=123.4-100*a-10*b=123.4-100-20=3.4但是c应该等于3


by 王治言123456 @ 2021-08-03 11:21:10

最简代码:

#include<bits/stdc++.h>
using namespace std;
string cin_a;
int main() 
{
    cin>>cin_a;
reverse(cin_a.begin(),cin_a.end());
    cout<<cin_a;
    return 0;
}

by 王治言123456 @ 2021-08-03 11:26:11

用reverse()函数即可。

//里面的cin_a.begin()和cin_a.end()是两个iterator(迭代器)类型的参数,返回cin_a的开始和结束。

|