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

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

n%10 这是对10取余数,如n=2345 时 n%10=5 ,n%10+'0' 就是在'0' 的ASCII码值上再加上n%10得到的值,如'0' 的ASCII码值是48,n%10+'0'=5+48=53。这么做是因为ASCII码表中数字字符是从0到9升序排列的,这样写就不用去考虑'0' 的ASCII码值是多少了。
至于为什么用putchar而不用printf,其实putchar()函数的作用等同于printf("%c", ch),所以用printf也是可以的。只是putchar()的功能就是输出一个字符,不需要格式化,这种场合下比printf方便。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-14
没有这么复杂。
#include <stdio.h>
main()
{ int n, a[10], i=0;
printf("input a number:\n");
scanf("%d",&n);
while(n>0)
{ a[i]=n%10
n/=10;
i++;
}
for(n=0;n<i;n++)
printf("%d",a[n]);
}
这个就可以了。满意请采纳
第2个回答  2018-05-17
#include <stdio.h>
int main()
{
    int n,N[99],i=0;
    scanf("%d",&n);
    int x=n;
    while(x!=0)
    {
        N[i]=x%10;
        x=x/10;
        i++;
    }
    for(i=i-1;i>=0;i--)
    {
        printf("%d",N[i]);
    }
}

本回答被提问者采纳
第3个回答  2018-05-17
输入你就用c语言解决吧。下面程序中的汇编子程序可嵌入c中使用的。供参考。

        CODE  SEGMENT
              ASSUME    CS:CODE

      START:  PUSH      CS
              POP       DS
              PUSH      CS
              POP       ES

              MOV       AX,32767
              CALL      DIGUIAX

              MOV       AH,4CH
              INT       21H
;=================================
     DIGUIAX  PROC      NEAR
              PUSH      BX
              PUSH      DX
              MOV       DX,0
              MOV       BX,10
              DIV       BX
              CMP       AX,0
              JE        @DIGUIAX1
              CALL      DIGUIAX
  @DIGUIAX1:
              OR        DX,30H
              MOV       AH,2
              INT       21H
              POP       DX
              POP       BX
              RET
     DIGUIAX  ENDP
;=================================
        CODE  ENDS
              END       START

第4个回答  2011-12-13
#include<stdio.h>

int a[100];
int k=0;

void f(int x)
{
int i;
a[k]=x%10;
if((i=x/10)!=0)
{
k++;
f(i);
}
}

void main()
{
int l;
scanf("%d",&l);
f(l);
int j;
for(j=k;j>=0;j--)
putchar(a[j]+'0');
}
相似回答