杭电1.2.8 Lowest Bit
http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=2&problemid=22
这道题是将十进制写成二进制,然后输出二进制的最低位!
例如:
26(10)=11010(2) 输出:2;
88(10)=1011000(2) 输出:8;
(最低位:倒着*2 直到第一个1的时候截止)
方法一:
#include<stdio.h> //这道题是将十进制转换为二进制然后输出其最低位
int main() /*首先我想着用一个数组c【】来储存余数,然后倒叙(因为我们在循环除二取余的时候是自下而上输出的)输出c【】*/
{ //而这道题是让我们输出二进制的最低位,就是二进制然后倒着*2一直遇见第一个1结束 。
int x;
while(scanf("%d",&x)!=EOF)
{
if(x==0)
break;
int a,b,c[100]={0},s=1;
a=x/2;
b=x%2;
c[0]=b;
int i=1,j;
while(a!=0) //这个循环是存入余数直到商为 0
{
b=a%2;
a=a/2;
c[i]=b;
i++;
}
for(j=0;j<i;j++) //而我们在“除二取余”的过程中是自上而下的储存,即c【0】是最后一个数
{ // c【1】是倒数第二个
if(c[j]==1)