#include <stdio.h>
// 定义常量
#define LARGE_NUMBER 1000000000
// 定义一个常量,方便后续使用
void splitFloatIntoParts(float x, int *intpart, float *fracpart);
// 声明一个分割浮点数为整数和小数部分的函数
int main()
// 主函数开始
{
float x, fracpart;
// 定义浮点数 x 和用于存储小数部分的浮点数 fracpart
int intpart;
// 定义用于存储整数部分的整型变量 intpart
scanf("%f", &x);
// 从用户输入读取一个浮点数到 x
if (scanf("%f", &x)!= 1) { // 错误处理,如果输入不是一个有效的浮点数
printf("Invalid input. Please enter a valid float.\n");
// 输出错误提示
return 1;
// 以错误状态结束程序
}
splitFloatIntoParts(x, &intpart, &fracpart);
// 调用分割函数处理 x,并将结果存储到 intpart 和 fracpart
printf("The integer part is %d\n", intpart);
// 输出整数部分
printf("The fractional part is %g", fracpart);
// 输出小数部分
return 0;
// 主程序结束,返回 0 表示正常结束
}
void splitFloatIntoParts(float x, int *intpart, float *fracpart)
// 分割函数的定义
{
if (x < 1) {
// 如果 x 小于 1
*intpart = 0;
// 将整数部分设置为 0
*fracpart = x;
// 将小数部分设置为 x 本身
return;
// 结束函数
}
float xiaoShu = 0;
int n = LARGE_NUMBER;
// 初始化一些变量
while ((int)x / n!= 0) {
// 找到一个合适的 n 值,使得 x 除以 n 不为 0
break;
}
for (int i = 0; i < 9; i++) {
// 进行一个循环
if (x - (float)n <= 1) {
// 如果 x 与 n 的差值小于等于 1
break;
}
n += 1;
// 递增 n
}
*fracpart = x - (float)n;
// 计算并设置小数部分
*intpart = x - *fracpart;
// 计算并设置整数部分
}zhenshu