BASIC-11 十六进制转十进制(无符号变量 字符串数组指针)

问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
6553

说明:第一次引用了太多变量 ,代码质量不高

#include<stdio.h>
unsigned int fun(char c[9])			//函数类型可以是int,因为输出按无符号输出
{
   
	unsigned int i,j,k,a,b=1,sum=0;	//十六进制的八位最大值=2^32-1,故用无符号
	for(i=0;c[i]!='\0';i++);		//求出位数
	k=i;							//用于循环求指数
	for(;i>0;i--)					//从低位开始循环
	{
   
		if(c[i-1]>='A')				//判断是否为10~15
		{
   
			a=c[i-1]-'A'+10;		//求该位的十进制数值
			j=i;					//求位数对应指数的循环变量
			for(;j<k;j++)
				b=b*16;				//求出位数对应指数
			sum=sum+a*b;			//求出该数的转换
			b=1;					//每次循环重新赋值
		}
		else
		{
   
			a=c[i-1]-'0';
			j=i;
			for(;j<k
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值