函数题 6-8 简单阶乘计算【PAT】

文章目录

编程练习题目集目录

题目

  要求实现一个计算非负整数阶乘的简单函数。

函数接口定义

int Factorial( const int N );

  其中N是用户传入的参数,其值不超过 12 12 12。如果 N N N 是非负整数,则该函数必须返回 N N N 的阶乘,否则返回 0 0 0。

裁判测试程序样例

c 复制代码
#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

题解

解题思路

  首先判断传入函数的数字,如果小于 0 0 0 直接返回 0 0 0;如果是 0 0 0 或 1 1 1 直接返回 1 1 1;如果是大于 1 1 1 的数字则利用 f o r for for 循环,从 1 1 1 开始相乘,因为输入的至小于 12 12 12,因此可以用 i n t int int 类型,最后返回和即可。

  注: 0 0 0 的阶乘为 1 1 1;

完整代码

c 复制代码
#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;
}

/* 你的代码将被嵌在这里 */
int Factorial(const int N)
{
    if (N < 0)
    {
        return 0;
    }
    else
    {
        if (N <= 1)
        {
            return 1;
        }
        else
        {
            int i = 1, sum = 1;
            for (i; i <= N; i++)
            {
                sum *= i;
            }
            return sum;
        }
    }
}

AC代码:

c 复制代码
int Factorial(const int N)
{
	if (N < 0)
		return 0;
	else
	{
		if (N <= 1)
			return 1;
		else
		{
			int i = 1, sum = 1;
			for (i; i <= N; i++)
				sum *= i;
			return sum;
		}
	}
}
相关推荐
2601_9622946119 小时前
AI 基础设施的“去 Python 化“:Rust 与 C# 的两条替代路径
ai·rust·c·基础设施·去python化
2601_962297252 天前
C# vs Java vs Python:YOLO工业部署性能对比实战
java·python·c·工业视觉·性能对比
知无不研3 天前
一个简单的2048小游戏
游戏·c·2048·小项目
牢姐与蒯10 天前
Linux进程(三)之进程状态_僵尸孤儿
linux·运维·服务器·ubuntu·c
半点闲17 天前
深入解析小端序:把 4 字节的小端序拼成一个 32 位无符号长整数
c·字节序·大小端字节序·小端字节序转32位无符号长整数
依然鸣21 天前
PTA团体程序设计天梯赛L1真题讲解L1-077-080
开发语言·c++·算法·深度优先·pat考试·图论
依然鸣21 天前
PTA团体程序设计天梯赛L1真题讲解L1-085-088
数据结构·c++·经验分享·算法·深度优先·pat考试
C++ 老炮儿的技术栈22 天前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
依然鸣23 天前
PTA团体程序设计天梯赛L2真题讲解L2-005-008
开发语言·数据结构·c++·算法·深度优先·pat考试·图论
依然鸣23 天前
PTA团体程序设计天梯赛L2真题讲解L2-001-004
经验分享·学习·算法·深度优先·pat考试