实验8-2-9 长整数转化成16进制字符串(15 分)

实验8-2-9 长整数转化成16进制字符串(15 分)

本题要求实现一个将长整数转化成16进制字符串的简单函数。

函数接口定义:

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

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

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#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:

1
123456789

输出样例1:

1
75BCD15

输入样例2:

1
-125

输出样例2:

1
-7D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#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;
}
void f(long int x,char *p)
{
char q;
static int i=0,j=0;
if(x<0){
x=-x;
*p='-';
p++;
}
q=x%16;
if(q<10)
q=('0'+q);
else
q=('A'+q-10);
x=x/16;
j++;
i=j;
if(x>0)
f(x,p);
*(p+(i-j))=q;
j--;
}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×