东华OJ基础题65 求小数位数个数

问题描述 :

明明最近在一家软件公司实习,公司分配给他一个任务,要他写一个小程序,这个程序的功能是求出一个浮点数的小数部分的长度。例如程序输入1.1,则输出1,程序输入1.11,则输出2,明明觉得这个非常简单,花了不到5分钟的时间就把程序给写出来了,然后就把程序交给了测试员测试。但是没有想到的是,经过测试员的测试,发现了一大堆的错误,返回的结果很多都是不对的,这个令明明相当的不解,始终想不通自己的程序错在哪里。你是一名经验丰富的程序员,明明把这个问题来求助于你,明明和你说了他的想法,你一听就明白明明错在了哪里,原来明明使用double型来存放浮点数,但是由于double型的精度问题,不可能把所有的小数都精确的保存好,如果小数位数很长,就会出错。你发现了问题。现在请你写出正确的程序。 明明的问题可以归结为:给你一个浮点数,请你求出这个浮点数的小数位数。
输入说明 :

你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据仅占一行,每行仅包括一个浮点数数n,n的长度不超过100。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。
输出说明 :

对于每一组测试数据,你写的程序要求计算出一组相应的运算结果,并将这一组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果为一个整数,即n的小数部分的位数。每组运算结果单独形成一行数据,其行首和行尾都没有任何空格,每组运算结果与其后一组运算结果之间没有任何空行,第一组运算结果前面以及最后一组运算结果后面也都没有任何空行。 注:通常,显示屏为标准输出设备。

总结
1.这个题废话很多,根本就是求小数的位数个数,不要因为题目的限制说是在键盘内输入一个浮点型的数据,一开始我想的是乖乖输入一个浮点型的数据,再转化为字符串,gagagaga,还不如直接当成一个字符串输入来的简单
2.输入多组字符串测试数据,只能用scanf,用gets编译时出错
3.while(str[i++]!=’.’)
for(j=i+1;str[j]!=’\0’;j++)
count++;
这里while那里写的出错,最好还是把那个i++分来写

#include<stdio.h>
int main(){
	char str[100];
	int count,i,j;
	while(scanf("%s",&str)!= EOF){
		count=0;
		i=0;
		while(str[i]!='.')
			i++;
		for(j=i+1;str[j]!='\0';j++)	
			count++;
		printf("%d\n",count);
	}
	return 0;
}
发布了17 篇原创文章 · 获赞 1 · 访问量 126

猜你喜欢

转载自blog.csdn.net/weixin_44205451/article/details/104560587