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的开始和结束。