| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 377 人关注过本帖
标题:求16进制转化10进制的算法,求改错
只看楼主 加入收藏
t1melost
Rank: 1
等 级:新手上路
帖 子:22
专家分:3
注 册:2010-12-6
结帖率:70%
收藏
已结贴  问题点数:10 回复次数:3 
求16进制转化10进制的算法,求改错
main()
{
 int ch[80];
 int change(char a[]);
 printf("please input any numbers:\n");
 gets(ch);
 change(ch);
 printf("%d\n",change(ch));
 }
 int change(char s1[])
 {
  int i,n,m;
  m=0;
  for(i=0;s1[i]!='\0';i++)
  {
   if(s1[i]>='0'&&s1[i]<='9')
     {  n=s1[i]-'0';
    m=n*pow(16,(i-1))+m;
     }
   if(s1[i]>='a'&&s1[i]<='f')
     {  n=s1[i]-'a'+10;
    m=n*pow(16,(i-1))+m;
     }
   if(s1[i]>='A'&&s1[i]<='F')
     {  n=s1[i]-'A'+10;
    m=n*pow(16,(i-1))+m;
     }
     return(m);
  }
}
求改错
搜索更多相关主题的帖子: 进制 算法 改错 
2010-12-06 18:14
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:10 
i=0的时a[0]应该是16进制数中的最高位,你程序里面把它当成最低位了。
2010-12-06 19:20
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:0 
程序代码:
#define NUMBER 16
#include "stdio.h"
#include "string.h"
#include "math.h"
void main()
{
    int mi(int x);
    char a[17]={"0123456789ABCDEF"};
    char c[20];
    int b[16]={'0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15'};
    int i=0,j=0;
    int m,n,t,num=0;
    gets(c);
        m=strlen(c);
        for(i=0;i<m;i++)
        {
            for(j=0;j<16;j++)
            {
                if(c[i]==a[j])
                {
                    n=m-i-1;
                    num+=j*mi(n);  /*调用我自己山寨的求幂函数*/
                 }
            }
        }
printf("输出转换后的十进制数:%d\n",num);
}



int mi(int x)
{int t=1,n;
for(n=x;n>0;n--)
  t*=NUMBER;
return t;
}
我之前在回另一个帖子时写的,楼主可以参考一下,求幂函数是我山寨的。
2010-12-06 19:27
t1melost
Rank: 1
等 级:新手上路
帖 子:22
专家分:3
注 册:2010-12-6
收藏
得分:0 
en~
2011-03-02 22:43
快速回复:求16进制转化10进制的算法,求改错
数据加载中...
 
   



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

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