| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1305 人关注过本帖
标题:关于16进制化为十进制问题,
只看楼主 加入收藏
四眼罗
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-5-19
收藏
 问题点数:0 回复次数:5 
关于16进制化为十进制问题,
#include <stdio.h>
#define li 1
#define wai 0
main()
{int c,i=0;char s[1000];
unsigned double x;
while((c=getchar())!='\n')
{s[i]=c;i++;}
i--;
x=hoti(s);
printf("%u\n",x);
}
int hoti(char s[])
{int i,a,b,c=0;
i=0;
if(s[i]=='0')
{i++;
if(s[i]=='x'||s[i]=='X')
i++;
}
a=li;
for(;a==li;i++)
{if(s[i]>='0'&&s[i]<='9') {b=s[i]-'0';i++;}
else if(s[i]>='a'&&s[i]<='f') {b=s[i]-'a'+10;i++;}
else if(s[i]>='A'&&s[i]<='F') {b=s[i]-'A'+10;i++;}
else a=wai;
if(a==li) c=16*c+b;
}
return c;
}




程序如上述,为什么总是输出01?不明白啊~

郁闷,花了好久写完的……都没反应
搜索更多相关主题的帖子: 进制 
2008-11-25 15:22
四眼罗
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-5-19
收藏
得分:0 


没人理我……

5555555
2008-11-26 12:00
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
....
不太理解你的程序...
为什么
程序代码:
  for(;a==li;i++){
    if(s[i]>='0'&& s[i]<='9'){
      b=s[i]-'0';
      i++;
      e--;
    }else if(s[i]>='a'&&s[i]<='f'){
      b=s[i]-'a'+10;
      i++;
      e--;
    }else if(s[i]>='A'&&s[i]<='F'){
      b=s[i]-'A'+10;
      i++;
      e--;
    }else
      a=wai;
    if(a==li)
      c=c+pow(b,16*e);
  }

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-11-26 13:02
gengjf025
Rank: 2
等 级:论坛游民
帖 子:9
专家分:20
注 册:2008-11-22
收藏
得分:0 
#include <stdio.h>
#define li 1
#define wai 0

int hoti(char s[])
{    
    int i,a,b,c=0;
    i=0;
    if(s[i]=='0')
    {
        i++;
        if(s[i]=='x'||s[i]=='X')
            i++;
    }
    a=li;
    for(;a==li;i++)
    {
        if(s[i]>='0'&&s[i]<='9')
        {
            b=s[i]-'0';
            //i++;
        }
        else if(s[i]>='a'&&s[i]<='f')
        {
            b=s[i]-'a'+10;
        //    i++;
        }
        else if(s[i]>='A'&&s[i]<='F')
        {
            b=s[i]-'A'+10;
            //i++;
        }
        else
            a=wai;
        if(a==li)
            c=16*c+b;
    }
    
    return c;
}

void main()
{
    int c,i=0;char s[1000];
    unsigned double x;
    while((c=getchar())!='\n')
    {
        s[i]=c;
        i++;
    }
        i--;
        x=hoti(s);
        printf("%u\n",x);
}
改了一些小错误,其他没什么要说明的
2008-11-26 15:03
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
#include <stdio.h>
#define li 1
#define wai 0

int hoti(char s[]);    //需要加声明

main()
{int c,i=0;char s[1000];
int x;   //类型应是整型,应为函数int hoti(char s[]); 是整型的。取其他的没必要
while((c=getchar())!='\n')
{s[i]=c;i++;}
s[i]='\0';       //需要加串结束符
i--;
x=hoti(s);
printf("%s=%u\n",s,x);
}

int hoti(char s[])
{int i,a,b,c=0;
i=0;
if(s[i]=='0')
{i++;
if(s[i]=='x'||s[i]=='X')
i++;
}
a=li;
for(;a==li;i++)      //这里有了i++后面就不需要了   
{if(s[i]>='0'&&s[i]<='9') {b=s[i]-'0';}
else if(s[i]>='a'&&s[i]<='f') {b=s[i]-'a'+10;}
else if(s[i]>='A'&&s[i]<='F') {b=s[i]-'A'+10;}
else a=wai;
if(a==li) c=16*c+b;
}
return c;
}
2008-11-26 16:22
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
你编的思路已经很不错了。给一个修改的。
// 关于16进制化为十进制问题,

#include <stdio.h>
//========================================
// 函数功能: 16进制转化为十进制
// 入口参数: 16进制数据(字符串)
// 返回值:   十进制结果
//========================================
int hoti(char s[])
{
    int i,t,sum=0;
    //------------
    i=0;
    if(s[i]=='0')
    {
        i++;
        if(s[i]=='x'||s[i]=='X')i++;
    }
    //-----------------
   for(;s[i];i++)
   {
        if(s[i]>='0'&&s[i]<='9')t=s[i]-'0';
        else if(s[i]>='a'&&s[i]<='f') t=s[i]-'a'+10;
        else if(s[i]>='A'&&s[i]<='F') t=s[i]-'A'+10;
        sum=sum*16+t;
   }
   return sum;
}

//==主函数
void main()
{
    char s[100];
    int n;
    printf("请输入一个16进制数据:\n");
    gets(s);
    n=hoti(s);
    printf("十进制结果=%d\n",n);
}
2008-11-26 16:25
快速回复:关于16进制化为十进制问题,
数据加载中...
 
   



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

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