请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出

本文介绍了一个使用C语言编写的程序,该程序能够将十进制数转换为指定进制(包括十六进制)的字符串形式,并通过翻转字符数组实现字符串反转。程序包括三个主要函数:strRev用于字符串反转,sixteen专用于十进制到十六进制的转换,fun函数则实现了通用的进制转换。

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

include<stdio.h>
#include<string.h>
#define N 10

void strRev(char *s)
{
	char temp;
	char *end = s + strlen(s) - 1;
	
	while (end > s)
	{
		temp = *s;
		*s = *end;
		*end = temp;
		--end;
		++s;
	}
}

void sixteen(char *s, int n)
{
	char *p = s;

	while(n != 0)    
	{
		switch(n % 16)
		{
			case 0: *p = '0';break;    
		    case 1: *p = '1';break;
			case 2: *p = '2';break;
			case 3: *p = '3';break;    
			case 4: *p = '4';break;    
		    case 5: *p = '5';break;    
		    case 6: *p = '6';break;    
			case 7: *p = '7';break;    
	        case 8: *p = '8';break;    
		    case 9: *p = '9';break;
			case 10: *p = 'A';break;    
			case 11: *p = 'B';break;    
		    case 12: *p = 'C';break;
			case 13: *p = 'D';break;
			case 14: *p = 'E';break;
			case 15: *p = 'F';break;
		}  
		n = n / 16;    
		p++;
	}
	*p = '\0';
}

void fun(char *s, int n, int m)
{
	char *p = s;

	if( m == 16)
	{
		sixteen(s,n);
	}
	else
	{
		while (n != 0) 
	    {
			*p = n % m + '0';
		    n /= m;
		    p++;
	    }
		*p = '\0';
	}
}

int main()
{
	int n;
	int m;
	char s[N];

	printf("Enter a number!\n");
	scanf("%d",&n);
	printf("Enter scale!\n");
	scanf("%d",&m);

	fun(s,n,m);
	strRev(s);

	printf("%s\n",s);

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值