为啥数字多了就输出不了了啊

用递归法将一个整数n转换成字符串。例如,输入483,应输出的字符串”483”。n的位数不确定,可以是任意整数。

思考如果不用递归调法,能否用其他方法解决此问题

#include<stdio.h>
int main()
{
    int n,i=0,b=0,x;
    char a[10]={'\0'},t;
    scanf("%d",&n);
    if(n<0)
    {n=-n;printf("-");}
    while((x=n/10)!=0)
    {n=n%10;a[i]=n+'0'; i++; n=x; b++;}
    a[i]=n+'0'; b++;
    for(i=0;i<(x=b/2);i++)
    {t=a[i];a[i]=a[b-i];a[b-i]=t;}
    printf("%s\n",a);
    /*for(i=0;i<b;i++)
        printf("%c ",a[i]);*/
  return 0;
}

#include<stdio.h>
int main()
{
    int i=0,b=0;
	long long n,x;
    char a[100]={'\0'},t;
    scanf("%lld",&n);
    if(n<0)
    {n=-n;printf("-");}
    while((x=n/10)!=0)
    {n=n%10;a[i]=n+'0'; i++; n=x; b++;}
    a[i]=n+'0';
    for(i=0;i<(x=b/2);i++)
    {t=a[i];a[i]=a[b-i];a[b-i]=t;}
    printf("%s\n",a);
    /*for(i=0;i<b;i++)
        printf("%c ",a[i]);*/
  return 0;
}

 

a字符数组长度设置的大一些

    char a[100]={'\0'},t;

 

    a[i]=n+'0'; b++; 这里b++去掉

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y