最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言算法練習之佩奇借書

 更新時間:2022年03月23日 17:13:01   作者:飛向星的客機  
這篇文章主要該大家分享C語言佩奇借書的練習,文章主要通過描述佩奇借書的問題然后確定程序框架將結果運算出來,下面來看詳細內容吧,需要的朋友可以參考一下

1. 問題描述

佩奇有5本新書,要借給A、B、C這3位小朋友,若每人每次只能借1本,則可以有多少種不同的借法?

2. 題目分析

本題屬于數學當中常見的排列組合問題,即求從 5 個數中取 3 個不同數的排列組合的總數。 我們可以將 5 本書進行 1~5 的編號,A、B、C 3個人每次都可以從 5 本書中任選 1 本,即每人都有 5 種選擇,由于 1 本書不可能同時借給一個以上的人,因此只要這 3 個人所選書的編號不同,即為一次有效的借閱方法。

3. 算法設計

對于每個人所選書號,我們可以采用窮舉循環(huán)來實現,即從每個人可選書號(1、2、3、4、5)的范圍內進行窮舉,從而得到可行的結果。 對第 1 個人的選擇,我們可以用循環(huán)將其列出::for (a = 1; a <= 5; a++),同理對于第 2 個人、第 3 個人可以用同樣的方法。 由于一本書只能借給一個人,所以第 2 個人的選擇會受到第 1 個人的限制,最后一個人的選擇會受到第 2 個人的限制,即后面的選擇都是在前面選擇的前提下進行的,所以可采用循環(huán)的嵌套來解決問題。 利用循環(huán)解決問題的時候,找到循環(huán)的三要素:循環(huán)變量的初值、循環(huán)的控制條件,以及使循環(huán)趨于結束的循環(huán)變量值的改變是進行編程的關鍵。

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 循環(huán)來說不管 a、b 的取值是否相同,循環(huán)都要重復進行 5 次。 如果A 和 B 所選書號相同,那么無論 C 選什么書號都是無效的借閱方法。因此在執(zhí)行第 3 個循環(huán)之前可先行判定A、B 兩人的編號是否相同,進而提高程序效率。

修改后的程序在進入循環(huán)體之前首先判斷a、b的取值,如果兩者取值相同,內層循環(huán)無須重復執(zhí)行5次便可結束。

完整代碼??

到此這篇關于C語言算法練習之佩奇借書的文章就介紹到這了,更多相關C語言 佩奇借書內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言實現全排列算法模板的方法

    C語言實現全排列算法模板的方法

    這篇文章主要介紹了C語言實現全排列算法模板的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • C語言代碼詳細描述順序線性表

    C語言代碼詳細描述順序線性表

    這篇文章主要用代碼介紹了C語言線性表的順序線性表,對于學習數據結構與算法的朋友很有參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • C語言實現在windows服務中新建進程的方法

    C語言實現在windows服務中新建進程的方法

    這篇文章主要介紹了C語言實現在windows服務中新建進程的方法,涉及C語言進程操作的相關技巧,需要的朋友可以參考下
    2015-06-06
  • C++ 中類的拷貝、賦值、銷毀的實例詳解

    C++ 中類的拷貝、賦值、銷毀的實例詳解

    這篇文章主要介紹了C++ 中類的拷貝、賦值、銷毀的實例詳解的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • C++?Boost?Foreach超詳細分析講解

    C++?Boost?Foreach超詳細分析講解

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • 在QT5中實現求兩個輸入值的和并輸出(實例)

    在QT5中實現求兩個輸入值的和并輸出(實例)

    下面小編就為大家?guī)硪黄赒T5中實現求兩個輸入值的和并輸出(實例)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • C++計算ICMP頭的校驗和實例

    C++計算ICMP頭的校驗和實例

    這篇文章主要介紹了C++計算ICMP頭的校驗和的方法,代碼簡單實用,對于校驗ICMP報文來說有不錯的實用價值,需要的朋友可以參考下
    2014-10-10
  • C語言中棧的兩種實現方法詳解

    C語言中棧的兩種實現方法詳解

    棧只允許在一端進行插入或刪除操作的線性表。首先棧是一種線性表,但是限定這種線性表只能在某一端進行插入和刪除操作,這篇文章主要介紹了C語言對棧的實現基本操作
    2021-08-08
  • 一篇文章帶你入門C語言:數組

    一篇文章帶你入門C語言:數組

    這篇文章主要介紹了C語言中數組的一些基本知識小結,其中重點是對于數組的內存分配相關方面的知識整理,需要的朋友可以參考下
    2021-08-08
  • C語言實現古代時辰計時與現代時間換算

    C語言實現古代時辰計時與現代時間換算

    這篇文章主要為大家詳細介紹了如何利用C語言實現古代時辰計時與現代時間換算,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-03-03

最新評論

天台县| 罗甸县| 江西省| 和平区| 股票| 桂东县| 石首市| 班戈县| 东平县| 方正县| 荔浦县| 莱州市| 红原县| 邵阳县| 青浦区| 都匀市| 方正县| 元谋县| 杂多县| 宁陵县| 玛纳斯县| 宁远县| 阳泉市| 长顺县| 信宜市| 三都| 明溪县| 富裕县| 随州市| 双流县| 六枝特区| 集安市| 札达县| 镇雄县| 丰宁| 慈利县| 枞阳县| 沈阳市| 绿春县| 昌吉市| 泽普县|