如何用 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;
}

此计算数字之和的程序允许您输入任何正整数,然后将该数字分配给变量 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;
}

在此数字之和示例中,当编译器在 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;
}

在此示例中,当编译器在 main() 程序中遇到 SmODit(n) 行时,编译器将立即跳转到下面的函数。
int SmODit(int n)
在此函数中,静态变量仅在首次调用函数时进行初始化。
SmODit(n / 10) 语句将帮助递归调用具有更新值的函数。如果在此 C 程序计算数字之和中缺少此语句,它将在完成第一行后终止。
例如,n = 4567,则输出将是 7。
让我们看一下 If 条件,
if (n > 0) 将检查它是否大于 0。对于递归函数,在使用函数递归调用之前放置条件至关重要。否则,我们将陷入无限执行(与无限循环相同)。