80分求助

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

0Aurora0 @ 2022-04-06 17:01:11

#include<stdio.h>
int main(void)
{
    int n;
    int s=0;
    float num;
    scanf("%.1f",&num);
    n=(int)(num*10);
    while(n!=0)
    {
        s=s*10+n%10;
        n=(int)(n/10);
    }
    printf("%.3f\n",(float)(s/1000));
    return 0;
}

by Liking_Cpp_In_Luogu @ 2022-04-06 17:05:38

@0Aurora0 这题翻转字符串不就完了。。。思路要灵活点


by fly_boy @ 2022-04-13 01:37:15

本人的题解与楼主的类似,都是利用数字计算的特性实现了数字反转,不过个人的题解变量设置的更为复杂了。以下是对楼主代码的修改(请对照注释的位置):

#include <stdio.h>
int main(void)
{
    int n;
    int s = 0;
    float num;
    scanf("%f", &num); // 修改1
    n = (int)(num * 10);
    while (n != 0)
    {
        s = s * 10 + n % 10;
        n = (int)(n / 10);
    }
    printf("%.3f\n", (float)s / 1000); // 修改2
    return 0;
}

经测试,代码可满分通过。


by fly_boy @ 2022-04-13 01:39:54

@0Aurora0 主要是你的输入格式和强制转换的顺序不对


by 0Aurora0 @ 2022-04-17 23:01:46

@fly_boy 谢谢


|