gpt4 book ai didi

c - 在 C 中打印出从 (0 到 n) 的阶乘列表

转载 作者:太空宇宙 更新时间:2023-11-04 05:48:47 24 4
gpt4 key购买 nike

所以我才刚刚开始学习编码,也许是因为我没有完全理解循环的本质。

所以我想要的输出是:

例如,如果输入的值为 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;
}

关于c - 在 C 中打印出从 (0 到 n) 的阶乘列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50519664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com