求高手看看这个程序哪错了

来源:百度知道 编辑:UC知道 时间:2024/05/28 07:22:24
把任意整数转换成二进制的程序:
#include <math.h>
#include <stdio.h>
void main()
{
int c,i,t,m,s[20];/*创立足够大的数组,存放余数*/
float a,b,n;
printf("Enter one number :");
scanf("%f",&n);/*输入数据*/
a=log(n)/log(2);/*以2为底求输入数据的对数,结果是转化成二进制后的数的位数*/
b=floor(a);/*取整*/
c=(int)b;/*变为整型*/
t=(int)n;
for(i=1;i++;i<=c)
{
m=t%2;
t=(t-m)/2;
s[i]=m;
}/*除2取余法,求二进制数各位数字*/
printf("%d\n",s[i]);
}
输出之后总是一个很大的负数,难道是数据溢出了吗?

还有就是最后那个数组输出有点问题,就是各位数字是反的,我把
s[i]=m;换成s[20-i]=m;一直提示程序出错需要关闭
请问怎么解决

//---------------------------------------------------------------------------

#include <stdio.h>
void main()
{
int c,i,n,s[20];/*创立足够大的数组,存放余数*/

printf("Enter one number :");
scanf("%d",&n);/*输入数据*/
c=(int)(log(n)/log(2))+1;/*以2为底求输入数据的对数,结果是转化成二进制后的数的位数*/
for(i=0;i<c;i++)
{
s[c-1-i]=n%2;
n/=2;

}/*除2取余法,求二进制数各位数字*/
for (i=0; i<c; i++) { /*输出*/
printf("%d",s[i]);
}
}
//---------------------------------------------------------------------------