iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言算法练习之佩奇借书
  • 843
分享到

C语言算法练习之佩奇借书

2024-04-02 19:04:59 843人浏览 安东尼
摘要

目录1. 问题描述2. 题目分析3. 算法设计4. 代码实现5. 算法升级1. 问题描述 佩奇有5本新书,要借给A、B、C这3位小朋友,若每人每次只能借1本,则可以有多少种不同的借法

1. 问题描述

佩奇有5本新书,要借给A、B、C这3位小朋友,若每人每次只能借1本,则可以有多少种不同的借法?

2. 题目分析

本题属于数学当中常见的排列组合问题,即求从 5 个数中取 3 个不同数的排列组合的总数。 我们可以将 5 本书进行 1~5 的编号,A、B、C 3个人每次都可以从 5 本书中任选 1 本,即每人都有 5 种选择,由于 1 本书不可能同时借给一个以上的人,因此只要这 3 个人所选书的编号不同,即为一次有效的借阅方法。

3. 算法设计

对于每个人所选书号,我们可以采用穷举循环来实现,即从每个人可选书号(1、2、3、4、5)的范围内进行穷举,从而得到可行的结果。 对第 1 个人的选择,我们可以用循环将其列出::for (a = 1; a <= 5; a++),同理对于第 2 个人、第 3 个人可以用同样的方法。 由于一本书只能借给一个人,所以第 2 个人的选择会受到第 1 个人的限制,最后一个人的选择会受到第 2 个人的限制,即后面的选择都是在前面选择的前提下进行的,所以可采用循环的嵌套来解决问题。 利用循环解决问题的时候,找到循环的三要素:循环变量的初值、循环的控制条件,以及使循环趋于结束的循环变量值的改变是进行编程的关键。

4. 代码实现

完整代码?


int main()
{
	int a, b, c = 0; //a、b、c分别用来记录3个人所选新书编号
	int cnt = 0; //用来统计借阅的方法

	printf("A、B、C 三个人所选书号分别为:↓\n");

	for (a = 1; a <= 5; a++) //控制A借书编号
	{
		for (b = 1; b <= 5; b++) //控制B借书编号
		{
			for (c = 1; c <= 5; c++) //控制C借书编号
			{
				if ((a != b) && (a != c) && (c != b)) //控制有效借阅组合
				{
					printf("A:%d号  B:%d号  C:%d号  |  ", a, b, c);
					cnt++;

					if (cnt % 4 == 0) //打印4列在屏幕上显示
					{
						printf("\n");
					}
				}
			}
		}
	}
	printf("总共有%d种有效的借阅方法\n", cnt); //输出有效的借阅方法总数

	return 0;
}

运行结果?

本题的输出结果有一个条件限制,即 3 个人所选书号各不相同,所以在输出语句前只要用一个 if 语句 if(a!=b && a!=c && c!=b)判断即可。

5. 算法升级

对于原程序中的第三层 for 循环来说不管 a、b 的取值是否相同,循环都要重复进行 5 次。 如果A 和 B 所选书号相同,那么无论 C 选什么书号都是无效的借阅方法。因此在执行第 3 个循环之前可先行判定A、B 两人的编号是否相同,进而提高程序效率。

修改后的程序在进入循环体之前首先判断a、b的取值,如果两者取值相同,内层循环无须重复执行5次便可结束。

完整代码?

到此这篇关于C语言算法练习之佩奇借书的文章就介绍到这了,更多相关C语言 佩奇借书内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言算法练习之佩奇借书

本文链接: https://www.lsjlt.com/news/143671.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言算法练习之佩奇借书
    目录1. 问题描述2. 题目分析3. 算法设计4. 代码实现5. 算法升级1. 问题描述 佩奇有5本新书,要借给A、B、C这3位小朋友,若每人每次只能借1本,则可以有多少种不同的借法...
    99+
    2024-04-02
  • C语言算法练习之佩奇存钱方案
    目录1. 问题描述2. 问题分析3. 算法设计4. 代码实现1. 问题描述 假设银行一年整存零取的月息为 0.63%。 现在佩奇手中有一笔钱,她打算在今后的 5 年中的每年...
    99+
    2024-04-02
  • C语言算法中如何解决佩奇借书问题
    小编给大家分享一下C语言算法中如何解决佩奇借书问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1. 问题描述佩奇有5本新书,要借给A、B、C这3位小朋友,若每人每次只能借1本,则可以有多少种不同的借法?2. 题目分析本题...
    99+
    2023-06-29
  • C语言算法练习之数组求素数
    目录一、问题描述二、算法实例编译环境三、算法实例实现过程3.1、包含头文件3.2、声明数组3.3、声明相关变量3.4、数组赋值3.5、 输出数组里面元素的值3.6、求素数、素数和、最...
    99+
    2024-04-02
  • C语言算法练习之数组元素排序
    目录一、问题描述二、算法实例编译环境三、算法实例实现过程3.1、包含头文件3.2、定义宏和声明数组3.3、声明相关变量3.4、随机生成十个数字赋值给数组3.5、输出随机生成的十个数字...
    99+
    2024-04-02
  • C语言算法练习之打鱼还是晒网
    目录1. 问题描述2. 题目分析3. 算法设计4. 流程框架5. 代码实现1. 问题描述 中国有句俗语叫 “ 三天打鱼两天晒网 ”。某人从 1990 年 1 ...
    99+
    2024-04-02
  • C语言算法练习之抓交通肇事犯
    目录1. 问题描述2. 题目分析3. 算法设计4. 流程框架5. 代码实现6. 算法升级1. 问题描述 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记...
    99+
    2024-04-02
  • C语言算法练习之折半查找的实现
    目录1. 题目描述2. 问题分析3. 算法设计4. 动图演示5. 代码实现6.知识点补充continue 语句break 语句continue语句 和 break语句的区别7. 问题...
    99+
    2024-04-02
  • C语言算法练习之求二维数组最值问题
    目录一、问题描述二、算法实例编译环境三、算法实例实现过程3.1、包含头文件3.2、定义宏和声明数组3.3、声明相关变量3.4、输入数组(方阵)的阶3.5、输出 “输入的数...
    99+
    2024-04-02
  • C语言数据结构之图书借阅系统
    本文实例为大家分享了C语言实现图书借阅系统的具体代码,供大家参考,具体内容如下   #include <cstdlib> #include <iostream&g...
    99+
    2024-04-02
  • C语言练习之扫雷小游戏
    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 *1.设计思路与实现要求 (1)创建两个二维数组 9x9 ,一个表示显示地图数组showMap-未翻开状...
    99+
    2024-04-02
  • C语言每日练习之二叉堆
    目录一、堆的概念1、概述2、定义3、性质4、作用二、堆的存储结构1、根结点编号2、孩子结点编号3、父结点编号4、数据域5、堆的数据结构三、堆的常用接口1、元素比较2、交换元素3、空判...
    99+
    2024-04-02
  • C语言每日练习之进制转换
    目录分析代码实现网上参考总结分析 我一开始的想法是通过输入整数形式八进制来转换成十进制输出,后来发现用字符数组输入更方便。我这里就讲讲我用整型数据输入的转换思路: 我们都知道二进制...
    99+
    2024-04-02
  • C语言每日练习之选择排序
    目录分析代码实现总结分析 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位...
    99+
    2024-04-02
  • C语言每日练习之冒泡排序
    目录分析代码实现运行结果总结分析 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 冒泡排序(这里只讨论从小到大排序)可以通过二种方式实现,分别是将最小...
    99+
    2024-04-02
  • C语言每日练习之字符串反转
    目录分析代码实现网上参考总结分析 在第18天:利用递归函数调用方式,将所输入的字符以相反顺序打印出来中,已经用过递归实现字符顺序输入,逆序输出,今天的题目是字符串反转,将以字符数组的...
    99+
    2024-04-02
  • C语言练习之数组中素数交换
    目录题目要求总结题目要求 (1)在主函数中创建数组num,使用测试数据{108 4 19 7 23 66 49 13 33 35}对其初始化; (2)定义change函数,将num数...
    99+
    2024-04-02
  • C语言算法学习之双向链表详解
    目录一、练习题目二、算法思路1、设计浏览器历史记录2、扁平化多级双向链表3、展平多级双向链表4、二叉搜索树与双向链表一、练习题目 题目链接难度1472. 设计浏览器历史记录★★★☆☆...
    99+
    2024-04-02
  • C语言每日练习之乒乓球比赛问题
    目录题目描述分析代码实现后期完善网上参考解法一:解法二:总结题目描述 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比...
    99+
    2024-04-02
  • C语言每日练习之动态显示系统时间
    目录分析代码实现1.简易版2.自定义格式版3.格式化输出版4.精细版(毫秒+微秒)网上参考总结分析 C语言的时间库函数基本都在time.h里,该头文件主要包含三种形式的时间量,一种是...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作