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语言如何求一个整数的各个位数之和的主要内容,如果未能解决你的问题,请参考以下文章