用递归法将一个整数n转换成字符串。例如输入483,应输出字符串“483”。N的位数 不确定,可以是任意位数的整数。
我在论坛里查过,不过里好像用到了指针,而我只学到了函数,在网上下到一个答案,但是看不懂,谁能给讲一下吗?
#include<stdio.h>
void convert(int n) /*主要是这个函数不明白*/
{ int i;
if ((i=n/10)!=0)
convert(int n);
putchar(n%10+’0’);
}
main()
{
int number;
printf(“\nInput an integer:”);
scanf(“%d”,&number);
printf(“Output:”);
if (number<0)
{
putchar(‘-‘);
number=-number;
}
conert(number);
}
----------------解决方案--------------------------------------------------------
这个程序里我怎么没看到指针???
既然学到函数,阅读这个程序不该有问题,要不就是你没认真学。
----------------解决方案--------------------------------------------------------
#include <stdio.h>
void to_B (unsigned int num1);
int main ( void ){
unsigned int a;
printf ("Input the number :");
while (1==scanf ("%u",&a)){
to_B (a);
putchar ('B');
printf ("\nInput the number :");
}
return 0;
}
void to_B (unsigned int num1){
unsigned int x=0;
if (num1>0){
x=num1%2;
to_B(num1/2);
printf ("%u",x);
}
else{
if (num1%2)
putchar('1');
else
putchar('0');
}
return ;
}
这个是我以前写的10进制转2进制的递归程序,你可以参考一下。
----------------解决方案--------------------------------------------------------
void convert(int n) /*主要是这个函数不明白*/
{ int i;
if ((i=n/10)!=0) /*这个为什么除以10*/
convert(int n);
putchar(n%10+’0’); /*还有这句,特别是'0'是什么意思*/
}
----------------解决方案--------------------------------------------------------
楼主的函数没写好,
void convert(int n)
{
int i;
if ((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
}
加'0'是把数字处理为字符。
----------------解决方案--------------------------------------------------------
噢,终于看明白了,谢谢大家帮忙!!
----------------解决方案--------------------------------------------------------
不好意思,仔细看了一下又发现了一个不会的问题,因为初学,大家别见笑
比如:输入 123 根据这句 putchar(n%10+'0');
不应该输出 321 吗? 为什么会是倒序的?
----------------解决方案--------------------------------------------------------
递归嘛,相当于一个栈
----------------解决方案--------------------------------------------------------
因为没学数据结构,刚刚查了一下栈的定义,明白了,多谢
----------------解决方案--------------------------------------------------------