求大神解答……

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

J_Brendan @ 2021-08-23 22:21:03


#include <bits/stdc++.h>
using namespace std;
int main()
{
    float a,g,s,b,d,e;
    scanf("%f",&a);
    b=int(a)/100;
    s=int(a)/10%10;
    g=int(a)%10;
    d=a-b*100-s*10-g;
    e=int(d*10)+b/1000+s/100+g/10;
    printf("%.3f",e);
}
```cpp
    入门题数字反转为什么只得了80分呢?

by Joker_1212 @ 2021-08-30 15:44:50

@J_Brendan C++里double不是完全精准的,比如3.456存储后可能就会变成3.4555555...int强制类型转换后就会变成3.455,会导致错误。

这一题最好用字符串反转输出实现,不会出现精度问题。

附AC代码:

#include<bits/stdc++.h>  //万能头文件
using namespace std;

int main()
{
    char a[5];  //将每一位数字当做字符
    for (int i = 0; i < 5; ++i)
    {
        cin >> a[i];  //读取字符
    }
    for (int i = 4; i > -1; --i)
    {
        cout << a[i];  //逆序输出
    }
    cout << endl;

    return 0;  //完美结束
}

by J_Brendan @ 2021-08-30 17:42:46

@Joker_1212 不好意思,才看见您的答复,多谢大神指教


|