c语言编程:输入正整数a和b,其中a和b都小于32767,求a⼀b的值.要求精确到小数点后n位,其中1<n<200.

2025-03-10 06:01:15
推荐回答(3个)
回答1:

这个显然是高精度的问题,直接用系统的double是不能达到200位的精度的,所以只能手动模拟计算除法。程序如下:#include
int main()
{
int i, a, b, n, s;
char result[201] = {0};
scanf("%d %d %d", &a, &b, &n);
s = a / b;
a = a % b;
for( i = 0; i < n; i++)
{
a *= 10;
result[i] = ( a / b ) + '0';
a %= b;
}
result[201] = '\0';
printf("%d.%s", s, result);
return 0;
}
输入数据:1 7 150结果:

回答2:

不好意思哈,这个开始的回答不对,我没运行 现在给你正确的答案
main()
{
int n,m,i=0;
float av=0,k1=0,k2=0;
printf("输入第一个数字:");
scanf("%d",&n);
printf("输入第2个数字:");
scanf("%d",&m);
k1=n/1.0;
k2=m/1.0;
// printf("%f",k2);
av=k1/k2;
printf("%f\n",av);
}

回答3:

#include
#include
int a,b,i,c;
int n;
int main(){
scanf("%d%d",&a,&b);
scanf("%d",&n);
printf("%d",a/b);
if (a%b==0) return 0;
printf(".");
for (i=1;i a=a%b;
a=a*10;
printf("%d",a/b);
}
a=a%b;
a=a*10;
if (a/b>=5) printf("%d",a/b+1);else printf("%d",a/b);
// system("pause");
return 0;
}
输入a,b,n的。可以满足输出n位小数~