#include <stdio.h>
#include <conio.h>
#define MAX 15
main()
{
long n;
int i=0;
char ch[MAX];
system("cls");
printf("n=");
scanf("%ld",&n);
ltoa(n,ch,10);
while (ch[i]!=0)
i++;
printf("the bit of %ld is %d",n,i);
getch();
}

你用纸上把一个十进制的数转换成二进制怎么转换的?
你先算一遍,再看我的算法就知道了~
首先一个数,最小的正整数0也占一位,所以i初始值为1。。然后。。
main()
{
int x,t=0;
while(x>0)
{ t=t+x%10;
x=x\10;
}
printf(“t=%d”,t);
}
这样就可以了呀~~~~~~~
[此贴子已经被作者于2006-2-21 12:51:17编辑过]
正确的程序的这样的:
main()
{
int bit;
long num;
clrscr();
scanf("%ld",&num);
if(num<0||num>99999)
printf("\ninput wrong");
else
{if(num>9999&&num<100000)
bit=5;
if(num>999&&num<10000)
bit=4;
if(num>99&&num<1000)
bit=3;
if(num>9&&num<100)
bit=2;
if(num>=0&&num<10)
bit=1;
printf("bit=%d",bit);}
}
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define MAX 10
void main()
{
long n;
char ch[MAX];
int i = 0;
scanf("%ld",&n);
ltoa(n,ch,10);
while(ch[i] != '\0')
i++;
printf("%d",i);
getch();
}这样做好像简单一点。