C语言编程:输入一个整数并能逐位正序或反位输出,用递归完成。

 我来答
风若远去何人留
2017-06-20 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450134
专业C/C++软件开发

向TA提问 私信TA
展开全部

一、问题分析:

要把整数逐位输出,无论正序还是反序,都需要将各个位分离。

在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;
}
百度网友718258d
推荐于2017-09-22 · TA获得超过1079个赞
知道小有建树答主
回答量:288
采纳率:0%
帮助的人: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);

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式