| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 486 人关注过本帖
标题:如何将一个八进制、十六进制的数转换成十进制?新手
取消只看楼主 加入收藏
有鱼
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-11-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
如何将一个八进制、十六进制的数转换成十进制?新手
Description
Write a program to convert an input string that represents an octal integer or a hexadecimal integer to a decimal integer.

Input
The input is one line that begins with "0" or "0x", indicating an octal integer or a hexadecimal integer, respectively.

For a hexadecimal integer, it may contain uppercase letters and lowercase letters, e.g., both "0x3e5a" and "0x3E5a" are equivalent to 15962. Your program should carefully handle such a case.
这是问题  Ox3e5a 和 O 是怎么回事?这样的程序要怎么编?
搜索更多相关主题的帖子: equivalent represents carefully 十六进制 contain 
2014-11-26 21:23
有鱼
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-11-26
收藏
得分:0 
谢谢!但是我们没有学过您的那种方式的输出。我们的教材是C++程序设计(第三版 影印版) 是英文版的。
2014-11-27 09:37
有鱼
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-11-26
收藏
得分:0 
回复 2 楼 rjsp
您好!谢谢您!但是我们没有学过您的那种方法。一下是我的程序 ,用C++语言的。您可以帮我看看哪里出错了吗?我还不太会纠错 谢谢!
目的是将八进制或十六进制的数转换成十进制。
程序代码:
[code]#include<iostream>
#include<string>
#include<cctype>
#include<cmath>
using namespace std;
int main(){
    string num;
    cin>>num;
    int sum=0;
    int l=num.length();
    if(num.substr(0,2)=="Ox"){
        for(int i=2;i<l;i++){
            char ch=num[i];
            int n;
            if(isalpha(ch)){
                switch(toupper(ch)){
                case 'A':n=10;
                break;
                case 'B':n=11;
                break;
                case 'C':n=12;
                break;
                case 'D':n=13;
                break;
                case 'E':n=14;
                break;
                case 'F':n=15;
                break;                 
            }
            }
            else if(isdigit(ch)){
                n=ch-'0';
            }
        sum=sum+n*pow(16,(l-i-1));    
        }
    }
    else if((num[0]=='O')&&(isdigit(num[1]))){
        for(int j=1;j<l;j++){
            char cha=num[j];
            int nu;
            nu=cha-'0';
            sum=sum+nu*pow(8,l-j-1);
        }
    }
    cout<<sum<<endl;
    return 0;
} 
[/code]
2014-11-27 10:16
有鱼
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-11-26
收藏
得分:0 
回复 5 楼 rjsp
谢谢!大神的世界我不懂呀!程序很牛!大赞!!!!!!!!!
2014-11-28 18:21
快速回复:如何将一个八进制、十六进制的数转换成十进制?新手
数据加载中...
 
   



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

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