| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 759 人关注过本帖
标题:将小数八进制转化为十进制
只看楼主 加入收藏
z8869113
Rank: 2
等 级:论坛游民
帖 子:44
专家分:14
注 册:2010-12-14
结帖率:75%
收藏
已结贴  问题点数:47 回复次数:6 
将小数八进制转化为十进制
题目如题!题目要求
输入

0.75
0.0001
0.01234567


输出

0.75 [8] = 0.953125 [10]
0.0001 [8] = 0.000244140625 [10]
0.01234567 [8] = 0.020408093929290771484375 [10]
以下是本人编的:
#include<stdio.h>
int main()
{
    int i,k=0,j,z,c;
    float a[3],s[3]={0},q[3],n;
    for(i=0;i<3;i++)               
        scanf("%f",&a[i]);
    for(i=0;i<3;i++)
    {
               
                k=0;
                q[i]=a[i];

                        for(c=0;a[i]!=0;)                  
                    {
                        k=int(a[i]*10);    //这是将小数转为整数,就是将小数点的下一位转为整数
                        c++;              //c记录要除以8的多少次方
                        a[i]=a[i]*10-k;   // 将整数部分减掉
                        
                            for(z=1,j=0;j<c;j++)       //这就是算要除以多少的了
                            {
                                z*=8;
                            }
                            n=k/z;              
                            s[i]+=n;             //把那些数加起来
                    }
            
    }
    for(i=0;i<3;i++)
        printf("%f[8]=%f[10]\n",q[i],s[i]);   
        


    return 0;
}

结果不知道出什么问题了~求解

[ 本帖最后由 z8869113 于 2011-3-26 20:03 编辑 ]
搜索更多相关主题的帖子: 八进制 十进制 
2011-03-26 15:59
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:16 
坛子里早就有讨论的。
https://bbs.bccn.net/thread-77810-1-1.html

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-26 22:15
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
0.75它的八进制应该是0.7*(8^0)+0.05*(8^-1)这个计算公式吧!

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-26 22:39
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:16 
按照公式转呗

                                         
===========深入<----------------->浅出============
2011-03-27 01:03
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:16 
根据公式写代码即可

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2011-03-28 10:25
z8869113
Rank: 2
等 级:论坛游民
帖 子:44
专家分:14
注 册:2010-12-14
收藏
得分:0 
回复 3楼 ansic
不是啊,是7*8^-1+5*8^-2
2011-03-28 23:21
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
以下是引用z8869113在2011-3-28 23:21:38的发言:

不是啊,是7*8^-1+5*8^-2

哦, 菜鸟代码,仅供参考。
程序代码:
root@~ #cat o2d.c
#include <stdio.h>

int main (void) {

        int i,n;
        double sum=0;
        double ncf (int n);
        char str[10];
        printf ("Enter float number:");

        scanf ("%s",str);
        for(i=2,n=1;str[i]!='\0';i++,n++) {
                sum+=(str[i]-'0')*(1/ncf(n));
        }
        printf ("%lf\n",sum);
        return 0;
}
double ncf (int n) {
        double result;
        if(n==0) {
                result=1;
        }else{
                result=(8*ncf(n-1));
        }
        return result;
}

测试:
root@~ #./o2d
Enter float number:0.75
0.953125
root@~ #./o2d
Enter float number:0.0001
0.000244
root@~ #./o2d
Enter float number:0.01234567
0.020408
root@~ #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-29 10:33
快速回复:将小数八进制转化为十进制
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018058 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved