将1~36进制的数字转成十进制数输入

进制转换器:

功能:用户输入进制数,然后输入数字,将该 进制数的数字转换成十进制数进行输出。

语言:C语言。

要实现这一功能,其实并不复杂,我们只要了解两个C语言的库函数即可。

下面我先给出代码,大家结合代码中的注释先了解一下这个过程,然后我来带大家认识一下这两个函数的基本功能。

//进制转换器
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

void menu()
{
	printf("****************\n");
	printf(" 请输入进制数1~36\n");
	printf("  输入0即可退出  \n");
	printf("****************\n");
}
int main()
{
	int num = 0;//数字
	int input = 0;//进制数
	char str[100000];//进制数的字符存储

	//while循环有利于更好的人机交互
	while (1)
	{
		menu();
		scanf("%d", &input);

    if (input == 0)
			break;

		printf("请输入数字:>");
	    scanf("%d", &num);

		itoa(num, str, 10);//讲输入的数字转换成字符存放在str的字符数组中,以便strtol进行进制的转换

		//注意对于123asd这样的输入,strtol只会处理字符前面的正常数据-123
		long ret = strtol(str, NULL, input);
		printf("%d进制的%d的十进制数字是:%ld\n", input, num, ret);
		
		system("pause");
		system("cls");
	}

	printf("Bey!\n");
	return 0;
}

 先来介绍一下itoa函数,这个函数不难理解,其实就是将输入的数字转换成字符存储在数组中,为什么要将数字转换成字符串呢?

再来看另外一个函数strtol。

 这个函数的参数要求是将base进制的char*的str转换成十进制数。返回值的类型是long int 类型。

这也就是为什么我们需要itoa函数将输入的数字转换成字符串存储在str数组中了,至于strtol函数中的第二个参数endprt是处理str中非数字字符的,也就是当str中含有数字字符和非数字字符时(比如ABCD),非数字会被放在endptr中,但是我们可以不在乎这一点,所以我直接将该位置设置为NULL。

有关这两个函数的更多细节部分,大家可以去这个网站上学习——https://cplusplus.com/

 这个网站更新了,但是没有老版的方便,大家点击右上角切换到老版,在搜索框里输入自己要查询的函数名就OK了。

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南山忆874

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值