鱼C论坛

 找回密码
 立即注册
查看: 2055|回复: 5

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

[复制链接]
发表于 2014-3-21 04:34:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
写了个二进制转成十进制的小程序。
#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[100];
        printf("Enter a num(位长小于10位):");
        scanf("%d",&a);
        for(i=1;a!=0;i++)
        {
                b[i]=a%10;
                a=a/10;
                n++;
        }
        for(i=1;i<=n;i++)
        {
                s+=b[i]*cheng(i-1);
        }
        printf("%5d",s);
        }
}
当输入位数长于10位,就会出错。猜想是int 型的变量没有那么高的精度。

二进制到十进制.jpg
希望高手能告知正确的方法……谢谢。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-21 07:37:23 | 显示全部楼层
楼主int cheng(x) 这编译可以吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-21 09:18:00 | 显示全部楼层
任意进制向十进制转换:这里只写了2,8,16向10的转换
#include <stdio.h>
void main()
{
char s[6],*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);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-21 10:07:39 | 显示全部楼层
没看懂咋回事啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-21 14:57:00 | 显示全部楼层
这个可以,我确定。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-21 15:55:18 | 显示全部楼层
可以参考下这个:http://blog.fishc.com/2048.html

利用栈实现没有输入长度限制的转换。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 00:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表