PTA基础编程题目集 6-8简单阶乘计算(C语言实现)

发布时间:2026/7/21 5:39:58

PTA基础编程题目集 6-8简单阶乘计算(C语言实现) 题目描述 摘要本文基于 PTA 平台编程题「简单阶乘计算」解析如何实现函数Factorial(N)计算非负整数 N 的阶乘。文章包含题目描述、函数接口定义、裁判测试样例、输入输出示例并给出两种代码实现函数部分实现和完整代码部分实现核心采用连乘法计算 N!对 N0 和 N0 的情况做了特殊处理。本题要求实现一个计算非负整数阶乘的简单函数。函数接口定义int Factorial( const int N );其中N是用户传入的参数其值不超过 12。如果N是非负整数则该函数必须返回N的阶乘否则返回 0。裁判测试程序样例#include stdio.h int Factorial( const int N ); int main() { int N, NF; scanf(%d, N); NF Factorial(N); if (NF) printf(%d! %d\n, N, NF); else printf(Invalid input\n); return 0; } /* 你的代码将被嵌在这里 */输入样例5输出样例5! 120函数部分实现/* 连乘计算 N! */intFactorial(constintN){if(N0){inti;intsum1;sumN;/* 初始值设为 N */for(i1;iN;i){sumsum*i;/* 依次乘上 (N-1)...1 */}returnsum;}elseif(N0){return1;/* 0! 1 */}elsereturn0;/* 负数视为非法输入 */}算法流程图下面是Factorial函数的执行逻辑流程图清晰展示了从输入 N 开始判断 N0、N0、N0 三种情况并分别展示循环计算、返回 1、返回 0 的流程是是否否是否开始输入整数 NN 0 ?sum Ni 1i N ?sum sum * ii i 1返回 sumN 0 ?返回 1返回 0结束流程图说明开始→ 输入整数 N。判断 N 0若成立进入循环计算流程初始化sum Ni 1循环条件i N成立时执行sum sum * i并递增i循环结束后返回sum。若不成立进入下一判断。判断 N 0若成立直接返回 10! 1。若不成立即 N 0返回 0非法输入。所有分支最终汇聚到结束。该流程图直观地反映了函数中if-else if-else的分支结构以及循环计算阶乘的过程。代码部分实现/* 6-8 简单阶乘计算 * 题目实现函数 Factorial(N)计算 N 的阶乘。 * 0! 1当 N 0非法输入时返回 0。 * 实现原理连乘法。N! N * (N-1) * … * 1。 * 先令 sum N再用 for 循环从 1 乘到 N-1 * 特殊情况N 0 直接返回 1N 0 返回 0。 * 时间复杂度 O(N)空间复杂度 O(1)。 */#includestdio.hintFactorial(constintN);intmain(){intN,NF;scanf(%d,N);NFFactorial(N);if(NF)printf(%d! %d\n,N,NF);elseprintf(Invalid input\n);return0;}/* 连乘计算 N! */intFactorial(constintN){if(N0){inti;intsum1;sumN;/* 初始值设为 N */for(i1;iN;i){sumsum*i;/* 依次乘上 (N-1)…1 */}returnsum;}elseif(N0){return1;/* 0! 1 */}elsereturn0;/* 负数视为非法输入 */}

相关新闻