| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1842 人关注过本帖
标题:十六制转十进制的算法?
只看楼主 加入收藏
waynebeat
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2006-8-26
收藏
 问题点数:0 回复次数:5 
十六制转十进制的算法?

我知道用比如:984转十进制是 9*16^2+8*16+4

但是这个用函数不是太好写

请问还有别的算法吗?

搜索更多相关主题的帖子: 算法 十进制 
2006-08-29 12:04
cwande
Rank: 2
等 级:新手上路
威 望:3
帖 子:333
专家分:0
注 册:2006-8-18
收藏
得分:0 

怎么会难写,一个for循环就搞定了


汗,都懒得写代码了.......... cheat了一个威望,哈.....
2006-08-29 12:15
waynebeat
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2006-8-26
收藏
得分:0 

呵呵,忘了说,要用递归,我不会,能写个代码来看看吗,多谢了


只剩一年了………… 够了!
2006-08-29 12:25
cwande
Rank: 2
等 级:新手上路
威 望:3
帖 子:333
专家分:0
注 册:2006-8-18
收藏
得分:0 

[CODE]#include<stdio.h>
#include<string.h>
#define M 10
char s[M];
int len;
int power(int a,int b)//求a^b
{
int t=1,i;
for(i=1;i<=b;i++)
t*=a;
return t;
}
void dfs(int sum,int i)//递归
{
if(i==len)
{
printf("%d\n",sum);
return;
}
if(s[i]<='9')//数字是0——9
dfs(sum+(s[i]-48)*power(16,len-i-1),i+1);
else //数字是A--E
dfs(sum+(s[i]-55)*power(16,len-i-1),i+1);
return;
}

int main()
{
scanf("%s",s);//输入
len=strlen(s);
dfs(0,0);
return 0;
}[/CODE]

未验证,你试一下.


汗,都懒得写代码了.......... cheat了一个威望,哈.....
2006-08-29 13:05
横眉冷对
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2005-3-3
收藏
得分:0 

正好我前几天写了一个
用堆栈实现
#include<stdlib.h>
#include<stdio.h>
#define LEN sizeof(struct snode)
struct snode
{int data;
struct snode *next;
};
struct snode *stack=NULL;

void push(int value) //push a record to the top
{ struct snode *newp;


newp=(struct snode *)malloc(LEN);
newp->data=value;
newp->next=stack;
stack=newp;
}

void pop()
{struct snode *temp;

if(stack==NULL)
printf("The stack is empty\n");
else
{temp=stack;
stack=stack->next;
free(temp);
}
}


void Print_stack()
{struct snode *temp;
temp=stack;
while(temp!=NULL)
{
if(temp->data>=0&&temp->data<=9)
printf("%d",temp->data);
else
printf("%c",temp->data+87);


temp=temp->next;
}
}

main()
{long int num,temp;
int n;
printf("please input the number");
scanf("%d",&num);
printf("You want to converse the number to Bin or Octal or hex?");
printf("Bin :2\n");
printf("Octal:8\n");
printf("Hex :16\n");
scanf("%d",&n);
temp=num;
while(temp/n!=0)
{push(temp%n);
temp/=n;
}

printf("%d",temp);
Print_stack();
printf("\n");
}


MSN:jyycom@ 爱好:军事,体育,Rock。
2006-08-29 15:49
waynebeat
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2006-8-26
收藏
得分:0 

多谢大家帮忙,

不过只明白了四楼的代码,五楼的代码对我有点难,很多都不明白,没学过,呵呵,

还是谢谢了


只剩一年了………… 够了!
2006-08-29 18:30
快速回复:十六制转十进制的算法?
数据加载中...
 
   



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

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