新手,做个小程序……求指点。。。
写了个二进制转成十进制的小程序。#include <stdio.h>
int cheng(x)
{
int f=1,m;
for(m=1;m<=x;m++)
{
f*=2;
}
return f;
}
void main()
{
while(1)
{
int a;
int n=0,i,s=0;
int b;
printf("Enter a num(位长小于10位):");
scanf("%d",&a);
for(i=1;a!=0;i++)
{
b=a%10;
a=a/10;
n++;
}
for(i=1;i<=n;i++)
{
s+=b*cheng(i-1);
}
printf("%5d",s);
}
}当输入位数长于10位,就会出错。猜想是int 型的变量没有那么高的精度。
希望高手能告知正确的方法……谢谢。。
楼主int cheng(x) 这编译可以吗? 任意进制向十进制转换:这里只写了2,8,16向10的转换
#include <stdio.h>
void main()
{
char s,*p;
long x=0;
p=s;
printf("Input er jin zhi data:");
gets(p);
while(*p)
{
x*=2;
x+=*p-'0';
p++;
}
printf("%d",x);
printf("\nInput ba jin zhi data:");
gets(p);
x=0;
while(*p)
{
x*=8;
x+=*p++-'0';
}
printf("%d",x);
printf("\nInput 16 jin zhi date:");
x=0;
gets(p);
while(*p)
{
if(*p>='A'&&*p<='F')
{
*p=*p-'A'+'0'+10;
}
if(*p>='a'&&*p<='f')
{
*p=*p-'a'+'0'+10;
}
x*=16;
x+=*p++-'0';
}
printf("%d",x);
} 没看懂咋回事啊 这个可以,我确定。。 可以参考下这个:http://blog.fishc.com/2048.html
利用栈实现没有输入长度限制的转换。
页:
[1]