文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C程序习题-将一个整数转化成字符串[8.17]

C程序习题-将一个整数转化成字符串[8.17]

时间:2010-08-11  来源:chengxiaopeng

   用递归法将一个整数n转化成字符串。例如,输入483,应输出字符串"483".n的位数不确定,可以是任意位数的整数。    习题答案上有用递归操作的函数,不过我看不太懂。看来要慢慢的去阅读源代码了。我自己写了一个函数convert1(int)。此函数的原理是进行求余操作,然后将求余结果存在数组中,然后将数组翻转操作,即可得到我们想要的效果。代码如下:  

#include <stdio.h>

void convert1(int);
char int2char(int);
void inverse(char[]);
void convert(int); //书上编写的函数,不过我分析的还有些迷糊。

int main(int argc, char *argv[])
{
    int number;
    printf("please input a number:");
    scanf("%d",&number);
    convert1(number); //调用我写的函数,虽然复杂,还算能使用,书上要求用递归,这点我没有做到。

    system("pause");
    return 0;
}

void convert1(int n)
{
     char ch[10];
     int m = 0;
     int i = n,j,k;
     do
     {
       j = i % 10;
       ch[m++] = int2char(j);
       i = (i - j) / 10;
     }while (i);
     ch[m] = '\0';
     inverse(ch); //begin inverse.

     puts(ch);
}

char int2char(int n)
{
     char c;
     if (n >= 0 && n <= 9)
     {
        switch (n)
        {
               case 0:
                    c = '0';
                    break;
               case 1:
                    c = '1';
                    break;
               case 2:
                    c = '2';
                    break;
               case 3:
                    c = '3';
                    break;
               case 4:
                    c = '4';
                    break;
               case 5:
                    c = '5';
                    break;
               case 6:
                    c = '6';
                    break;
               case 7:
                    c = '7';
                    break;
               case 8:
                    c = '8';
                    break;
               case 9:
                    c = '9';
                    break;
        }
     }
     else
     {
         c = ' ';
     }
     return c;
}

void inverse(char ch[])
{
     int begin = 0, end = strlen(ch) - 1, mid = end / 2;
     char c;
     do
     {
        c = ch[begin];
        ch[begin ++] = ch[end];
        ch[end --] = c;
     }while (begin < mid);
}

void convert(int n)
{
     int i;
     if ((i = n / 10) != 0)
     {
        convert(i);
     }
     putchar(n % 10 + '0');
}


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载