c - 在 C 中打印从 (0 到 n) 的阶乘列表
问题描述
所以我才刚刚开始学习编码,也许是因为我不完全理解循环的本质。
所以我想要的输出是:
例如,如果输入的值为 6,则程序应生成:
- 0!= 1
- 1!= 1
- 2!= 2
- 3!= 6
- 4!= 24
- 5!= 120
- 6!= 720
但相反,它正在打印:
- 0!= 1
- 6!= 720
显然没有要点。显然,第二个 for 循环没有正确打印出来。我不确定为什么。如果有人可以帮助我,将不胜感激!
编辑:我真的应该指定我在寻找什么。感谢您提供的所有有用的回复。我意识到您的所有解决方案可能都是有效的,但我正在寻找不涉及创建新过程和功能的解决方案。对于我使用除 main() 以外的其他函数/过程的分配无效。我的代码中的问题似乎是第二个 for 循环根本没有运行,我不知道为什么。程序通常应该采用输入值,但我将这些值硬编码到变量中,认为这会有所作为,但事实并非如此。如果有任何方法可以使用 if、for 或 while 循环来实现这一点,那么对我来说是最佳方式。
#include <stdio.h>
int main( void )
{
int number1 = 4;
int number2;
int factorial = 1;
int factorialPrev = 1;
printf("0! = 1\n");
for (int i = 0; i < number1; i++)
{
factorial = factorial * (number1 - i);
}
for (int i = number1 - 1; i <= 0; i--)
{
number2 = number1 - i;
factorialPrev = factorialPrev * number2;
printf("%d! = %d\n", number2, factorialPrev);
}
return 0;
}
解决方案
您的代码有点......令人困惑,所以我将重写它。这是绝对最低限度的功能:
printf("0! = 1\n");
int factorial = 1;
for (int n = 1; n <= number; n++) {
factorial *= n;
printf("%d! = %d\n", n, factorial);
}
让我们将其包装在一个函数中:
void printFactorials(int number) {
printf("0! = 1\n");
int factorial = 1;
for (int n = 1; n <= number; n++) {
factorial *= n;
printf("%d! = %d\n", n, factorial);
}
}
现在让我们为无效输入添加一些保护:
void printFactorials(int number) {
if (number < 0) {
printf("Input cannot be less than 0");
return;
}
if (number > 9) {
printf("Input cannot be greater than 9");
return;
}
printf("0! = 1\n");
int factorial = 1;
for (int n = 1; n <= number; n++) {
factorial *= n;
printf("%d! = %d\n", n, factorial);
}
}
最后,让我们使用它:
#include <stdio.h>
int main(void) {
printf("Enter a positive integer between 0 and 9: ");
int number;
if (scanf("%d", &number) == 1)
printFactorials(number);
return 0;
}
推荐阅读
- crash - 创建 ems 研究时solidworks 崩溃
- javascript - 如何使用 jQuery 使用 column() 访问 dataTables 中的列?
- python - 使用 python 从 tar.gz 文件中读取数据
- javascript - 评估命令 Discord.JS
- css - 没有项目符号的 CSS 列
- php - php代码查看两条线是否平行
- python - Toast 通知系统托盘图标
- javascript - 错误:./node_modules/angular-font-awesome/dist/angular-font-awesome.js 1448:12-20 “在‘@angular/core’中找不到导出‘渲染器’
- c++ - 写入数组类不会计算
- raspberry-pi - 设备连接 MQTT Broker 时获取设备配置