这是上机课老师出的一道题目,题较简单,刚开始使用循环加数组写出来,后来想到这种先得后排的方法可以用递归来做。。。。。
输出整数各位数字
本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。
输入格式:
输入在一行中给出一个长整型范围内的非负整数。
输出格式:
从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格。
输入样例:
123456
输出样例:
1 2 3 4 5 6
#include<stdio.h> int j[20]; int main(void) { int n,i,k=19; scanf("%d",&n); if(n>0) { while(n!=0) { i=n%10; n/=10; j[k--]=i; } for(i=k+1;i<20;i++) { printf("%d ",j[i]); } } return 0; }
递归法
#include<stdio.h> void f(int n)//设n=123 { int i,k; if(n==0) return;//返回上一级函数的下个语句, i=n%10; n/=10; f(n); printf("%d ",i); } int main(void) { int n,i,j; scanf("%d",&n); f(n); }
其实吧,递归更多的是当函数调用自己时明白return的作用,并且将接下来的函数怎么走搞清楚,而且当函数块里面的语句运行完后会自动返回上一级。
另外这道题也有很灵性的做法就是把所有数都看称字符输入输出·············