实验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:
输入样例2:
输出样例2:
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--; }
|