http://poj.org/problem?id=3077
念完题目也知道这题需要递归,当为要求的10的整数幂时返回,否则按四舍五入,再将幂加1,继续递归。
1 #include <stdio.h> 2 #include <math.h> 3 #include <stdlib.h> 4 void trans(int *p,int base) 5 { 6 if((*p)<(int)pow(10,base)) return; 7 if((*p)==pow(10,base)) return; 8 if((*p)>pow(10,base)) { 9 int tail=(*p)%(int)pow(10,base); 10 if(2*tail>=(int)pow(10,base)) { 11 *p=(*p)/(int)pow(10,base)*(int)pow(10,base)+(int)pow(10,base); 12 } else *p=(*p)/(int)pow(10,base)*(int)pow(10,base); 13 trans(p,base+1); 14 } 15 } 16 int main() 17 { 18 int n; 19 scanf("%d",&n); 20 while(n--) { 21 int number; 22 scanf("%d",&number); 23 trans(&number,1); 24 printf("%d\n",number); 25 } 26 return 0; 27 }