【MAC 上学习 C++】Day 51-3. 实验8-2-9 长整数转化成16进制字符串 (15 分)

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

1. 题目摘自

https://pintia.cn/problem-sets/13/problems/542

2. 题目内容

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

函数接口定义:

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

输入样例1:

123456789

输出样例1:

75BCD15

输入样例2:

-125

输出样例2:

-7D

3. 源码参考
#include 

using namespace std;

#define MAXN 10

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

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

    cin >> x;
    f(x, s);
    cout << s << endl;

    return 0;
}

void f( long int x, char *p )
{
  int k, a;
  int i, n;
  char t[MAXN] = "";

  k = 0;
  if(x < 0)
  {
    p[k++] = '-';
    x = -x;
  }

  n = 0;
  while(x)
  {
    a = x % 16;
    if(a < 10)
    {
      t[n++] = '0' + a;
    }
    else
    {
      t[n++] = 'A' + (a - 10);
    }

    x /= 16;
  }

  for(i = 0; i < n; i++)
  {
    p[i + k] = t[n - i - 1];
  }

  return;
}

你可能感兴趣的:(【MAC 上学习 C++】Day 51-3. 实验8-2-9 长整数转化成16进制字符串 (15 分))