12.20

11 篇文章 0 订阅
本文介绍了如何使用C语言实现一个函数,接收一个整数和一个基数(如16),将整数转换为逆序的十六进制字符串,并展示了strRev函数进行字符串反转的过程。通过实例展示了数字到十六进制的转换技巧和字符串操作的基本原理。
摘要由CSDN通过智能技术生成
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、付费专栏及课程。

余额充值