C语言编程:输入一个整数并能逐位正序或反位输出,用递归完成。
展开全部
一、问题分析:
要把整数逐位输出,无论正序还是反序,都需要将各个位分离。
在C中的做法就是,通过对10取余,取出个位,然后通过除以10,起到“移位”的效果。
二、算法设计:
1、输入要处理的整数;
2、取出各位;
3、递归调用,以当前值除以10为参数;
4、当值为0时退出。
正序和反序输出,取决于递归调用和输出的位置关系。
三、参考代码:
正序:
#include <stdio.h>
void func(int n)
{
int v;
if(n==0) return;//到0结束。
v=n%10;//取出个位。
func(n/10);//递归调用
printf("%d ", v);//输出。
}
int main()
{
int n;
scanf("%d",&n);//输入。
func(n);//调用函数,正序输出各个位。
return 0;
}
反序:
#include <stdio.h>
void func(int n)
{
int v;
if(n==0) return;//到0结束。
v=n%10;//取出个位。
printf("%d ", v);//输出。
func(n/10);//递归调用
}
int main()
{
int n;
scanf("%d",&n);//输入。
func(n);//调用函数,正序输出各个位。
return 0;
}
展开全部
正序或反序输出,用递归完成。
#include<stdio.h>
void f1(int n)
{
if(n>10)
f1(n/10);
printf("%2d ",n%10);
}
void f2(int m)
{
printf("%2d ",m%10);
if(m>10)
f2(m/10);
}
main()
{
int n,temp;
printf("输入一个整数: ");
scanf("%d",&n);
printf("选择正序输出输入0,反序输出输入1 :");
scanf("%d",&temp);
if(temp==0)
f1(n);
else
f2(n);
}
#include<stdio.h>
void f1(int n)
{
if(n>10)
f1(n/10);
printf("%2d ",n%10);
}
void f2(int m)
{
printf("%2d ",m%10);
if(m>10)
f2(m/10);
}
main()
{
int n,temp;
printf("输入一个整数: ");
scanf("%d",&n);
printf("选择正序输出输入0,反序输出输入1 :");
scanf("%d",&temp);
if(temp==0)
f1(n);
else
f2(n);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询