将之前一段时间在牛客上刷的题给大家分享一下。其中一道题是“取近似值”,现在将通过的代码贴一下,供大家参考。
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于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); } }