6-1 使用函数求1到10的阶乘和

实现一个计算非负整数阶乘的简单函数,使得可以利用该函数,计算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,依次计算每个阶乘的和,并输出结果。

如果需要计算更大的数的阶乘可以考虑使用基于数组的高精度算法实现,否则在计算阶乘过程中容易出现数据溢出。

  • 你看下这篇博客吧, 应该有用👉 :输入一个小于等于10的整数n,计算n!
  • 除此之外, 这篇博客: C语言拯救者 (分支和循环语句--3)中的 练习2:计算n个阶乘数字相加(1!+2!+3!...) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 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;
    }