将之前一段时间在牛客上刷的题给大家分享一下。其中一道题是“取近似值”,现在将通过的代码贴一下,供大家参考。

写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int midec(int len)
{
int sum = 1;
int i = 0;
for(i=0;i<len;i++)
{
sum *= 10;
}
return sum;
}
int getint(char *inputstream)
{
int count=0;
int len = strlen(inputstream);
int i;
for(i=0;i<len;i++)
{
count+=(inputstream[i]-'0') * midec(len-i-1);
}
return count;
}
int main()
{
char inputstream[100]={0};
char fixinputstream[100]={0};
char b;
int inputlen;
int i;
int j=0;
int sum;
while(scanf("%s",inputstream)!=EOF)
{
inputlen=strlen(inputstream);
for(i=0;i<inputlen;i++)
{
if(inputstream[i]!='.')
{
fixinputstream[i]=inputstream[i];
}
else
{
j = i;
break;
}
}
if(j>0)
b = inputstream[j+1];
sum = getint(fixinputstream);
if(b>='5')
sum+=1;
printf("%d",sum);
}
}