消除尾一
1下面的代码把一个整数的二进制表示的最右边的连续的1全部变成0
如果最后一位是0,则原数字保持不变。
如果采用代码中的测试数据,应该输出:
输入:000000000000001100111
输出:000000000000001100000
输入:000000000000000001100
输出:000000000000000001100
#include<STdio.h>
#include<String.h>
int main()
{
char str[100];
gets(str);
int i,j,cns=0,xb=1;
cns=strlen(str);
cns=cns-1;
for(i=cns;i>=0;i--)
{
if(str[cns]=='0')
{
puts(str);
break;
}
if(xb)
{
for(j=i;j>=0;j--)
{
if(str[j]=='1')
{
str[j]='0';
}
else break;
}
xb--;
}
}
puts(str);
return 0;
}