数字反转
前言
最近在洛谷刷题,这道数字反转,看题解,大部分利用数组字符串来做,由于是别人的代码,直接贴图如下:
但是总觉得与题目描述不符,,,面向结果编程。
以下是我的代码,仅供参考;
题目描述
输入一个不小于 100 100 100 且小于 1000 1000 1000,同时包括小数点后一位的一个浮点数,例如 123.4 123.4 123.4 ,要求把这个数字翻转过来,变成 4.321 4.321 4.321 并输出。
输入格式
一行一个浮点数
输出格式
一行一个浮点数
样例 #1
样例输入 #1
123.4
样例输出 #1
4.321
#include <stdio.h>
int main() {
float num;
scanf("%f", &num);
int integerPart = (int)num; // 提取整数部分
float decimalPart = num - integerPart; // 提取小数部分
float newintegerPart = decimalPart * 10.0; //!!!新整数部分;题设“包括小数点后一位的一个浮点数”
// 翻转整数部分
int reversedInteger = 0;
int count = 0; //记录整数位数
while (integerPart > 0) {
reversedInteger = reversedInteger * 10 + integerPart % 10;
integerPart /= 10;
count++;
}
int flag = 1;
for (int j = 0; j < count; j++)
{
flag *= 10;
}
float newdecimalPart = (float)reversedInteger /(float)flag;//!!!新小数部分
// 输出翻转后的浮点数
printf("%.*f\n",count, newdecimalPart + newintegerPart);
return 0;
}