| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 624 人关注过本帖, 1 人收藏
标题:用函数,输入十六进制数,输出相应的十进制?
只看楼主 加入收藏
kongbei312
Rank: 2
等 级:论坛游民
帖 子:44
专家分:26
注 册:2011-6-15
结帖率:87.5%
收藏(1)
已结贴  问题点数:5 回复次数:8 
用函数,输入十六进制数,输出相应的十进制?
#include <stdio.h>

int main(void) {
    int n;
    scanf("%x", &n);
    printf("%d\n", n);
    return 0;
}
除了上述方法外,还有什么办法,请赐教
搜索更多相关主题的帖子: 十六进制 include return 十进制 
2011-07-08 15:50
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
古老的方法:求和,12:1*16+2=18;
2011-07-08 16:01
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:3 
程序代码:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>

void syntax_error(char reason) {
    printf("Syntax error: \'%c\'(Must be \'0\' to \'9\' or \'a/A\' to \'f/F\')\nProgram will to exit.\n", reason);
    system("pause");
    exit(1);
}

int main(void) {
    char hex[12], * p1 = hex, * p2 = hex;
    int dec = 0, negative = 0, digit = 1;
    scanf("%s", hex);
    if (*p1 == '0' && (*(p1 + 1) == 'x' || *(p1 + 1) == 'X'))
        p1 += 2;
    if (*p1 == '-') {
        negative = 1;
        p1++;
    }
    p2 += strlen(hex) - 1;
    while (p2 >= p1) {
        if (*p2 >= '0' && *p2 <= '9')
            dec += (*p2 - '0') * digit;
        else if((*p2 >= 'a' && *p2 <= 'f') || (*p2 >= 'A' && *p2 <= 'F'))
            isupper(*p2) ? (dec += (*p2 - 'A' + 10) * digit) : (dec += (*p2 - 'a' + 10) * digit);
        else
            syntax_error(*p2);
        digit *= 16;
        p2--;
    }
    if (negative)
        dec = -dec;
    printf("%d\n", dec);
    system("pause");
    return 0;
}
输入负数:-ff 或 0x-ff都可以。

[ 本帖最后由 lz1091914999 于 2011-7-9 11:58 编辑 ]

My life is brilliant
2011-07-08 16:23
博士无双
Rank: 2
等 级:论坛游民
帖 子:32
专家分:65
注 册:2011-7-5
收藏
得分:2 
#include<iostream>
#include<string>
using namespace std;
int main()
{   float x=0;
    int n,i;
    char t[10];
    cout<<"Input the digit:";
    cin>>t;
    n=strlen(t);
    for(i=0;i<n;i++)
    {
        x=x*16;
        if(t[i]>='0'&&t[i]<='9')
            x=x+t[i]-'0';
        else if(t[i]>='a'&&t[i]<='f')
            x=x+10+t[i]-'a';
        else if(t[i]>='A'||t[i]<='F')
            x=x+10+t[i]-'A';        
    }
    cout<<"The exchanged number:"<<x<<endl;

}
可以用,自己试过了
2011-07-08 21:38
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
cout<<"Input the digit:";
    cin>>t;
-----------------------------
这是什么? 看不懂的说。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-07-08 21:45
kongbei312
Rank: 2
等 级:论坛游民
帖 子:44
专家分:26
注 册:2011-6-15
收藏
得分:0 
非常感谢大家的帮助
呵呵
2011-07-09 10:50
菜鸟auto
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:100
注 册:2010-7-23
收藏
得分:0 
偶是来学习的 4楼是C++ 额。。。。
2011-07-09 16:04
兵马俑
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-7-11
收藏
得分:0 
haha
2011-07-11 17:50
a791454364
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-7-9
收藏
得分:0 
..
2011-07-11 20:38
快速回复:用函数,输入十六进制数,输出相应的十进制?
数据加载中...
 
   



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

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