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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

//...


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

参考技术A #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));

本回答被提问者采纳
参考技术B 十位除以10 取余数 百位除以 100 取余数 在相加就可以了

编程题:输入任意一个4位数整数,将该数反序输出。求解

c语言

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) 

 int a,s,d,f,g,h,j,k,l;
 printf("请输入四位整数");
 scanf("%d",&a);
 s=a/1000;
 d=a%1000;
 f=d/100;
 g=d%100;
 h=g/10;
 j=g%10;
 k=j/1;
 printf("颠倒后的数字为%d%d%d%d",k,h,f,s);
 return 0;


参考技术A

c:

#include <stdio.h>
#include <stdlib.h>
int main()
    int n;
    printf("输入一个数:");
    scnaf("%d",&n);
    printf("反序输出:\\n");
    while(n!=0)
        printf("%d",n%10);
        n/=10;
    
    return 0;

追问

谢谢你,不过你好像理解错了我的意思

参考技术B

参考技术C 1234 4位 = 1*1000+2*100+3*10+4*1
方向
4*1000+3*100+2*10+1*1
看出规律来了没?
如果从1234中单独取1, 2 ,3, 4 我就不用说了吧?

这只是一种解法
还可以用字符串去解决
有不懂的在问追问

哦哦,懂了,谢谢

本回答被提问者采纳
参考技术D 什么语言写呢?追问

c语言

以上是关于C语言如何求一个整数的各个位数之和的主要内容,如果未能解决你的问题,请参考以下文章

C语言 分离 整数 成 单个 数字,求修改

C语言取出一个三位整数的各个位,并输出

c语言 求整数位分解

用c语言设计一个计算两个整数的和、差、积、商、和余数的程序

用C语言接收用户输入的一个四位数,用while循环计算个位,十位,百位,千位之和,

c语言,求任意一个整数各位数字之积