有人能帮我看看这个C++程序错在哪里吗?

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:42:38
#include <iostream.h>
void trans(int n,int b[])
{ int i=0;
while (n!=0)
{ b[i]=n%2;
i++;
n=n/2;
}
}
void main()
{ int l,m,n;
cout << "n=";
cin >> n;
m=n;
while (m>0)
{ m=m/10;l++;
}
int b[y-1],i;
for (i=0;i<=l-1;i++)
b[i]=0;
trans(n,b);
cout << "二进制数为:";
for (i=l-1;i>=0;i--)
cout << b[i];
cout << endl;
}
请问可不可以算出是多少位,不用32?

int b[y-1],i;

整型数组b[y-1]中的y没有定义

我昏啊,一开始就错了啊,N没赋初值啊,怎么算!

//修改如下,VC编译成功
//可以,不过要用动态分配.
/*
加上这个头文件
#include<memory.h>
然后程序中这样子定义
int *b;//只定义一个指针.

(这里是你的计算步骤,假设算出来二进制位数是k)
b=(int *)calloc(k,sizeof(int));
这样你的b就刚好能容下全部二进制数.

*/
#include <iostream.h>
int trans(int n,int b[])
{ int i=0;
while (n!=0)
{ b[i]=n%2;
i++;
n=n/2;
}
return i;//这里的返回值用来表示二进制数位数.
}
void main()
{ int l,m,n;
cout << "n=";
cin >> n;
m=n;
while (m>0)
{ m=m/10;l++;
}
int b[32],i; //y-1不可以用来定义数组,改为32 ,32可以表示很大的数了,不够的话再加.
for (i=0;i<=l-1;i++)
b[i]=0;
i=trans(n,b);
cout << "二进制数为:";
for (i=i-1;i>=0;i--)
cout<<b[i];
cout<<endl;
}