这是上机课老师出的一道题目,题较简单,刚开始使用循环加数组写出来,后来想到这种先得后排的方法可以用递归来做。。。。。输出整数各位数字
本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。
输入格式:
输入在一行中给出一个长整型范围内的非负整数。
输出格式:
从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格。
输入样例:
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的作用,并且将接下来的函数怎么走搞清楚,而且当函数块里面的语句运行完后会自动返回上一级。
另外这道题也有很灵性的做法就是把所有数都看称字符输入输出·············