Description
给一个数字,然后从最后一位开始进位,满5进1,小于5变成0,10一下的不用进位
Input
第一行为用例组数n,之后n行每行一个整数x (0<=x<=99999999)
Output
对于每组用例,输出进位后的结果
Sample Input
9
15
14
4
5
99
12345678
44444445
1445
446
Sample Output
20
10
4
5
100
10000000
50000000
2000
500
Solution
简单模拟题,因为x很大,故用字符串模拟进位过程
Code
#include<stdio.h>
#include<string.h>
int main()
{
char c[100];
int n,len,i;
scanf("%d",&n);
getchar();//读入换行
while(n)
{
gets(c);//读入一个数
len=strlen(c);
for(i=len-1;i>=0;i--)
{
if(c[i]-'0'>=5&&i>=1)//大于10的才进位
{
c[i-1]++;//进位
c[i]='0';//该位变成0
if(c[0]-'0'==10)//最高位仍需进位
{
c[0]='1';
len++;//位数加一
c[len-1]='0';
c[len]='\0';//注意'\0'
}
}
else if(c[i]-'0'<5&&i>=1)//小于5的直接变成0
c[i]='0';
}
puts(c);
n--;
}
return 0;
}