C语言第二十八弹--输入一个非负整数,返回组成它的数字之和

简介: C语言第二十八弹--输入一个非负整数,返回组成它的数字之和

C语言求输入一个非负整数,返回组成它的数字之和

方法一、递归法

思路:设计一个初始条件,通过递归获取非负整数的个位,不断接近递归条件即可。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int DigitSum(int n)
{
  int tmp = 0;
  if (n > 9)
  {
    tmp = n % 10;//获取每次的个位
    return tmp + DigitSum(n / 10);//和是每次个位相加
  }
  else if(n  == 0 )//是初始条件也是结束条件,使用n == 0 是因为递归中使用的是n / 10
  {
    return 0;
  }
}
int main()
{
  int  n = 0;
  scanf("%d",&n);
  int ret = DigitSum(n);
  printf("%d",ret);
  return 0;
}

非递归法

思路:通过循环设计好结束条件不断获得个位,并使用一个临时值接收。最后返回临时值即可。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int DigitSum(int n)
{
  int tmp = 0;
  while (n)//1927 172 17 
  {
    //获取个位 后面获取个位直接+=即可
    tmp += n % 10;
    n /= 10;
  }
  return tmp;
}
int main()
{
  int  n = 0;
  scanf("%d",&n);
  int ret = DigitSum(n);
  printf("%d",ret);
  return 0;
}
相关文章
|
6月前
|
C语言
【C语言刷题每日一题#牛客网BC6】输入三个整数,输出第二个整数
【C语言刷题每日一题#牛客网BC6】输入三个整数,输出第二个整数
|
6月前
|
C语言
C语言:从键盘读入三个整数,按从大到小输出
C语言:从键盘读入三个整数,按从大到小输出
|
6月前
|
存储 C语言
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
|
6月前
|
C语言
【C语言刷题每日一题】——求1到100中包含数字9的整数的个数
【C语言刷题每日一题】——求1到100中包含数字9的整数的个数
|
6月前
|
C语言
【C语言刷题系列】交换整数的奇数位和偶数位
【C语言刷题系列】交换整数的奇数位和偶数位
|
6月前
|
存储 C语言
【C语言进阶篇】整数在内存的存储——原码、反码、补码
【C语言进阶篇】整数在内存的存储——原码、反码、补码
|
6月前
|
C语言
【C语言刷题系列】计算整数的二进制位中1的个数 (三种方式)
【C语言刷题系列】计算整数的二进制位中1的个数 (三种方式)
|
6月前
|
C语言
C语言-----计算两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
C语言-----计算两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
|
6月前
|
C语言
C语言----获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
C语言----获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
|
6月前
|
Serverless C语言
C语言----递归函数,计算一个非负整数的数字之和
C语言----递归函数,计算一个非负整数的数字之和