| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 544 人关注过本帖
标题:兄弟们~~我给大家出一道题目
只看楼主 加入收藏
zero0810
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-7-28
收藏
 问题点数:0 回复次数:5 
兄弟们~~我给大家出一道题目
要以十进制的输入输出方法来将输入的十六进制转换成十进制
就是说通过函数计算来将十六进制转换成十进制
搜索更多相关主题的帖子: 兄弟 
2006-07-31 09:10
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
如果不是很大的数倒还容易解决。
回去写写。

倚天照海花无数,流水高山心自知。
2006-07-31 13:23
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

#include<stdio.h>
#include<string.h>
#include<math.h>

long x_d(char str[],int n)
{
int i,t;
long sum=0;
for(i=0;i<n;i++)
{
if(str[i]>='a')
t=str[i]-'a'+10;
else
t=str[i]-'0';
sum=sum+t*(long)pow(16,n-1-i);
}
return(sum);
}

int main()
{

char str[20];
int len;

printf("Please input with a b c d e f:");
scanf("%s",str);
len=strlen(str);
printf("%ld\n",x_d(str,len));
return(0);
}


倚天照海花无数,流水高山心自知。
2006-07-31 14:05
罗彬
Rank: 1
等 级:新手上路
帖 子:141
专家分:0
注 册:2006-4-24
收藏
得分:0 

其实用S=S*16+I-'0'用这种形式循环,I就是其中每一个16进制


举个例子吧,0X123转化为10进制就应该用这种算法(((1*16+2)*16)+3)*16---就这种形式,


2006-07-31 20:27
haroldi
Rank: 1
等 级:新手上路
帖 子:158
专家分:0
注 册:2006-7-22
收藏
得分:0 

//一个很苯的办法...表笑我.
#include<stdio.h>
#include<ctype.h>
#define DEC 10
#define HEX 16

int main(void)
{
const char cstr[]="ABCDEF";
char str[20];
printf("Input a integer:");
while(gets(str)&&str[0]!='\0')
{
int num[20],flag=1,i=0,j;
long n=0;
if(str[0]=='-') {flag=-1;printf("-");i=1;}
for(;i<strlen(str);i++)
{
printf("%c",str[i]);
str[i]=toupper(str[i]); //判断;
if(str[i]<'0'||(str[i]>'9'&&str[i]<'A')||str[i]>'F')
{printf("... Take your time.\n");system("pause");exit (1);}
for(j=0;j<6;j++) //a~f的转换;
{
if(str[i]==cstr[j]) {num[i]=DEC+j;break;}
else num[i]=str[i]-'0';
}
}
for(j=(str[0]=='-'?1:0);j<=i;j++) //输出;
{
if(j<i) n=n*HEX+num[j];
else {printf(" (Hex) is: %ld (Dec).\n\n",flag*n);}
}
printf("Next:");
}
system("pause");
return 0;
}

感觉好乱,,,不过是我自己试了好多次的啊.尽管还没变成函数调用...
如果要简练的话,得用strtol吧.


Do people want thick road ...
2006-08-01 02:45
zhongwen
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-6-12
收藏
得分:0 

#include<stdio.h>
#include<string.h>
#include<math.h>
long trans(char *p,int m)
{
long sum=0;
int i,a;
for(i=m-1;i>=0;i--)
{
if(*(p+i)>='A'&&*(p+i)<='F')
a=*(p+i)-'A'+10;
else if(*(p+i)>='a'&&*(p+i)<='f')
a=*(p+i)-'a'+10;
else
a=*(p+i)-48;
sum+=a*pow(16,m-1-i);
}
return sum;
}
void main()
{
int n;
long h;
char data[100];
gets(data);

n=strlen(data);
h=trans(data,n);
printf("%d",h);
getch();
}

2006-08-01 10:03
快速回复:兄弟们~~我给大家出一道题目
数据加载中...
 
   



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

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