如何使用For循环、While循环、函数和递归编写C语言求数字各位数之积的程序。
使用For循环求数字各位数之积的C语言程序
此程序允许用户输入任何正整数。接下来,它将给定数字分解为单个数字,并使用For循环计算这些单个数字的乘积。
#include <stdio.h>
int main()
{
int Number, Reminder, Product;
printf("\n Please Enter any Number that you wish : ");
scanf("%d", & Number);
for(Product = 1; Number > 0; Number = Number / 10)
{
Reminder = Number % 10;
Product = Product * Reminder;
}
printf(" \n The Product of Digits of a Given Number = %d", Product);
return 0;
}

在此数字各位数之积程序中,用户输入的值:Number = 234,Product = 1。
第一次迭代
Reminder = Number % 10。
Reminder = 234 % 10 = 4。
Product = Product * Reminder = 1 * 4 = 4。
Number = Number / 10 = 234 / 10 = 23。
第二次迭代
从C编程的第一次迭代开始,Number和Product的值都已更改为Number = 23,Product = 4。
Reminder = 23 % 10 = 3。
Product = 4 * 3 = 12。
Number = 23 / 10 = 2。
第三次迭代
从第二次迭代开始,Number和Product的值都已更改为Number = 2,Product = 12。
Reminder = 2 % 10 = 2。
Product = 12 * 2 = 24。
Number = 2 / 10 = 0。
此时Number = 0,因此For循环内的条件将失败。
使用While循环求数字各位数之积的C语言程序
此计算数字各位数之积的程序与上面的程序相同,但我们将For循环替换为While循环。
#include <stdio.h>
int main()
{
int Number, Reminder, Product = 1;
printf("\n Please Enter any Number that you wish : ");
scanf("%d", & Number);
while(Number != 0)
{
Reminder = Number % 10;
Product = Product * Reminder;
Number = Number / 10;
}
printf(" \n The Product of Digit of a Given Number = %d", Product);
return 0;
}
Please Enter any Number that you wish : 4568
The Product of Digit of a Given Number = 960
此使用函数求数字各位数之积的程序与第一个示例相同。但是,我们使用函数将代码进行了分离。
#include <stdio.h>
int Product_Of_Digits (int);
int main()
{
int Number, Product = 1;
printf("\n Please Enter any number : ");
scanf("%d", &Number);
Product = Product_Of_Digits (Number);
printf("\n The Product of all the digits of Given Number = %d", Product);
return 0;
}
int Product_Of_Digits (int Number)
{
int Reminder, Product;
for (Product = 1; Number > 0; Number = Number / 10)
{
Reminder = Number % 10;
Product = Product * Reminder;
}
return Product;
}
Please Enter any number : 7825
The Product of all the digits of Given Number = 560
使用递归求数字各位数之积的C语言程序
此程序将通过递归调用函数来查找给定数字中各个数字的乘积。有关执行的进一步参考,请参阅递归。
#include <stdio.h>
int ProdDi (int);
int main()
{
int Number, Prod = 1;
printf("\n Please Enter any number : ");
scanf("%d", &Number);
Prod = ProdDi (Number);
printf("\n The Product of all the digits of Given Number = %d", Prod);
return 0;
}
int ProdDi (int Number)
{
static int Reminder, Prod = 1;
if(Number > 0)
{
Reminder = Number % 10;
Prod = Prod * Reminder;
ProdDi (Number / 10);
return Prod
}
else
return 0;
}
Please Enter any number : 456
The Product of all the digits of Given Number = 120
在此程序中,在函数内部,静态变量仅在首次调用函数时进行初始化。
ProdDi (Number / 10) 语句将以更新后的值递归调用函数。如果您遗漏了此语句,在完成第一行后,它将终止。例如,Number = 4567,输出将是7。