程序要求:
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小数点后的位数,使计算结果以整数形式输出