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;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-22
正序或反序输出,用递归完成。
#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);

}本回答被提问者采纳

c语言整数正序反序输出?
在C语言中,可以使用循环来实现整数的正序和反序输出。下面是一个简单的示例代码:在这个示例代码中,我们首先利用while循环,从给定的整数num中依次取余数(即取出个位数字),然后打印出来。通过不断的将num除以10,我们可以逐渐将数字的位数去除,直到num变成0为止。这样就实现了整数的正序输出。要实现反...

编程输入一个整数,从高位开始逐位分割并输出它的各位数字 才学,求帮忙...
6、改变整数变量n的值,使其成为原来的十分之一,即减少一位。7、统计整数位数的变量sum自加1,实现位数的统计。8、运行程序,输入一个整数后,计算机倒序输出各位上的数字,并且输出整数的总位数。

怎样输出某个数的倒序?
1. 在C语言中,输出一个数的逆序可以通过使用for循环或递归来实现。2. 使用for循环的方法:首先定义一个整型变量`n`,用于存储需要逆序的数。接着,通过一个for循环,从`n`的个位开始,逐一取出每一位,并进行逆序输出。在循环体中,利用`printf`函数打印每一位的数字。示例代码如下:```c include...

4、设计一个函数,当给定一个整数后,能得到该数的补码(应考虑该整数是正...
假如不知道机器内的程序中的各语句实际上是什么,分别输入什么样的detax来测试出while语句的循环条件写错了。(4)、把原程序中while语句之前的y=1\/x语句去掉,观察程序的运行将会发生什么样的变化。假如不知道机器内的程序实际上是怎么写的,输入什么样的detax就能测试出少了上述这条语句。(5)、若把原程序中的++i换...

用C语言编输入一个3位的正整数,分别输出它的个位,十位,百位数字
1.C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。2.C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。3.不同的变量类型可以用结构体(struct)组合在一起。4.只有32个保留字(reserved keywords),使变量...

学生必看的计算机C语言重要考点
一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个main函数,其他函数都是为main函数服务的 [考点 3]存储形式 计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit八个位构成一个字节(Byte),1个yte-8个bit。二进制、八...

c语言设计
很简单,实际就是一个递归调用,不断调用hanoi,实质就是把n-1个圆盘从A移至B,将第n个圆盘从A移至C,再将n-1个圆盘从B移动到C,当n不等于1时,就不断迭代这个循环,直到n=1:希望你能明白:include<stdio.h> void move(char x,char y){ printf("%c-->%c\\n",x,y);} void hanoi...

关于数据结构的问题,用C语言描述
采用一种数据结构,完成f(x,y)的存储。2.上题的f(x,y)是实数值,请通过线性变化求出g(x,y),要求g(x,y)是整数,范围从0~255。设f(x,y)最小值fmin,min为下标,最大值fmax,max为下标,f(x,y)到g(x,y)的线性变化公式为 g(x,y)=|((f(x,y)-fmin)\/(fmax-fmin))*255|,做不完不要紧,会做...

四则运算(C语言),
输入参数:char *f : 运算符数组 double *s: 数值数组 int p: 当前运算符数组位置。返回参数:无 功能:将当前已经完成运算的运算符消去,同时将数值数组的位置调整以进行下一次运算。传入值p若为3 则当前符号的数组位置为3.f[3]=f[3+1]...f[len-2]=f[len-1] f[len-1]='\\0';s[...

C语言中f=f*n表示什么意思
当某个递归算法能较方便地转换成递推算法时,通常按递推算法编写程序。例如上例计算斐波那契数列的第n项的函数fib(n)应采用递推算法,即从斐波那契数列的前两项出发,逐次由前两项计算出下一项,直至计算出要求的第n项。 组合问题 问题描述:找出从自然数1、2、……、n中任取r个数的所有组合。例如n=5,r=3的...

相似回答