HarryZhang @ 2020-08-12 22:08:08
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float a,yx,xx,b;
int yz,xz,h,t,o;
cin>>a;
yz=floor(a);
yx=a-yz;
xz=yx*10;
h=yz/100;
t=(yz%100)/10;
o=yz%10;
xx=(h/1000.0)+(t/100.0)+(o/10.0);
b=xz+xx;
cout<<a<<" "<<yz<<" "<<yx<<" "<<b;
return 0;
}
本题使用以上算法时,部分情况答案正确。但当输入的a值为888.8时,输出的a,yz(原整数部分),yx(原小数部分),b(答案)却依次为888.8,888,0.799988,7.888。据此推测是“yx=a-yz”这一行出了问题。请问这是由于a(float)与yz(int)的数据类型不同吗?有解决方法吗?
by LucasXu80 @ 2020-08-12 22:09:40
啊这,这题正解是字符串反转啊(
by WanderingTrader @ 2020-08-12 22:14:41
@HarryZhang
by Terrible @ 2020-08-12 22:26:20
#include<cstdio>
int main()
{
char c[10],i=-1;
while((c[++i]=getchar())>32);
for(i--;i>=0;i--)putchar(c[i]);
}
有那么麻烦吗?- -
by BigBen2020 @ 2020-08-12 22:35:46
#include<cstdio>
using namespace std;
int main(){
int a,b,c,d;
scanf("%1d%1d%1d.%1d",&a,&b,&c,&d);
printf("%d.%d%d%d",d,c,b,a);
return 0;
}
一位位来就OK了
by 123456zmy @ 2020-08-13 08:15:33
#include<stdio.h>
int main(){char c=getchar();if(c>13)main(),putchar(c);}
by HarryZhang @ 2020-08-13 11:30:22
非常感谢各位的回答