只是想学C 发表于 2014-3-21 04:34:53

新手,做个小程序……求指点。。。

写了个二进制转成十进制的小程序。
#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 型的变量没有那么高的精度。


希望高手能告知正确的方法……谢谢。。

lyc2468 发表于 2014-3-21 07:37:23

楼主int cheng(x) 这编译可以吗?

超级忍者龟 发表于 2014-3-21 09:18:00

任意进制向十进制转换:这里只写了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);
}

最好是明天 发表于 2014-3-21 10:07:39

没看懂咋回事啊

只是想学C 发表于 2014-3-21 14:57:00

这个可以,我确定。。

小甲鱼 发表于 2014-3-21 15:55:18

可以参考下这个:http://blog.fishc.com/2048.html

利用栈实现没有输入长度限制的转换。
页: [1]
查看完整版本: 新手,做个小程序……求指点。。。