C 程序计算数字各位之和

如何用 For 循环、While 循环、函数和递归编写 C 程序来计算数字各位之和?

C 程序使用 While 循环计算数字各位之和

此程序允许用户输入任何正整数。为了得出结果,此程序将给定的数字分解为单独的数字,并使用 While 循环将这些单独的数字(总和)相加。

#include <stdio.h>

int main()
{
  int Number, Reminder, Sum=0;

  printf("\n Please Enter any number\n");
  scanf("%d", &Number);

  while(Number > 0)
  {
     Reminder = Number % 10;
     Sum = Sum+ Reminder;
     Number = Number / 10;
  }

  printf("\n Sum of the digits of Given Number = %d", Sum);

  return 0;
}
C Program to Find Sum of Digits of a Number using While Loop

此计算数字之和的程序允许您输入任何正整数,然后将该数字分配给变量 Number。

接下来,While 循环中的条件将确保给定的数字大于 0(表示正整数且大于 0)。

对于 C 程序计算数字之和的演示,用户输入的数值为:Number = 4567 且 Sum= 0

第一次迭代
Reminder = Number %10
Reminder = 4567 % 10 = 7

Sum = Sum+ Reminder
Sum = 0 + 7 => 7

Number= Number / 10
Number = 4567 / 10 => 456

第二次迭代
从这个C 程序的第一次迭代开始,Number 和 Sum 的值都发生了变化,变为 Number = 456 且 Sum= 7。

Reminder= 456 % 10 = 6

Sum= 7 + 6 => 13

Number= 456 / 10 => 45

第三次迭代
从程序的第二次迭代开始,两个值都已更改,变为 Number = 45 且 Sum= 13。

Reminder= 45 % 10 = 5

Sum= 13 + 5 = 18

Number= 45 / 10 = 4

第四次迭代:从第三次迭代开始,Number= 4 且 Sum= 18。

Reminder = 4 % 10 = 4

Sum= 18 + 4 = 22

Number= 4 / 10 = 0

此时,Number= 0。因此,while 循环条件将失败。

最后的 Programming printf 语句将打印出所有数字的总和作为输出。因此,给定变量 4567 的输出为:

C 程序使用 For 循环计算数字各位之和

此程序允许用户输入任何正整数。接下来,它会将给定的值分解为单独的数字。通过将这些单个数字相加,此程序使用 For 循环计算数字各位之和。

#include <stdio.h>

int main()
{
  int Num, Reminder, Sm;

  printf("\nPlease Enter any value\n");
  scanf("%d", &Num);

  for (Sm=0; Num > 0;Num=Num/10)
  {
     Reminder = Num % 10;
     Sm=Sm+ Reminder;  
  }

  printf("\n Sum of the digits = %d", Sm);
  return 0;
}

我们只是用 For 循环替换了上面数字示例中的 While 循环。

C 程序使用函数计算数字各位之和

这个数字之和程序将给定的整数分解为单独的数字,并使用函数将这些数字相加。

#include <stdio.h>

int SmOfDig (int); 

int main()
{
  int Num, Sm = 0;

  printf("\n Please Enter any number\n");
  scanf("%d", &Num);

  Sm = SmOfDig (Num);

  printf("\n Sum of the digits = %d", Sm);
  return 0;
}

int SmOfDig (int Num)
{
  int Reminder, Sm;

  for (Sm=0; Num > 0;Num=Num/10)
  {
     Reminder = Num % 10;
     Sm=Sm+ Reminder;  
  }     

 return Sm;
}
Program to Find Sum of Digits of a Number using Functions

在此数字之和示例中,当编译器在 main() 程序中遇到 SmOfDig(Num) 行时,编译器将立即跳转到下面的函数。

int SmOfDig(int Num)

我们已经在上面的示例中解释了逻辑。请参阅 While 循环分析部分。

最后一行以 return 结束output。

注意:如果我们创建一个 Void 函数,则无需返回值。但是,如果我们使用任何数据类型(int、float 等)声明函数,我们就必须从函数中返回一些值。

C 程序使用递归计算数字各位之和

此程序允许用户输入任何正整数。接下来,它会将数字分解为单独的数字,并通过递归调用函数将这些数字(数字之和)相加。请参考递归以获取更多信息。

#include <stdio.h>

int SmODit (int); 

int main()
{
  int n, tot = 0;

  printf("\nPlease Enter any value\n");
  scanf("%d", &n);

  tot = SmODit (n);

  printf("\nSum of the digits  = %d", tot);
  return 0;
}

int SmODit (int n)
{
  static int Reminder, tot=0;

  if(n > 0)
  {
    Reminder = n % 10;
    tot = tot + Reminder;
    SmODit (n / 10);
    return tot;
  }
 else
   return 0;
}
Calculate Sum of Digits of a Number using Recursion

在此示例中,当编译器在 main() 程序中遇到 SmODit(n) 行时,编译器将立即跳转到下面的函数。

int SmODit(int n)

在此函数中,静态变量仅在首次调用函数时进行初始化。

SmODit(n / 10) 语句将帮助递归调用具有更新值的函数。如果在此 C 程序计算数字之和中缺少此语句,它将在完成第一行后终止。

例如,n = 4567,则输出将是 7。

让我们看一下 If 条件,

if (n > 0) 将检查它是否大于 0。对于递归函数,在使用函数递归调用之前放置条件至关重要。否则,我们将陷入无限执行(与无限循环相同)。