标题:编写函数 void myitoa(int n,char *str)求改进写完的代码
只看楼主
fengyinxqy
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2020-5-2
结帖率:92.31%
已结贴  问题点数:5 回复次数:8 
编写函数 void myitoa(int n,char *str)求改进写完的代码
程序代码:
#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);
}
搜索更多相关主题的帖子: int str void char 函数 
2020-05-08 11:04
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:2 
最简单的代码:
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;
}

能编个毛线衣吗?
2020-05-08 12:09
fengyinxqy
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2020-5-2
得分:0 
回复 2楼 wmf2014
非常感谢,就是要求自己写嘿嘿
2020-05-08 13:53
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:2 
以下是引用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的
这种情况你可以考虑套皮

https://zh.
2020-05-08 13:58
fengyinxqy
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2020-5-2
得分:0 
回复 4楼 lin5161678
没懂您说的套皮的意思
2020-05-08 14:34
fengyinxqy
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2020-5-2
得分:0 
回复 2楼 wmf2014
是哎,第二种返回值改变了,要求void类型
2020-05-08 14:39
fulltimelink
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:171
专家分:752
注 册:2020-4-1
得分:2 
纯递归应该也能
程序代码:
#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;
}
2020-05-08 14:57
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
程序代码:
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;
}

https://zh.
2020-05-08 15:40
fengyinxqy
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2020-5-2
得分:0 
回复 8楼 lin5161678
所以套皮就是递归的意思吗?
2020-05-08 18:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501486-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017661 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved