BASIC-10 十进制转十六进制 C语言版

这篇博客介绍了如何使用C语言通过循环和递归将十进制数转换为十六进制,适合初学者学习算法。文中提到了代码优化的几个要点,包括用循环替换递归,增强代码的可读性和结构清晰性,以及通过自定义函数来简化主函数,同时还提到全局变量在特定情况下的优势。
摘要由CSDN通过智能技术生成

蓝桥杯的算法练习循序渐进,本例引入递归、循环,对初学者学习算法非常有启发,代码及思路如下:

	#include<stdio.h>
	int a[30],i=0; //定义全局数组a和全局变量i
	void getNum(long b)//  将输入的数除16取余数放入数组,直到这个数小于16
	{
		int c;
		while(b>0)  //   将b/16赋给b,当b=0时,b%16<16,循环结束,转化完毕
		{
			if(b<16)
			{
				a[i]=b;
				break;
			}
			else
			{
				c=b/16;
				a[i]=b%16;
				b=c;
				i++;
			}
		}
	}
	int main()
	{
		long num;
		int j;
		scanf("%ld",&num);
		getNum(num);  //进制转换
		for(j=i;j>=0;j--)// 从最高位索引输出数组元素
		{
			if(a[j]<10){
				printf("%d",a[j]);  // 小于10时,直接输出
			}
			else
			{
				switch(a[j])  //大于等于10时,使用switch转换输出
				{
					case 10:
						printf("A");
						break;
					case 11:
						printf("B");
						break;
					case 12:
						printf("C");
						break;
					case 13:
						printf("D");
						break;
					case 14:
						printf("E");
						break;
					case 15:
						printf("F");
						break;
				}
			}
		}
		return 0;
	} 
几点意见:

(1)使用了一个循环代替了递归;
(2)很多判断,结构和层次更为清晰;
(3)自定义函数实现功能,简化主函数的结构;
(4)全局变量有时候非常好用。

下面是原生代码

#include<stdio.h>
int a[30],i=0;
void getNum(long b)
{
	int c;
	while(b>0)
	{
		if(b<16)
		{
			a[i]=b;
			break;
		}
		else
		{
			c=b/16;
			a[i]=b%16;
			b=c;
			i++;
		}
	}
	
}
int main()
{
	long num;
	int j;
	scanf("%ld",&num);
	getNum(num);
	for(j=i;j>=0;j--)
	{
		if(a[j]<10){
			printf("%d",a[j]);
		}
		else
		{
			switch(a[j])
			{
				case 10:
					printf("A");
					break;
				case 11:
					printf("B");
					break;
				case 12:
					printf("C");
					break;
				case 13:
					printf("D");
					break;
				case 14:
					printf("E");
					break;
				case 15:
					printf("F");
					break;
			}
		}
	}
	return 0;
} 

蓝桥杯评测

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值