用c语言从键盘中任意输入一个大于0的浮点型数据,请输出这个数据与它最相近、且为5的倍数的数据(如输入4.8则输出5,输入11.2则输出10),若与相邻两个5的倍数距离相等,则输出-1
时间: 2024-10-14 16:13:55 浏览: 18
在C语言中,你可以使用`scanf`函数获取用户输入的浮点数,然后通过一些数学运算找到最近的5的倍数。下面是一个简单的示例程序来实现这个需求:
```c
#include <stdio.h>
int main() {
float input;
double nearest_multiple = -1.0; // 初始化为负一作为默认值
bool is_equal_distance = false;
// 从键盘读取浮点数
printf("Enter a positive floating-point number: ");
scanf("%f", &input);
// 判断输入是否大于0
if (input > 0) {
// 找出比输入值大且是最接近的5的倍数
while (nearest_multiple < input) {
nearest_multiple += 5.0;
}
// 检查是否与前一个和后一个5的倍数值差相等
if (abs(input - nearest_multiple - 5)) {
is_equal_distance = true;
}
// 输出结果
if (is_equal_distance) {
printf("Distance to both adjacent multiples is equal, output -1: -1\n");
} else {
printf("The closest multiple of 5 is %.1f\n", nearest_multiple);
}
} else {
printf("Invalid input, please enter a positive number.\n");
}
return 0;
}
```
在这个程序里,我们首先检查输入是否大于0。如果是,就循环增加5直到找到一个大于或等于输入的数;然后比较当前输入与找到的5的倍数以及它们与前一个5的倍数的距离,判断是否相等。
阅读全文