C语言:计算n的阶乘(不考虑溢出)

简介: 题目:从键盘输入一个值n,计算n的阶乘,如:输入5,计算5的阶乘 --> 5! = 1 * 2 * 3 * 4 * 5

题目:

从键盘输入一个值n,计算n的阶乘

如:输入5,计算5的阶乘 --> 5! = 1 * 2 * 3 * 4 * 5

思路:

第一步:

创建一个变量 ret ,用来存放每次相乘后的值

因为 0 乘 任何数都为 0,所以应初始化为 1

实现代码:

//计算n的阶乘:
#include <stdio.h>
int main()
{
  //输入n:
  int n = 0;
  scanf("%d", &n);
  //创建一个变量 ret ,用来存放每次相乘后的值,因为 0 乘 任何数都为 0,所以应初始化为 1
  int ret = 1;
  return 0;
}

实现图片:

image.png

第二步:

利用 for循环 和前面输入的 n循环生成 1~n 个数

使用上一步的 ret变量 依次相乘生成的 1~n 个数

这也是前面把 ret  初始化为 1 的原因防止0乘任何数都为0

赋给 ret变量 本身

实现代码:

//计算n的阶乘:
#include <stdio.h>
int main()
{
  //输入n:
  int n = 0;
  scanf("%d", &n);
  //创建一个变量 ret ,用来存放每次相乘后的值,因为 0 乘 任何数都为 0,所以应初始化为 1
  int ret = 1;
  //利用 for循环 和前面输入的 n 循环生成 1~n 个数,
  //再使用上一步的 ret变量 依次相乘生成的 1~n 个数,
  //这也是前面把 ret  初始化为 1 的原因,防止0乘任何数都为0,
  //再赋给 ret变量 本身。
  int i = 0;
  for (i = 1; i <= n; i++) //利用 for循环 和前面输入的 n 循环生成 1~n 个数
  {
    ret = ret * i;//再使用上一步的 ret变量 依次相乘生成的 1~n 个数,再赋给 ret变量 本身
  }
  return 0;
}

实现图片:


image.png

最终代码和实现效果:

最终代码:

//计算n的阶乘:
#include <stdio.h>
int main()
{
  //输入n:
  int n = 0;
  scanf("%d", &n);
  //创建一个变量 ret ,用来存放每次相乘后的值,因为 0 乘 任何数都为 0,所以应初始化为 1
  int ret = 1;
  //利用 for循环 和前面输入的 n 循环生成 1~n 个数,
  //再使用上一步的 ret变量 依次相乘生成的 1~n 个数,
  //这也是前面把 ret  初始化为 1 的原因,防止0乘任何数都为0,
  //再赋给 ret变量 本身。
  int i = 0;
  for (i = 1; i <= n; i++) //利用 for循环 和前面输入的 n 循环生成 1~n 个数
  {
    ret = ret * i;//再使用上一步的 ret变量 依次相乘生成的 1~n 个数,再赋给 ret变量 本身
  }
  printf("%d", ret);
  return 0;
}

实现效果:

957f48f5da5740b582e3cbb90c431252.png

相关文章
|
6月前
|
存储 C语言
【C语言刷题每日一题#牛客网HJ73】——计算日期到天数转换(给定日期,计算是该年的第几天)
【C语言刷题每日一题#牛客网HJ73】——计算日期到天数转换(给定日期,计算是该年的第几天)
|
6月前
|
存储 安全 C语言
【C语言刷题每日一题】——求最大公约数(带数学计算过程详解)
【C语言刷题每日一题】——求最大公约数(带数学计算过程详解)
|
6月前
|
存储 C语言
【C语言刷题每日一题】——计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
【C语言刷题每日一题】——计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
|
6月前
|
C语言
C语言---试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?
C语言---试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?
356 1
|
6月前
|
C语言
【C语言刷题系列】计算整数的二进制位中1的个数 (三种方式)
【C语言刷题系列】计算整数的二进制位中1的个数 (三种方式)
|
6月前
|
C语言
C语言-----计算两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
C语言-----计算两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
|
6月前
|
Serverless C语言
C语言----递归函数,计算一个非负整数的数字之和
C语言----递归函数,计算一个非负整数的数字之和
|
6月前
|
C语言
C语言---计算三角形的周长和面积--海伦公式
C语言---计算三角形的周长和面积--海伦公式
984 0
|
6月前
|
C语言
C语言---循环迭代---n的阶乘
C语言---循环迭代---n的阶乘
|
6月前
|
C语言
C语言---递归--求n的阶乘
C语言---递归--求n的阶乘