×

C语言 C语言学习随笔 初始C语言 C语言实例小程序

C语言学习随笔:计算n!-m!阶乘之和

一哥 一哥 发表于2022-10-12 23:30:04 浏览1083 评论0

抢沙发发表评论

程序要求:

1、需要计算阶乘的两个整数均 >0 且 <=20,且两个整数不能相同。如两数相同,程序提示错误,并要求重新输入。

2、输入两个整数随意输入,可前大后小,也可前小后大。计算过程始终能从小开始计算。


程序代码:

//头文件
#include <stdio.h>

//主函数
int main()
{
    double m = 0;
    double n = 0;
    double pro = 1;  //阶乘存储变量
    double sum = 0;  //阶乘和存储变量
    int i = 0;
    printf("********************************************************\n");
    printf("*********            阶乘之和计算器            *********\n");
    printf("*********  程序限定:1.输入的两个整数>0且<=20  *********\n");
    printf("*********  程序限定:2.输入的两个整数不能相同  *********\n");
    printf("********************************************************\n");
    while (1)
    {
        printf("请输入要计算阶乘和的两数(两数用空格分隔):>");
        scanf("%lf%lf", &m, &n);
        if (m == n)
        {
            printf("您输入的两个数相同,请重新输入!\n");
        }
        else if (m <= 20 && n <= 20)
        {
            break;
        }
        else
        {
            printf("您输入的数字超出程序限制,请重新输入!\n");
        }
    }
    
    double min = (m < n) ? m : n;  //找出输入两数的较小数
    double max = (m > n) ? m : n;  //找出输入两数的较大数
    for (i = 1; i <= max; i++)
    {
        pro *= i;
        if (i >= min)
        {
            sum += pro;
        }
    }
    printf("您输入的两数%.0lf-%.0lf的阶乘之和为:%.0lf\n", min, max, sum);  //%.0lf为隐藏double小数点后的位数,以整数形式输出
    return 0;
}


程序解析:

1、1-20的阶乘之和,数字会相对较大,超出int类型的范围。这里变量类型定义为double,保证计算结果能显示完整。

2、程序要求输入的整数>0且<=20,并且两个整数不能相同。创建一个while循环用于判断整数大小和两数是否相同。

3、输入的两个整数具有随意性,无需遵循前小后大原则。这里创建两个变量min和max分别存储比较后两数的较小数和较大数

4、输出结果时使用“%.0lf”隐藏double小数点后的位数,使计算结果以整数形式输出

少长咸集

群贤毕至

访客