C專題上機問題總結

2021-10-03 12:47:48 字數 2584 閱讀 5162

1.部分同學針對於遞迴函式的理解不夠深刻。可參考以下鏈結加以鞏固複習。

2.「6-5 遞迴實現順序輸出整數」。該題需順序輸出整數,而針對整數取餘操作是按照從低位到高位的順序,因此在遞迴過程中,需要先呼叫printdigits()函式,再printf()實現從高位到低位的輸出。注意輸出整數的輸出順序,需考慮個別樣例(例如n為100000,0,1等)。

3.「6-6 判斷滿足條件的三位數」。該題可以在遞迴過程中從n開始依次遞減直到100結束,判斷區間內每個數是否符合題目要求。判斷乙個三位數n是否有兩位重複,可以構建乙個長度為10的陣列arr,分別擷取n對位個位、十位、百位並通過陣列記錄其數字是否重複(如arr[i]>=2則說明i在n**現了兩次)。

另:如有不明白的知識點或題目,請大家一定要及時和我溝通。

本題目難度在於正整數拆分過程的輸出。大部分同學都嘗試了在拆分的過程中直接輸出整數n,試想是否可以換成一種思路:用乙個陣列記錄每次拆分的結果,在拆分過程中不需考慮輸出,在單次拆分結束後統一輸出。例如:

10=4

+3+2

+1 先用陣列記錄每次拆分的結果:array=[4

,3,2

,1]10

=1+1

+1+1

+1+1

+1+1

+1+1 每次拆分的結果:array=[1

,1,1

,1,1

,1,1

,1,1

,1]

因此,問題就可以轉換為如下兩部分:

遞迴求取正整數拆分的陣列表示。

對於每次求取的陣列,進行格式化輸出。

正向考慮正整數n的拆分有些困難,可以逆向思考:

假設不考慮n的大小,我們可以列舉實現陣列array=[n-1,n-1,…n-1,n-1,n-1]、[1,1,1,…,1,1,1]對應所有元素的和sum,判斷sumn的大小即可,大小關係分為以下三種情況:

sum>n:陣列之和大於該正整數,例如n=6,且array=[3,2,2],說明該樣例不符,直接退出。

sum==n:陣列之和等於該正整數,例如n=6,且array=[3,2,1],說明該樣例符合,需要進行格式化輸出。

sum

針對以上分析,array和n可以設定為全域性變數,確定遞迴函式divisioninteger()引數有以下幾個:

variable array[array_length]

;integer n;

void

divisioninteger

(array_len, sum, next_max_value)

針對以上**, 可以進一步嘗試剪枝,不詳細介紹,同學們可以自行嘗試。

ps:本題僅要求輸出正整數拆分,遞迴求整數劃分個數也是比較有意思的方向,感興趣的同學可以遞推公式實現求整數劃分個數。

參考思路:

本題利用深度優先遍歷(dfs),尋找到能到達終點的所有可能路徑對應的長度。然後記錄最短路徑並輸出。

迷宮問題每走一步都有四種選擇(上右下左),先選擇乙個方向,如果該方向能夠走下去,那麼就往這個方向走,當前位置切換為下乙個位置,步長+1。如果不能走,則換個方向,如果所有方向都走不了,那麼退出當前位置,到上一步的位置去,當前位置切換為上一步的位置,步長-1。一直這樣執行下去,要麼可以找到終點,要麼所有的路徑都沒能到達終點。值得注意的是,為了求取最短路徑,可以在終點時比較步長資訊,取最短步長即可。

除此之外,廣度優先遍歷能夠實現直接求取最短路徑,可以自行探索。

本專題考察以下知識點:

「完成m1要做的內務工作,即傳送一條訊息在螢幕上"hello m2, i am m1\n" , 然後檢查 m2 的任務是否完成」:因此,m1task()的任務包括兩部分:第一為完成對應的內務工作,第二為檢查m2是否完成。

m*task()函式,可以自行設定引數及返回值型別。

該系統限定檔案寫入模式為"w+",在管理員模式下輸出到螢幕的簽到資訊,可以不必從檔案中讀取。

2-5 定義帶引數的巨集「#define jh(a,b,t) t = a; a = b; b = t」,對兩個引數a、b的值進行交換,下列表述中正確的是()。

2-7 下面說法中正確的()

係數指數

是否首項

輸出格式--

-正常輸出0-

-省略輸出

1或-11否

省略係數及指數:+x^1或-x^1–>+x或-x

1或-11是

省略係數、指數及前置加號:+x^1或-x^1–>x或-x

正數k1

是省略前置加號:+kx^1–>kx

正數k0

否省略x: +kx^0–>+k

正數k0

是省略x及前置加號:+k–>k

負數k0

-省略x: kx^0–>k

另外,測試不通過時,建議嘗試以下幾種情況:

c基礎上機問題總結

有較長輸出資料的時候,建議將輸出部分複製到自己的 中,替換資料部分。這樣能夠減少格式方面的錯誤。注意int型別對應scanf printf的資料格式是 d,float對應 f,在寫程式時,一定要仔細檢查,否則容易出錯。scanf函式中,需要用到 符號,例如scanf d n printf函式中,不需...

C 專題 物件導向總結

1.什麼是類?什麼是物件?物件與類的關係是什麼?答 類就是相同的資料和相同的一組物件的集合,即類是對具有相同資料結構和相同操作的一類物件的描述 物件是描述其屬性的資料以及對這些資料施加的一組操作封裝在一起構成的統一體,物件可以認為是 資料 操作 類和物件之間的關係是抽象和具體的關係。2.建構函式和析...

迷宮問題(上)之堆疊詳解(C語言描述)

迷宮問題,顧名思義就是求出從入口到出口的路徑。正常情況下,我們的想法都是採用 窮舉求解 的方法,即從迷宮入口出發,順著某一方向向前試探,若能走通則繼續向前走 否則就沿著原路返回,換乙個方向再繼續進行試探,直到所有可能的路徑均被試探完。為了保證我們可以沿著原路返回 回溯 我們可以選用棧這個先入後出的資...