2012年(7)
分类: C/C++
2012-05-05 16:25:16
1002 林老师的作业
小强不喜欢C语言,可是又必须完成林老师的作业,所以非常苦恼,但又得常常编程到深夜。上次林老师又布置了一道作业:给你一个非负的双精度浮点数D,然后将D向下取整转化成一个整数N。D的下取整就是把小数部分舍去,只留下整数部分。比如3.14的下取整就是3。
但是现在他遇到了一个麻烦的问题,就是C语言中的双精度浮点数的表示范围是远远大于整型数的表示范围的。你能帮助小强解决这个问题吗?
输入
只有一个双精度浮点数D,D用十进制小数表示,长度不大于300。D一定为非负数。D有可能存在前导零,即会出现07.09的情况,此时应该输出7,也有可能去掉前导零,比如.009,此时应该输出0。D也有可能为整数,如D=4,不包含小数点,此时应该输出4。除此之外,都是正常书写小数的习惯了。
输出
输出一个整数N,就是D的下取整。
#include"stdio.h"
int main()
{
char c,ch;
char a[500]={'\0'};
int i;
gets(a);
i=0;
c=a[i++];
while(c=='0'){
ch=c;
c=a[i++];
}
if(c=='.')
printf("0");
else
if(c=='\0'&&ch=='0')
printf("0");
else
while(c!='.'&&c!='\0')
{
printf("%d",c-'0');
c=a[i++];
}
return 0;
}