十六进制字符串转十进制数的c代码

本文介绍了一个简单的C语言程序,该程序可以将用户输入的十六进制数转换为等值的十进制数。程序使用了栈来辅助处理转换过程,并能够正确处理包含小数部分的十六进制数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

int main()
{
 char ch;//用来接受一个输入字符
 int stack[50];//存储处理后的十六进制对应的十进制
 int top=0;//栈里面数据的个数
 int decimal=0;//小数点在输入字符串中的位置,从0号位置开始计数
 float num=0;//计算最后的十进制数

 printf("请输入十六进制(0-9,a-f,A-F):");
 while ((ch=getchar())!='/n')
 {
  if (ch>='0'&&ch<='9')
   stack[top++]=int(ch-48);
  else if (ch>='A'&&ch<='F')
   stack[top++]=int(ch-55);
  else if (ch>='a'&&ch<='f')
   stack[top++]=int(ch-87);
  else if (ch=='.')//如果是小数点
   decimal=top;//表明从decimal个数据以后的数据都是小数部分
  else {
   printf("输入了非法数据");
   return 0;
  }
 }

 while(top)
 {
  if (decimal!=0&&top>decimal)//计算小数部分
   num+=stack[--top]/pow(16,top-decimal+1);
  else
   num+=stack[--top]*pow(16,top);//计算整数部分
 }
 printf("%.4f",num);
 getchar();
 return 1;
}

 

2009年03月17日,留作纪念!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值