标题:题目是编写一个函数将一个十六进制数转化为十进制数,请问我程序错在哪?求 ...
只看楼主
风雨晨曦
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2017-12-5
结帖率:100%
已结贴  问题点数:20 回复次数:16 
题目是编写一个函数将一个十六进制数转化为十进制数,请问我程序错在哪?求指教!谢谢!
代码:
#include<stdio.h>
#include<math.h>
int con(int);
int main(){
    int i,k;
    printf("请输入一个十六进制数:");
    scanf("%x",&i);
    k=con(i);
    printf("该数转化成十进制数为%d",k);
}
int con(int j){
    int sum=0,count=0;
    if(j=0){
        printf("该数转化成十进制数为1");
    }
    while(j){
        sum+=(j%10)*pow(16,count);
        j/=10;
        count++;
    }
    return sum;
}
搜索更多相关主题的帖子: 一个数 十六进制 转化 十进制 int 
2018-01-01 22:47
风雨晨曦
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2017-12-5
得分:0 
各位,很急!!马上就得提交了!
2018-01-01 22:59
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
int con(int j)
{
    int sum=0, m=1;
    for (; j; j/=16,m*=16)
       sum = sum + (j%16)*m ;
    return sum;
}
2018-01-01 23:35
风雨晨曦
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2017-12-5
得分:0 
回复 3楼 吹水佬
按你的作还是得不出结果啊,
2018-01-01 23:51
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用风雨晨曦在2018-1-1 23:51:15的发言:

按你的作还是得不出结果啊,

你想要的结果是什么?
如果只是显示,这样就可以:
    scanf("%x",&i);
    printf("该数转化成十进制数为%d",i);
2018-01-02 05:54
风雨晨曦
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2017-12-5
得分:0 
回复 5楼 吹水佬
你这个我知道,但题目要求一定得编写一个函数来转化,我编的这个函数的意思就是想把输入的十六进制数的位数都逐个拆分出来,可是运行后就没结果了
2018-01-02 12:41
风雨晨曦
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2017-12-5
得分:0 
回复 5楼 吹水佬
运行后就出现这个结果:
2018-01-02 12:51
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
大约这个样子你看如何
程序代码:
#include <stdio.h>
#include <string.h>

int hextodec(char t[]);
int mypow(int s);

int main()
{
    char t[100]={'\0'};
    printf("请输入一个十六进制数:");
    scanf("%s",t);
    int k=hextodec(t);
    printf("该数转化成十进制数为%d",k);
} 

int mypow(int s)
{
    int t=1;
    for(int i=0;i<s;i++) t*=16;
    return t;
}

int hextodec(char t[])
{
    int sum=0;
    size_t len=strlen(t);
    for(size_t i=0;i<len;i++)
    {
        if(t[i]>='0' && t[i]<='9') sum+=(t[i]-'0')*mypow(len-i-1);
        else
        {
            if(t[i]>='a' && t[i]<='f')  sum+=(t[i]-'W')*mypow(len-i-1);
            if(t[i]>='A' && t[i]<='F')  sum+=(t[i]-'7')*mypow(len-i-1);
        }
    }
    return sum;
} 

请输入一个十六进制数:abcdef
该数转化成十进制数为11259375请按任意键继续. . .



DO IT YOURSELF !
2018-01-02 14:19
x610665322
Rank: 1
等 级:新手上路
帖 子:18
专家分:7
注 册:2017-12-26
得分:0 
回复 8楼 wp231957
一看你就是大神
2018-01-02 15:20
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:7 
以下是引用风雨晨曦在2018-1-2 12:51:25的发言:

运行后就出现这个结果:

我这不是这样子,你运行的是什么代码?
2018-01-02 15:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483886-1-1.html




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

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