1. 程式人生 > >C語言——狐狸和兔子的故事

C語言——狐狸和兔子的故事

題目描述

圍繞著山頂有10個洞,一隻狐狸和一隻兔子各住一個洞。狐狸總想吃掉兔子。一天兔子對狐狸說:“你想吃我有一個條件,先把洞從1~10編上號,你從10號洞出發,先到1號洞找我;第二次隔1個洞找我,第三次隔2個洞找我,以後依此類推,次數不限。若能找到我,你就可以飽餐一頓。不過在沒有找到我以前不能停下來。”狐狸滿口答應就開始找了,它從早到晚找了N次洞,累得昏了過去也沒有找到兔子。請問,狐狸昏倒在哪一個洞裡?免子可能躲在哪些洞裡?

輸入

輸入一個正整數N(1<=N<=1000)

輸出

第一行:輸出兔子可以躲在的洞的編號
第二行:狐狸昏倒時所在洞的編號

樣例輸入
3
樣例輸出
2 4 5 7 8 9 10
6

 1
/************ 2 變數定義: 3 n:一共找n次洞 4 k:第k次找洞(1<= k <=n) 5 6 find_rabbit: 返回第k次找到的洞的號數。 7 8 **********/ 9 #include <stdio.h> 10 int find_rabbit(int k){ 11 if(k==1){ 12 return 1;/*第一次在1號洞*/ 13 }else{ 14 if((find_rabbit(k-1) + k)%10 == 0){ 15 return
10; 16 }else{ 17 return (find_rabbit(k-1) + k)%10; 18 } 19 } 20 } 21 void main(){ 22 int i,holes[10]; 23 int n=24; 24 for(i=0; i<10; i++){ 25 holes[i] = 1;/*初始化為1,1代表狐狸沒有去過的洞*/ 26 } 27 28 for(i=1; i<=n; i++){ 29 holes[find_rabbit(i)-1
] = 0;/*eg:第一次在1號洞,即holes[0]置為0,使用index要減1,0代表狐狸去過的洞*/ 30 } 31 32 for(i=0; i<10;i++){ 33 if(holes[i] == 1){ 34 printf("%d ",i+1);/*因為i是從0開始的,所以加1*/ 35 } 36 } 37 printf("\n%d \n",find_rabbit(n)); 38 39 40 }

相關推薦

C語言——狐狸兔子故事

題目描述 圍繞著山頂有10個洞,一隻狐狸和一隻兔子各住一個洞。狐狸總想吃掉兔子。一天兔子對狐狸說:“你想吃我有一個條件,先把洞從1~10編上號,你從10號洞出發,先到1號洞找我;第二次隔1個洞找我,第三次隔2個洞找我,以後依此類推,次數不限。若能找到我,你就可以飽餐一頓。不

C語言 scanf()gets()函數的區別

inpu 不同 技術分享 family images sca 可用 發現 pre C語言 scanf()和gets()函數的區別 1.相同點:scanf( )函數和gets( )函數都可用於輸入字符串 2.不同點:兩者在功能上有所區別,具體區別如下: 要實現如下需求&

c語言中###的用法

報錯 用法 == 預處理器 tor () name 文件 就是 一、一般用法 我們使用#把宏參數變為一個字符串,用##把兩個宏參數貼合在一起. 用法: #include<cstdio> #include<climits> using namespac

C語言constdefine的區別

一份 安全 font 預處理 tro span ble 展開 區別 const 定義的是變量不是常量,只是這個變量的值不允許改變是常變量!帶有類型。編譯運行的時候起作用存在類型檢查。 define 定義的是不帶類型的常數,只進行簡單的字符替換。在預編譯的時候起作用,不存在類

單片機-C語言-定義申明

rec sta 如果 自己 make urn typedef 定義 style 以下代碼是單片機程序,51單片機,編譯器為HT-IDE3000, 簡單來說 頭文件中只能申明, 變量在頭文件中申明時,要加上extern 這個關鍵字用來告訴編譯器,變量在其它的文件中定義, en

CRC32 C語言程式碼 JAVA程式碼

C語言如下: uint32_t crc32_compute(uint8_t const * p_data, uint32_t size){    uint32_t crc;    crc = 0xFFFFFFFF;    for (uin

CRC8 C語言程式碼 JAVA 程式碼

crc8 從語言程式碼如下: unsigned char const crc8_tab[256]   =   {      0x00,0x07,0x0E,0x09,0x1C,0x1B,0x12,0x15,0x38,0x3F,0x36,0x

c語言建立解析json資料

之前一篇有說到使用lincurl庫獲取網頁資料,那麼問題來了,當我們獲取到的資料大多是json的格式,應該怎麼解析出我們需要的欄位呢?下面我們使用json-glib庫來對json資料進行建立和解析。 #include<json-glib/json-glib.h> #include

C語言編譯連結

編譯連結是使用高階語言程式設計所必須的操作,一個源程式只有經過編譯、連結操作以後才可以變成計算機可以理解並執行的二進位制可執行檔案。 編譯是指根據使用者寫的源程式程式碼,經過詞法和語法分析,將高階語言編寫的程式碼轉變為功能有效的彙編程式碼。 編譯過程如下: 1、  預編譯過程 在c語言的

順序棧的c語言實現OOP實現

目錄 C語言實現順序棧和OOP實現順序棧 1,順序棧 2,C語言實現順序棧 3,用OOP實現一個順序棧 C語言實現順序棧和OOP實現順序棧 1,順序棧 (1)定義:棧(stack)又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除

C語言printfscanf說明

最常見的問題: scanf什麼時候加&,什麼時候不加&:scanf的意思是,你把輸入的值傳到我的這個地址上。 如果你的引數已經是地址了,就不需要用&; 當引數為資料時,則使用取址符&; 當引數為地址時,不需要使用取址符&,例如字串、指標; ++++++++++

C語言編譯器IDE的選擇

什麼是編譯器:   CPU只認識幾百個二進位制形式的指令,C語言對CPU而言簡直就是天書。C語言是用固定的詞彙與格式組織起來,簡單直觀,程式設計師容易識別和理解。   這時候就需要一個工具,將C語言程式碼轉換成CPU能夠識別的二進位制指令,就是可執行的程式.exe。   這個工具是特殊的軟體,叫做編譯器

C語言字串字元陣列

如果是字元陣列,也可以用一個字串字面值來初始化: char str[10] = "Hello"; 相當於: char str[10] = { 'H', 'e', 'l', 'l', 'o', '\0' }; str的後四個元素沒有指定,自動初始化為0,即Null字元。

c語言longlong long的取值範圍

溢位和取值範圍 C語言的整型溢位問題 整數溢位 int、long int 、long long int 佔用位元組 《C和指標》中寫過:long與int:標準只規定long不小於int的長度,int不小於short的長度。 double與int型別的儲存機制不同

C語言readwrite函式解析

在研究一份AES加密程式碼的時候,發現程式碼從command line獲取資料僅僅使用了read函式,很是疑問。從command line獲取資料不是要使用scanf函式嗎?所以,詳細瞭解了C庫的read函式特性。順帶了write函式,他們是couple一對兒!!! 主要參考文章:h

C語言運算子操作符

C語言加減乘除 C語言中的運算子號與數學中的略有不同,請見下表。 注:除法的說明 C語言中的除法運算有點奇怪,不同型別的除數和被除數會導致不同型別的運算結果: ①當除數和被除數都是整數時,運算結果也是整數;如果不能整除,那麼就直接丟掉小數部分,只保留整數部分,這跟將小數賦值給整數型別是一個

C語言forwhile

for和while的使用,直接舉例子就可以。 一.以VS為例,這裡用的是VS2013; int i; for(i = 0;i<10;i++) { } int i = 0; while(i<10) { i++; } 從程式碼上沒法看到更多的東西,乾脆直接看彙編

17. C語言 -- 指標陣列的關係

本部落格主要內容為 “小甲魚” 視訊課程《帶你學C帶你飛》【第一季】 學習筆記,文章的主題內容均來自該課程,在這裡僅作學習交流。在文章中可能出現一些錯誤或者不準確的地方,如發現請積極指出,十分感謝。 也歡迎大家一起討論交流,如果你覺得這篇文章對你有所幫助,記得評論、點贊哦 ~(。

Linux 下 C語言 open() fopen() 區別

fopen() #include <stdio.h> FILE *fopen(const char *path, const char *mode); mode 指定檔案的開啟模式: r:只讀方式開啟一個文字檔案(該檔案必須存在) r+:可讀可寫方式開啟一個文字檔案(該檔

breakcontinue,C語言breakcontinue的用法區別

break 語句很重要,用得非常多,初學者一定要掌握。continue 語句雖然沒有 break 語句用得多,但也經常用到,而且不可或缺,需要用到 continue 的時候其他語句是無法替代的。 前面已經介紹過 break 語句,它不僅可以跳出“迴圈體”,還可以跳出 switch。但事實上,br