欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

《算法竞赛入门经典》(第2版)——习题2-5 分数化小数(decimal)

程序员文章站 2024-03-18 23:13:16
...

本题的难点在于精确到小数点后c位,按照手算的方法可以解决这个题目,具体代码如下,需要注意的地方已经写了注释。

#include<stdio.h>
int main(){
	int a,b,c,t,kase=0;
	while(3==scanf("%d %d %d",&a,&b,&c)){
		if(a==0&&b==0&&c==0)
		    break;
		else {
			printf("Case %d:%d.",++kase,a/b);//先把整数部分和小数点输出
			a%=b;
			while(c--){
				a*=10;
				t=a/b;
				if(c==0&&(a%b)*10/b>=5) t++;//来判断c+1位,进而进行四舍五入
				printf("%d",t);//挨个输出小数部分
				a%=b;
			}
			printf("\n");
		}
	}
	return 0;
} 

搜集了很多代码,最后觉得还是这个代码最为简洁,而且,它还不止能输出小数点100位,1000位甚至更多也可以输出,感兴趣的话,可以验证一下。

相关标签: ACM 算法 C/C++