Discuz! Board

 找回密码
 立即注册
查看: 500|回复: 0

作业

[复制链接]

51

主题

54

帖子

8724

积分

论坛元老

Rank: 8Rank: 8

积分
8724

大牙狸 Lv:12
发表于 2023-3-12 19:59:04 | 显示全部楼层 |阅读模式
void ertoshi1()//2进制转十进制 含小数
{
        float s1=0,s2=0;
        int a=0;
        char b[100]={0};
        int c[100]={0};
        int i=0;
        scanf("%d.%s",&a,&b);//输入
       
        cout<<a<<' '<<b<<endl;
        while(a>0)//判断 a,做条件
        {
                s1+=(a%10)*pow(2,i);//一次成2的几次方
                a=a/10;//?
                i++;
        }

               
        for(int j=0;j<strlen(b);j++)//与长度有关
        {
                s2+=(b[j]-'0')*pow(2,(j+1)*(-1));//用几分之几的方法做
        }
        cout<<s1+s2;//输出
}

void shitoer1()//十进制转二进制 含小数
{
        int a=0;
        float b=0;
        int cnt1=0,cnt2=0;
        int s1[100]={0},s2[100]={0};
        float n;
       
        cin>>n;
        a=(int)n;//整数
       
        while(a>0)//整数部分
        {
                s1[cnt1]=a%2;//取余
                a=a/2;//短除
                cnt1++;
        }
       
        b=n-(int)n;//整数
        while(cnt2<18)//小数部分 //???
        {
                s2[cnt2]=(int)(b*2);
                b=b*2-(int)(b*2);
                cnt2++;
                if(b==0) break;
        }
       
        if(n>=1)
        {
                for(int i=cnt1-1;i>=0;i--)//整数
                {
                        cout<<s1[i];
                }       
        }
        else cout<<0;
       
        if((n-(int)n)>0)//等不等于0
        {
                cout<<'.';//小数点
                for(int i=0;i<cnt2;i++)
                {
                        cout<<s2[i];
                }
        }
}
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-5-30 12:07 , Processed in 0.058250 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

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