|
发表于 2023-10-16 10:38:46
|
显示全部楼层
本楼为最佳答案
代码中的问题在于计算 a/b 的值时,使用了整数相除的方式,并将结果乘以 10^n 后取整数部分作为 s 的值。这样做可能导致精度丢失,并不能正确得到小数点后第 n 位的数字。
要解决这个问题,可以改为使用浮点数相除的方式进行计算,并将结果乘以 10^n,然后对结果取整数部分。以下是修改后的代码:
- #include<stdio.h>
- int main() {
- int a, b, n;
- scanf("%d%d%d", &a, &b, &n);
-
- double result = (double) a / b; // 使用浮点数相除
- int s = result * pow(10, n); // 将结果乘以 10^n
-
- printf("%d\n", s % 10);
-
- return 0;
- }
复制代码
请注意,修改后的代码中使用了 <math.h> 头文件中的 pow() 函数来计算 10^n 的值。因此,需要添加 #include<math.h> 来包含该头文件。
请注意,本回答来自GPT-3.5
如果问题已经解决,请设置最佳答案 |
|