PetterZhukov @ 2020-08-22 23:23:21
这是代码
#include <stdio.h>
int main()
{
float k;
int t=0,k1;
scanf("%f",&k);
if(k-(int)k>0)
while(k-(int)k>0)
{
k*=10.0;
t++;
}
k1=k;
int count=0;
while(k1>0)
{
printf("%d",k1%10);
k1/=10;
count++;
if(count==t) printf(".");
}
printf("\n");
return 0;
}
比如输入132.456,我单步调试看到k被存为123.45601,最后多出来了01导致失败
所以float还有救吗(字符串和int真香)
by Spasmodic @ 2020-08-22 23:26:08
@PetterZhukov double 学习一下?
by SHOJYS @ 2020-08-23 00:46:32
@PetterZhukov double精度比float高,试试用double
输入输出double是%lf
by skye_wang @ 2020-08-23 07:54:30
题目上说:输入一个不小于 100 且小于 1000,同时包括小数点后一位的一个浮点数。 那我们就可以认为它是 三位整数+小数点+一位整数 那就可以分别翻转。
by skye_wang @ 2020-08-23 07:56:48
代码如下(AC):
#include <bits/stdc++.h>
using namespace std;
int a, b;
char c;
int a1, a2, a3;
int main(){
cin >> a >> c >> b;
a1 = a / 100 % 10;
a2 = a / 10 % 10;
a3 = a / 1 % 10;
a = a3 * 100 + a2 * 10 + a1;
cout << b << c << a;
return 0;
}
by PetterZhukov @ 2020-08-23 15:40:22
@sky_wang int我了解,谢了
by PetterZhukov @ 2020-08-23 15:44:30
@SHOJYS 我用cb编译运行得出了错误答案,但是用上述代码直接跑洛谷成功了……可能是ide不同吧 多谢啦