匿名用户
1级
2011-03-30 回答
#include
#include
#define MAX 100
void digui_daoxu(char num[],int n)
{
if(n>=0)
{
printf("%c",num[n]);
digui_daoxu(num,n-1);
}
}
void feidigui_daoxu(char num[],int n)
{
int i=n;
while(i>=0)
{
printf("%c",num[i]);
i--;
}
printf("\n");
}
void main()
{
char num[MAX];
int n;
printf("input the num:");
gets(num);
strcpy(num,num);
n=strlen(num);
printf("递归调用:");
digui_daoxu(num,n-1);
printf("\n");
printf("非递归调用:");
feidigui_daoxu(num,n-1);
}
刚学吧,确定位数其实很简单,用strlen()函数就行了,但是必须包含头文件string.h,
因为没有说多少位,可以用字符数组来实现,输入的数字只需在输出就行了,strlen()-1就是字符数组的最后的一字符,就是结束符\0前的一位,写函数时,就需要将最后一个字符的下标传入
,判断结束的条件是下标>=0;
如果非要用正整数的话,可做稍许修改,结束的条件是n=n/10,每次去掉最后一位,n%10意思是去末位数字,当n==0时,就是结束了,程序如下,不懂的话再留言
#include
void digui_daoxu(long n)
{
if(n>0)
{
printf("%d",n%10);
digui_daoxu(n/10);
}
}
void feidigui_daoxu(long n)
{
int i=n%10;
while(i>0)
{
printf("%d",i);
n=n/10;
i=n%10;
}
printf("\n");
}
void main()
{
long num;
int n;
printf("input the num:");
scanf("%d",&num);
printf("递归调用:");
digui_daoxu(num);
printf("\n");
printf("非递归调用:");
feidigui_daoxu(num);
}