C语言如何求一个整数的各个位数之和

题目要求:需要使用递归函数。如:
int 递归函数(int n)
{
if (n的位数==1)
返回n;
else
返回 递归函数(各位数字之和);
}
//呃,n的位数怎么求?也可以用递归……
//比如:如果n小于10,返回1。否则返回1+递归函数(n/10)。
//或者你用字符串作为参数 = =

输入格式
一个非负整数n,n不会超出int类型的表示范围。
输出格式
输出计算之后的数码。

比如:S(1990)=1+9+9+0=19,S(19)=10,S(10)=1.
输入样例
2014
输出样例
7

请教各位大神,我不太会使用递归函数,请你们多多指教,万分感谢。咩~~~~*^_^*

附一个我没有完成的代码:
#include<stdio.h>
#include<stdlib.h>
int fac(int n)
{
if(n<10)
return(1);
else
{
return(1+fac(n/10));
}
}
int ax(int n)
{
int c,d,e=n;
while(e!=0)
{
c+=e%10;
e=e/10;

}
return(c);
}

int sum(int n)
{
int m=fac(n);
if(m=1)
return(n);
else
return(ax(n));
}
int main()
{
int n,y;
int sum(int n);
scanf("%d",&n);
y=sum(n);
printf("%d",y);

system("pause");
return 0;
}

可以参考下面的代码:

#include "stdio.h"

int main()

{

int number,i=0,sum=0;

printf("please input a number:");

scanf("%d",&number);

while(number!=0)

{

sum+=number%10;

number/=10;

i++;

}

printf("sum=%d\n",sum);

printf("位数=%d\n",i);

return 0;

}

扩展资料:

递归函数定义

一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的。用递归过程定义的函数,称为递归函数,例如连加、连乘及阶乘等。凡是递归的函数,都是可计算的,即能行的。

一个直接的例子:

//代码1

void func()

{

//...

if(...)

func();

else

//...

}

参考资料来源:百度百科-递归函数

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-08
#include <stdio.h>

int sum(int i){
if(i > 9){
return i % 10 + sum(i / 10);
}else{
return i;
}
}

int main(){
int num;
scanf("%d", &num);

printf("%d 各位之和为 %d\n", num, sum(num));
}

本回答被提问者采纳
第2个回答  2014-12-15
十位除以10 取余数 百位除以 100 取余数 在相加就可以了
相似回答