注册 登录
编程论坛 C语言论坛

编写函数 void myitoa(int n,char *str)求改进写完的代码

fengyinxqy 发布于 2020-05-08 11:04, 2457 次点击
程序代码:
#include <stdio.h>
void myitoa(int n, char *str); //自定义函数声明
int main()
{
    char str[20]; //定义一个数组
    int m;
    printf("Enter some numbers:");
    scanf("%d", &m);     //输入一串数字
    myitoa(m, str);      //调用函数
    printf("%s\n", str); //输出字符串
    return 0;
}
void myitoa(int n, char *str) //自定义函数
{
    int x = 0, j = 0;
    j = n;
    for (x = 1; j > 10; j /= 10)
    {
        x *= 10;
    }
    for (; x > 0; x /= 10)
    {
        *str++ = '0' + n / x; //取下一个数字
        n %= x;
    }
    *str = '\0';
    printf("%s\n", str);
}
8 回复
#2
wmf20142020-05-08 12:09
最简单的代码:
void myitoa(int n, char *str) //自定义函数
{
    sprintf(str, "%d", n);
}


必须自己写的话如下:
程序代码:
#include <stdio.h>
int myitoa(int n, char *str); //自定义函数声明
int main()
{
    char str[20]; //定义一个数组
    int m;
    printf("Enter some numbers:");
    scanf("%d", &m);     //输入一串数字
    myitoa(m, str);      //调用函数
    printf("%s\n", str); //输出字符串
    return 0;
}
int myitoa(int n, char *str) //自定义函数
{
    int i;
    if (!n)return 0;
    i = myitoa(n / 10, str);
    str[i] = '0' + n % 10;
    str[i + 1] = 0;
    return i + 1;
}
#3
fengyinxqy2020-05-08 13:53
回复 2楼 wmf2014
非常感谢,就是要求自己写嘿嘿
#4
lin51616782020-05-08 13:58
以下是引用wmf2014在2020-5-8 12:09:01的发言:

最简单的代码:
void myitoa(int n, char *str) //自定义函数
{
    sprintf(str, "%d", n);
}

必须自己写的话如下:
#include <stdio.h>
int myitoa(int n, char *str); //自定义函数声明
int main()
{
    char str[20]; //定义一个数组
    int m;
    printf("Enter some numbers:");
    scanf("%d", &m);     //输入一串数字
    myitoa(m, str);      //调用函数
    printf("%s\n", str); //输出字符串
    return 0;
}
int myitoa(int n, char *str) //自定义函数
{
    int i;
    if (!n)return 0;
    i = myitoa(n / 10, str);
    str = '0' + n % 10;
    str1] = 0;
    return i + 1;
}

不太合适 改了返回值类型
按照题目原先的要求返回值类型应该是void的
这种情况你可以考虑套皮
#5
fengyinxqy2020-05-08 14:34
回复 4楼 lin5161678
没懂您说的套皮的意思
#6
fengyinxqy2020-05-08 14:39
回复 2楼 wmf2014
是哎,第二种返回值改变了,要求void类型
#7
fulltimelink2020-05-08 14:57
纯递归应该也能
程序代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void myitoa(int n, char *str); //自定义函数声明
int main()
{
    char str[20] = {'\0'}; //定义一个数组
    int m;
    printf("Enter some numbers:");
    scanf("%d", &m);     //输入一串数字
    myitoa(m, str);      //调用函数
    printf("%s\n", str); //输出字符串
    return 0;
}
void myitoa(int n, char *str) //自定义函数
{   
    unsigned quotient;
    quotient = n / 10;
    if (0 != quotient) {
        myitoa(quotient, str);
    }
    while ('\0' != *str) { str++; };
    *str = '0' + n % 10;
}
#8
lin51616782020-05-08 15:40
程序代码:
void myitoa(int n, char *str) //自定义函数
{
    int run(int n, char *str);
    int m = run(n, str); //这个就是套皮
    str[m] = 0;
}

int run(int n, char *str)
{
    if (n == 0)
        return 0;
    int m = run(n / 10, str);
    str[m] = '0' + n % 10;
    return m + 1;
}
#9
fengyinxqy2020-05-08 18:47
回复 8楼 lin5161678
所以套皮就是递归的意思吗?
1