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

关于整数转数组的问题,请问这串代码哪里有问题

komorebi0110 发布于 2019-12-15 14:07, 1113 次点击
程序代码:
#include<stdio.h>
#include<string.h>
int num(int x);
int main()
{
    char a[100000],b[100000];
    int n;
    int i=0;
    scanf("%d",&n);
    int str=num(n);
    for(;i<str;i++)
    {   a[str-1-i]=n%10;
        n/=10;
    }
    strncpy(b,a,str);
    printf("%s",b);
    return 0;
}
int num(int x)
{
    int i=0;
    while(x){
     i++;
     x/=10;}
    return i;
}

7 回复
#2
komorebi01102019-12-15 14:11
居然不能传图片 我在调试的时候输入12345
a就是"\001\002\003\004\005",'\000'
最后就会输出乱码了,不知道是哪里出现问题了
#3
komorebi01102019-12-15 14:12
使用递归方法定义函数i2a,将1个正整数转换成字符串。
要求:不调用库函数sprintf、itoa。
Note:这个函数的功能与非标准库函数itoa相类似。
//********** Specification of i2a **********
char* i2a(char* p,int n);
/* PreCondition:
     n is a non-negative integer,
     p is a pointer to a buffer
   PostCondition:
     put string representation of n in a buffer pointed by p,
     and return p
Retrn char*: return the first address of buffer p.
*/
【输入】
第1行:一个正整数i,在int范围内
【输出】
一行,对应的字符串
【样例输入】
123456
【样例输出】
123456
#4
纯蓝之刃2019-12-15 15:17
程序代码:
#include<stdio.h>

int num(int i,int x,char *a);
int main()
{
    char a[11];
    int n,m;
    scanf("%d",&n);
    m=num(0,n,a);
    while(m)
        printf("%c",a[--m]);
    return 0;
}
int num(int i,int x,char *a)
{
    int m;
    if(x>=10)
        m=num(++i,x/10,a);
    else
        m=++i;
    a[--i]=x%10+'0';
    return m;
}


[此贴子已经被作者于2019-12-15 15:25编辑过]

#5
bcbbcclbbc2019-12-15 15:21
#6
纯蓝之刃2019-12-15 16:00
写的这个不符合题意,不是递归的方法,你的这个可以这样改
程序代码:
#include<stdio.h>
#include<string.h>
int num(int x);
int main()
{
    char a[11];    //4字节int型最大10位,所以定义个11位的字符串就够了。
    int n;
    int i=0;
    scanf("%d",&n);
    int str=num(n);
    for(;i<str;i++)
    {   
        a[str-1-i]=n%10+'0';
        n/=10;
    }
    a[str]='\0';                //赋予结束符
    printf("%s",a);
    return 0;
}
int num(int x)
{
    int i=0;
    while(x){
     i++;
     x/=10;}
    return i;
}
#7
komorebi01102019-12-15 16:05
回复 6楼 纯蓝之刃
是这样的 我们学校平台不会测试有没有按照题目提示的方法写代码的
刚才带进去accepted了 非常感谢!!但是这是为什么呀
#8
komorebi01102019-12-15 16:08
回复 4楼 纯蓝之刃
啊啊dbq刚才只看到最后一条了 忘记给这条赋分了qaq
我学了递归,也学了数组,但是完全不会把递归和数组结合,你好厉害!!
1