分数化小数

描述

输入3个正整数 �,�,�a,b,c,输出 �/�a/b 的小数形式,精确到小数点后 �c 位(注意最后一位的四舍五入问题)。其中 2≤�,�≤100000002≤a,b≤10000000,2≤�≤10002≤c≤1000。(注意本题小数保留范围)。

输入

第1行是一个整数 �n,表示随后有 �n 组数据。每组数据占一行,输入正整数 �,�,�a,b,c,用空格隔开。

输出

对每组数据,计算并输出 �/�a/b 的小数形式,保留小数点后 �c 位,并换行,

样例

输入

3
2 3 20
2 6 10
6 7 3

输出

0.66666666666666666667
0.3333333333
0.857
#include<stdio.h>
int main()
{
  int n,i;
  scanf("%d",&n);
  for(i=0;i<n;i++)
  {
  	int a,b,c;
  	int xiao[1002]={0};
  	scanf("%d %d %d",&a,&b,&c);
  	int j;
  	int zheng;
  		zheng=a/b;
  		a=a%b;
  	for(j=0;j<=c;j++)
  	{
  		a*=10;
  		xiao[j]=a/b;
  		a%=b;
	  }
	  if(xiao[c]>=5){
	  	xiao[c-1]=xiao[c-1]+1;
	  }
	  for(j=c-1;j>0;j--){//遇到9进位的问题
	  	if(xiao[j]==10){
	  		xiao[j]=0;
	  		xiao[j-1]=xiao[j-1]+1;
		  }else break;
	  }
	  if(xiao[0]==10){//进位到整数
	  	zheng=zheng+1;
	  	xiao[0]=0;
	  }else;
	  
	  printf("%d.",zheng);//输出
	  for(j=0;j<c;j++){
	  	printf("%d",xiao[j]);
	  }
  	printf("\n");
  }
	return 0;
 } 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值