這是題目

這是我的程式:
#include <stdio.h>
#include <stdlib.h>
int main()
{int i,n,t=0,sum=0,a[16]={0};
scanf("%d",&n);i=0;
while(n!=0)
{a[i]=n%10,n=n/10;t++;i++;
}
for(i=0;i<t;i++)
{sum=sum+a[i]*pow(2,i);
}
printf("%d",sum);
}
不知道為什么通不過,求指點。
uj5u.com熱心網友回復:
輸入一個二進制數串,當作字串處理,而不是整數uj5u.com熱心網友回復:
#include <stdio.h>int main()
{
int i,sum,a[16]={0};
long n;
scanf("%ld",&n);
i=0;
while(n!=0)
{
a[i]=n%10;
n=n/10;
i++;
}
sum=0;
for(;i>=0;--i)
sum=sum*2+a[i];
printf("%d",sum);
return 0;
}
uj5u.com熱心網友回復:
上面是非遞回解,下面是遞回解#include <stdio.h>
int btod(int d)
{
if(d<2)
return d;
else
return btod(d/10)*2+d%10;
}
int main()
{
int sum,n;
scanf("%d",&n);
sum=btod(n);
printf("%d",sum);
return 0;
}
uj5u.com熱心網友回復:
你是用int型別的n來儲存的二進制數。你相當于干了這么一件事。int n=1000億;這早就超過了int所能儲存的資料大小。當然會出錯了。你這資料太大一定出錯,不然我就是活久見了,哈哈。上然仁兄說的對,建議你把二進制數當作字串處理,統計出字串長度,就很好做了。uj5u.com熱心網友回復:
將輸入當做整數,應該當成字串進行處理,可以將其讀入一個字符陣列中存盤。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/27642.html
標籤:C語言
