实验8-2-9 长整数转化成16进制字符串 (15分)
本题要求实现一个将长整数转化成16进制字符串的简单函数。

函数接口定义:
void f( long int x, char *p );

其中x是待转化的十进制长整数,p指向某个字符数组的首元素。函数f的功能是把转换所得的16进制字符串写入p所指向的数组。16进制的A~F为大写字母。

裁判测试程序样例:

#include <stdio.h>
#define MAXN 10

void f( long int x, char *p );

int main()
{
    long int x;
    char s[MAXN] = "";

    scanf("%ld", &x);
    f(x, s);
    printf("%s\n", s);

    return 0;
}

/* 你的代码将被嵌在这里 */

      

输入样例1:
123456789

输出样例1:
75BCD15

输入样例2:
-125

输出样例2:
-7D

void f(long int x,char *p){
	int div;
	int k=0;
	if(x==0){
		*p='0';
	}
	if(x<0){
		x=-x;
		*p='-';
		p++;
	}
	for(int i=0;x!=0;i++){
		div=x%16;
		x=x/16;
		if((div-10)<0)
		*(p+i)=div+'0';
		else *(p+i)='A'+div-10;
		div=0;
		k++;
	}
	//reverse
	for(int i=0;i<k/2;i++){
		char temp=p[i];
		p[i]=p[k-1-i];
		p[k-1-i]=temp;
	}
} 
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐