函数接口定义:
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
C
#include<string.h>
void f( long int x, char *p ){
int i=0,j,l,flag=0;
char q[10];
if(x<0){x=-x;flag=1;}
if(x==0){*(q+i)='0';i++;}
while(x!=0){
switch(x%16){
case 10:*(q+i)='A';break;
case 11:*(q+i)='B';break;
case 12:*(q+i)='C';break;
case 13:*(q+i)='D';break;
case 14:*(q+i)='E';break;
case 15:*(q+i)='F';break;
default:*(q+i)=x%16+'0';break;
}
x=x/16;
i++;
}
if(flag){*(q+i)='-';i++;}
*(q+i)='\0';
l=strlen(q);
for(i=0,j=l-1;i<l;i++,j--){
*(p+j)=*(q+i);
}
}
734

被折叠的 条评论
为什么被折叠?



