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 不好意思,才看见您的答复,多谢大神指教