我自己寫的
int i,x,s,a[5];
cout<<"輸入一十進制數";
cin>>x;
cout<<"十進制數"<
{
s=x%2;
x/=2;
if(x>=1)
a[i]=s;
}
a[i]=1;
for(i=5;i=0;i--)
{
cout<
}
我發現這隻程式有致命缺點...最多只能換算到有5個數的2進制,超過就會出現亂碼0.0
請問如果想做一隻能夠把範圍提升到十制進數1000左右的程式要怎麼寫?
2007-06-12 14:02:08 · 2 個解答 · 發問者 Gadessa 1 in 電腦與網際網路 ➔ 程式設計
把你的陣列元素數量加大,再修改一下
int i,x,s,a[1000];
cout<<"輸入一十進制數";
cin>>x;
cout<<"十進制數"<
{
s=x%2;
x/=2;
if(x>1)
a[i]=s;
else if (x==1)
{
a[i]=s;
break;
}
}
a[++i]=1;
for(;i>=0;i--)
{
cout<
}
2007-06-12 17:33:38 · answer #1 · answered by 這個世界越來越爛 4 · 0⤊ 0⤋
//Power by Visual Studio 2005
#include
#include
int binlen(int Dec){
int Counter=0;
while(Dec!=0)
Dec/=2,Counter++;
return Counter;
}
char *dtob(int Len, char *Buffer, int Dec){
int i=Len-1;
Buffer[i--]='\0';
for(;Dec!=0;i--)
Buffer[i]=(Dec%2)+48,Dec/=2;
return Buffer;
}
int main(int argc, char* argv[]){
//==========START==========//
int num=1000;
char *p;
p=malloc((binlen(num)+1)*sizeof(char));
//malloc 相當於 (C++) new
printf("Dec: %d\n= Binary: %s\n",num,dtob(binlen(num)+1, p, num));
free(p);
//==========END==========//
system("PAUSE");
return 0;
}
2007-06-12 22:11:34 補充:
C++配置記憶體:
char *p=new char[(binlen(num)+1)*sizeof(char)];
delete [] p;
2007-06-12 17:44:58 · answer #2 · answered by Big_John-tw 7 · 0⤊ 0⤋