标签:
#include <stdio.h> #include <stdlib.h> #include<string.h> char str[100000000]; int ar[100000000]; int main() { int n,len,i; scanf("%d",&n); while(n--) { scanf("%s",str); len=strlen(str); for(i=0;i<len;i++) { ar[i]= str[i] - ‘0‘; } for(i=len-1; i >= 1; i--)//至少是两位才会经过这个循环 { if(ar[i] >= 5) ar[i-1]++; ar[i]=0; } for(i=0; i<len; i++) printf("%d",ar[i]); printf("\n"); } return 0; }
题意:给一个数字,然后从最后一位开始进位,满5进1,小于5变成0,比如 12345 -> 12350->12400->12000->10000;
实际上:>=10的数,除第一位以外都会变成0,只需要看第一个数最后是多少
int main() { int n; double tmp; scanf("%d",&n); while(n--) { int count=0; scanf("%lf",&tmp); while(tmp >= 10) { tmp/=10; tmp=(int)(tmp+0.5); cout++; } for(i=0;i<count;i++) { tmp*=10; } } }
323/10=32.3+0.5
取整得32
32/10=3.2+0.5=3.7
取整得3
四舍五入的方法是(int)(x + 0.5)
这道题关键是对于一个数的每一位来说,四舍五入,>=5进,<5舍,进到第一位就行,后面再添0
标签:
原文地址:http://www.cnblogs.com/gabygoole/p/4589432.html