实现一个计算非负整数阶乘的简单函数,使得可以利用该函数,计算1!+2!+⋯+10!的值。
函数接口定义:
double fact( int n );
其中n是用户传入的参数,其值不超过10。如果n是非负整数,则该函数必须返回n的阶乘。
#include <iostream>
int CountDigit(int number, int digit) {
int count = 0;
number = abs(number); // 取绝对值,确保处理正数
while (number > 0) {
int currentDigit = number % 10; // 取最后一位数字
if (currentDigit == digit) {
count++;
}
number /= 10; // 去掉最后一位数字
}
return count;
}
int main() {
int number, digit;
std::cout << "Enter a number: ";
std::cin >> number;
std::cout << "Enter a digit: ";
std::cin >> digit;
int count = CountDigit(number, digit);
std::cout << "The digit " << digit << " occurs " << count << " times in the number " << number << std::endl;
return 0;
}
#include <stdio.h>
double fact(int n) {
double res = 1;
for (int i = 1; i <= n; i++) {
res *= i;
}
return res;
}
int main() {
double sum = 0;
for (int i = 1; i <= 10; i++) {
sum += fact(i);
}
printf("1! + 2! + ... + 10! = %.0f\n", sum);
return 0;
}
在程序中,定义了计算非负整数阶乘的函数 fact(),它使用 for 循环计算阶乘,并返回结果。在主函数中,使用 for 循环遍历 1 到 10,依次计算每个阶乘的和,并输出结果。
如果需要计算更大的数的阶乘可以考虑使用基于数组的高精度算法实现,否则在计算阶乘过程中容易出现数据溢出。
int main()
{
int n = 0;
//产生1~n的数字
int i = 0;
int ret = 1;
int sum = 0;
//1!+2!+3! = 1+2+6 = 9
for (n = 1; n <= 10; n++)
{
ret = ret * n;
sum = sum + ret;
}
printf("%d\n", sum);//9
return 0;
}