、从键盘中任意输入一个大于0的浮点型数据,请输出这个数据与它最相近、且为5的倍数的数据(如输入4.8则输出5,输入11.2则输出10),若与相邻两个5的倍数距离相等,则输出-1。c语言
时间: 2024-10-06 15:02:51 浏览: 26
S7-200SMART中如何把1个INT整型数据转换成REAL浮点型数据?.docx
5星 · 资源好评率100%
在C语言中,你可以通过以下几个步骤来实现这个功能:
```c
#include <stdio.h>
#include <math.h>
int main() {
float input;
printf("请输入一个大于0的浮点型数据: ");
scanf("%f", &input);
// 检查输入是否大于0
if (input <= 0) {
printf("输入错误,只能输入正数。\n");
return 0;
}
// 计算与5的倍数最近的整数值
int nearest_multiple = round(input / 5) * 5;
// 判断当前值与5的倍数的距离
float distance_to_lower = fmod(input, 5);
float distance_to_upper = (nearest_multiple - input);
// 如果两者距离相等且非零,则输出-1
if ((fabs(distance_to_lower) == fabs(distance_to_upper)) && distance_to_lower != 0) {
printf("-1\n");
} else { // 否则输出最近的5的倍数
printf("%.0f\n", nearest_multiple);
}
return 0;
}
```
在这个程序中,我们首先读取用户输入的浮点数,然后计算其与5的最近整数倍。`round()`函数用于四舍五入到最接近的整数,`fmod()`用于计算余数。如果输入的数与下一个小于它的5的倍数和上一个大的5的倍数的距离相等且非零,那么就输出-1,否则直接输出所找到的那个5的倍数。
阅读全文