输入一个正整数 用递归实现将整数逐位正序输出每一位数(c语言)

供稿:hz-xin.com     日期:2025-01-13
C语言编程:输入一个整数并能逐位正序或反位输出,用递归完成。

一、问题分析:
要把整数逐位输出,无论正序还是反序,都需要将各个位分离。
在C中的做法就是,通过对10取余,取出个位,然后通过除以10,起到“移位”的效果。
二、算法设计:
1、输入要处理的整数;
2、取出各位;
3、递归调用,以当前值除以10为参数;
4、当值为0时退出。
正序和反序输出,取决于递归调用和输出的位置关系。
三、参考代码:
正序:
#include 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 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;}

import java.util.Scanner;

public class Main {
public static void main(String[] args) throws IOException{
Scanner scan = new Scanner(System.in);
System.out.println("输入一个整数:");
int num = scan.nextInt();
char[] numChar = Integer.toString(num).toCharArray();
for(int i = 0;i<numChar.length; i++) {
System.out.println(numChar[i]);
}
}
}

#include <stdio.h>

void f(int a)
{
  if (a < 10)
    printf("%d", a);
  else
  {
    f(a/10);
    printf("%d", a%10);
  }
}

int main()
{
  int a;

  printf("a = ");
  scanf("%d", &a);
  f(a);
  getchar();
  return 0;
}


你得举个例子,比如输入123,就输出321,还是任然输出123,还有要将输入的数据储存在一个变量后再对它处理,还是可以边读入边处理。

C语言!!!求输入一个正整数n,求1!-2!+3!-4!+5!...+n!的程序。
其实用递归算更简单,再给你一个吧 include <stdio.h> \/\/由于标准math.h中没有求阶乘函数,所以自己写一个吧 int jiecheng(int n){ if(n<=1) return n;\/\/控制递归跳出 if(n!=1)n*=jiecheng(n-1);\/\/递归 return n;} int main(){ int n,sum=0;printf("请输入一个整数");scanf(...

c语言,编写一个递归函数,实现将任意的正整数按反序输出。例如:输入 1...
include "stdio.h"void intrev(int n){if(n){printf("%d",n%10);intrev(n\/10);}}int main(int argc,char *argv[]){int x;printf("Please enter a positive integer...\\n");if(scanf("%d",&x)!=1 || x<1){printf("Input error, exit...\\n");return 0;}intrev(x);...

用C语言编写程序从键盘输入一个正整数数n,输出n!
直接输出计算阶乘的C语言代码及解释:要编写一个C语言程序,从键盘输入一个正整数n并计算其阶乘(n!),可以通过两种方法实现:递归和循环。首先,我们来看递归的方法:c include \/\/ 递归函数计算阶乘 int factorial(int n) { if (n <= 1)return 1;else return n * factorial(n - 1);} int...

编写一个递归函数,统计任意一个正整数的位数,并在主函数中输入这个整数...
main(String[] args) { Scanner scan = new Scanner(System. in ); System.out.print("输入任意一个正整数: "); int n = scan.nextInt(); scan.close(); System.out.println(n + " 的位数是:" + recursion(n)); }} ...

输入正整数n,输出1+2+…+n的值。怎样用c语言编写出来呢???
include <stdio.h> include <stdlib.h> int sum_math(int n)\/*数学公式*\/ { return n*(n+1)\/2;} int sum(int n)\/*累加*\/ { int i,result;for(result=0,i=1;i<=n;result+=i,i++);return result;} int sum_digui(int n)\/*递归算法*\/ { if(n>1)return n+sum_digui(n...

如何用C语言输出一个不多于5位的正整数的每一位数字
1。位操作法:这个方法优点是空间量较小计算更大的整数时不会崩溃,大致思路是:先在宏定义中,将二进制的BCD码设置成相应的整数值,主程序中要设置一个接受数符的字符串,设置一个掩码MASK=1;由于正整数N在计算机中是二进制表示的,故对N进行一次N&=MASK操作可以得到N的最后一位,并且用一个循环...

编写一个递归函数outd,将一正整数中的各位数字由高位到低位输出,c语言...
include <stdio.h>void haha(int a){if(a\/10 ==0){printf("%d ",a%10);}else{haha(a\/10);printf("%d ",a%10);}}int main(void){long int a;scanf("%ld",&a);haha(a);printf("\\n");}

2. 编程实现:输入1个不多于四位的正整数,①求出它是几位数;②分别打印...
include <stdio.h> main(){int m,qw,bw,sw,gw;printf("INput a m<9999\\n");scanf("%d",&m);if(m>0&&m<10)printf("m 是一位数,为%d",m);else if(m>10&&m<100)printf("m是二位数,十位sw=%d,个位gw=%d",m\/10,m%10);else if(m>100&&m<1000)printf("m是三位数,...

C语言编写程序 :输入一个正整数,将其逆序输出。例如,输入12345,输出54321...
include<stdio.h> int main(){ int num;scanf("%d",&num);int a,i;for(i = 0;num > 0;i++){ a = num % 10;printf("%d",a);num = num\/10;} return 0;} 分析:首先,输入的是一个整数,因此最前面一位数不是零,所以我们可以用除10取余法写。a = num % 10 就是输出数字...

C语言编程,任意输入一个五位正整数,逆序输出每一位上的数 如输入54321...
p++;}\/* 程序的输出顺序为 10 -> 8 -> 6 -> 4 -> 2 递归步骤解释 1: 第一次执行ser函数,numbser = 12345判断数字大于9,将int(1234)再次执行函数 ps: (int)\/(int) 结果为int 2: 待执行ser函数后,输出结果个位数 12345 % 10 = 5 3: 第二次执行ser函数...类比步骤1 4: 待...