以下是用C语言编写的程序,实现输入一个实数,输出该数的最高位数字和第1位小数的数字:c#include <stdio.h>#include <math.h>int main() { double number, int_part, fraction_part; int highest_digit; // 输入实数
printf("请输入一个实数:"); scanf("%lf", &number); // 取整数部分和小数部分
int_part = floor(number);
fraction_part = number - int_part; // 取最高位数字
highest_digit = (int) int_part; while (highest_digit >= 10) {
highest_digit /= 10;
} // 取第1位小数的数字
fraction_part *= 10; // 把第1位小数移动到个位
printf("最高位数字:%d,第1位小数的数字:%d\n", highest_digit, (int) fraction_part); return 0;
}
程序运行时,会提示用户输入一个实数,然后使用 `scanf` 函数读入这个实数。接下来,使用 `floor` 函数取得该实数的整数部分和小数部分。为了取得最高位数字,我们先将整数部分强制转换为整型,然后不停进行除法操作,直到得到最高位数字。最后,我们将小数部分乘以 10,把小数点后第 1 位移动到个位,再强制转换为整型,就得到了第 1 位小数的数字。最后,程序会输出结果。 注意,直接使用 `%lf` 读入实数可能会出现精度问题,我们可以使用字符串输入/输出函数 `fgets` 和 `strtod` 来读入实数,例如:c#include <stdio.h>#include <stdlib.h>int main() { char input[100]; double number, int_part, fraction_part; int highest_digit; // 输入实数
printf("请输入一个实数:"); fgets(input, sizeof(input), stdin);
number = strtod(input, NULL); // ...}
这里使用 `fgets` 函数读入一个字符串,然后使用 `strtod` 函数将这个字符串转换为实数,这样就可以避免直接使用 `%lf` 时可能出现的精度问题。
温馨提示:答案为网友推荐,仅供参考