poj3077---进位

时间:2023-03-08 16:24:26
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
char str[];
int ar[];
int main()
{
int n,len,i;
scanf("%d",&n);
while(n--)
{
scanf("%s",str);
len=strlen(str);
for(i=;i<len;i++)
{
ar[i]= str[i] - '';
}
for(i=len-; i >= ; i--)//至少是两位才会经过这个循环
{
if(ar[i] >= )
ar[i-]++;
ar[i]=;
}
for(i=; i<len; i++)
printf("%d",ar[i]);
printf("\n");
}
return ;
}
题意:给一个数字,然后从最后一位开始进位,满5进1,小于5变成0,比如 12345 -> 12350->12400->12000->10000;
实际上:>=10的数,除第一位以外都会变成0,只需要看第一个数最后是多少
int main()
{
int n;
double tmp;
scanf("%d",&n);
while(n--)
{
int count=;
scanf("%lf",&tmp);
while(tmp >= )
{
tmp/=;
tmp=(int)(tmp+0.5);
cout++;
}
for(i=;i<count;i++)
{
tmp*=;
}
}
}

323/10=32.3+0.5

取整得32

32/10=3.2+0.5=3.7

取整得3

四舍五入的方法是(int)(x + 0.5)

这道题关键是对于一个数的每一位来说,四舍五入,>=5进,<5舍,进到第一位就行,后面再添0