|  | 
 
| 
题目描述
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  输入整数a,b,n
 ,计算a/b
 的值,并输出其小数点后第n
 位的数字是多少。
 
 输入描述
 输入三个整数a,b,n
 (0<a<b<100
 ,1≤n≤10000
 )。
 
 输出描述
 计算a/b的值,并输出其小数点后第n位的数字是多少。
 
 复制代码#include<stdio.h>
int main()
{
    int a,b,n,c=1;
    scanf("%d%d%d",&a,&b,&n);
    for(int i=1;i<=n;i++)
    {
        c=c*10;
    }
    int s=a*c/b;
    printf("%d\n",s%10);
}
代码中的问题在于计算 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
如果问题已经解决,请设置最佳答案 | 
 |