十六进制数转换成十进制数C语言

详细解释一下编程语句 要求在主函数里负责收集字符,并判别它们是否为十六进制字符,另编一函数负责转换工作

第1个回答  2013-12-10
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <math.h>/*求字符串长度函数*/
int strlengh(char *s)
{
int i;
for(i=0;s[i]!='\0';i++);
return i;
}/*16进制转10进制函数*/
double tran(char *s)
{
int len=strlengh(s);/*求输入的字符串的长度*/
int ss[100] ;/*用于存放对字符的转换如f:15*/
int i;
double n=0.0;
/*对字符进行处理,将其每一位转换为整数,之后运算进行处理*/
for(i=0;i<len;i++)
{
if(s[i]=='F'||s[i]=='f')ss[i]=15;
else if(s[i]=='E'||s[i]=='e')ss[i]=14;
else if(s[i]=='D'||s[i]=='d')ss[i]=13;
else if(s[i]=='C'||s[i]=='c')ss[i]=12;
else if(s[i]=='B'||s[i]=='b')ss[i]=11;
else if(s[i]=='A'||s[i]=='a')ss[i]=10;
else ss[i]=(int)s[i];
}
/*对转换得到的整数进行转换处理*/
for(i=0;i<len;i++)
{
n+=ss[i]*pow(16,len-1-i);
}
return n;/*结果返回*/
}void main()
{
/*接收16进制数*/
char Hex[100];
printf("Please input Hex:\n");
gets(Hex);
/*转换*/
int Dec=(int)tran(Hex);
printf("Output Result:%d\n",Dec);}执行结果:本回答被网友采纳
第2个回答  2019-12-08
#include
#define
MAX
1000
void
main()
{
int
func(char
s[]);
int
c,i=0,flag=0,flag1=1;
char
t[MAX];
printf("请输入一个十六进制的数:\n");
while((c=getchar())!
='\0'&&i
='0'&&c<='9'||c>='a'&&c<='f'||c>='A'&&c<='F')
{
flag=1;
t[i++]=c;
}
else
if(flag)
{
t[i]='\0';
printf("十进制数为:%d\n",func(t));
printf("是否继续?");
c=getchar();
if(c=='N'||c=='n')
flag1=0;
else
{
flag=0;
i=0;
printf("\n输入一个十六进制的数:");
}
}
}
}
int
func(char
s[])
{
int
i,n=0;
for(i=0;s[i]!='\0';i++)
{if(s[i]>='0'&&s[i]<=9)
n=n*16+s[i]-'0';
if(s[i]>='a'&&s[i]<='f')
n=n*16+s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='F')
n=n*16+s[i]-'A'+10;
}
return(n);
}
第3个回答  2013-12-10
#include<stdio.h>
#define MAX 1000
void main()
{ int func(char s[]);
int c,i=0,flag=0,flag1=1;
char t[MAX];
printf("请输入一个十六进制的数:\n");
while((c=getchar())! ='\0'&&i<MAX&&flag1)
{ if(c>='0'&&c<='9'||c>='a'&&c<='f'||c>='A'&&c<='F')
{ flag=1;
t[i++]=c;
}
else if(flag)
{ t[i]='\0';
printf("十进制数为:%d\n",func(t));
printf("是否继续?");
c=getchar();
if(c=='N'||c=='n')
flag1=0;
else
{ flag=0;
i=0;
printf("\n输入一个十六进制的数:");
}
}
}
}
int func(char s[])
{
int i,n=0;
for(i=0;s[i]!='\0';i++)
{if(s[i]>='0'&&s[i]<=9)<br> n=n*16+s[i]-'0';<br> if(s[i]>='a'&&s[i]<='f')<br> n=n*16+s[i]-'a'+10;<br> if(s[i]>='A'&&s[i]<='F')<br> n=n*16+s[i]-'A'+10;<br>}
return(n);
}
相似回答