0%

3-5:itob(n,s,b)

文章时效性提示

本文发布于 467 天前,部分信息可能已经改变,请注意甄别。

《C程序设计语言》练习3-5
编写函数itob(n,s,b),将整数n转换为以b为底的数,并将转换结果以字符的形式保存到字符串s中,例如,itob(n,s,16)把整数n格式化为十六进制整数保存在s中。

代码:

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
38
39
40
41
#include <stdio.h>
#include <string.h>
void itob(int n,char s[],int b);
void Reverse(char R[]);
int main()
{
    int n = 3770;
    char s[100] = {0};
    int b = 16;
    itob(n,s,b);
    return 0;
}
void itob(int n,char s[],int b)
{
    int i = 0;
    for (i=0; n != 0; i++)
    {
        int j = n % b;
        if (j<10)//小于十进制的时候,用数字就够了
        {
            s[i] = j+'0';
            n = n / b;
        }
        else if (j<16)//适用于16进制时,还要用到字母
        {
            s[i] = j+'a'-10;
            n = n / b;
        }
    }
    Reverse(s);//翻转字符串
}
void Reverse(char R[])
{
    int c,i,j;
    for (i=0,j=strlen(R)-1; i<j; i++,j--)
    {
        c = R[i];
        R[i] = R[j];
        R[j] = c;
    }
}