念完题目也知道这题需要递归,当为要求的10的整数幂时返回,否则按四舍五入,再将幂加1,继续递归。
1 #include2 #include 3 #include 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 }