標籤:一個 聯絡 表示 檔案包含 節奏 內建函式 檔案 bubuko 反序
1.1 PTA題目:6-2 遞迴計算Ackermenn函數1.設計思路
函數部分 定義整型變數 result 找到遞迴出口 如果m=0; result=n+1; 否則 if(n=0) result=Ack(m-1,Ack(m,n-1); else result=Ack(m-1,Ack(m,n-1)) ; 返回result; end;
2.代碼
3.調試問題
開始時沒有真正理解遞迴的用法,結果推了很久,到最後陷入死迴圈;最後在同學的指點下說不用去糾結遞迴的演算法 ,在寫時只用考慮第一步就好啦,其他的電腦會解決;
1.2 學產生績管理系統(5分)1.2.1 畫函數模組圖,簡要介紹函數功能。
如:
1.2.2 展示你的工程檔案1.2.3 函數代碼部分本系統代碼總行數:1.2.4 調試結果展示1.2.5 調試碰到問題及解決辦法。二、本周題目集的PTA最後排名
三、閱讀代碼
(3)全排列
從n個不同元素中任取m(m≤n)個元素,按照一定的順序排列起來,叫做從n個不同元素中取出m個元素的一個排列。當m=n時所有的排列情況叫全排列。
如1,2,3三個元素的全排列為:
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1
//全排列
inline void Swap(int &a,int &b){ int temp=a; a=b; b=temp;}void Perm(int list[],int k,int m){ if (k == m-1) { for(int i=0;i<m;i++) { printf("%d",list[i]); } printf("n"); } else { for(int i=k;i<m;i++) { Swap(list[k],list[i]); Perm(list,k+1,m); Swap(list[k],list[i]); } }}
Swap函數用於交換兩個數的值,perm函數用於將數組中的數實現全排列,先找到遞迴出口,考慮 k=m-1的特殊情況,調用遞迴函式實現數組元素全排列
四、本周學習總結(1分)1.介紹本周學習內容
遞迴函式基本概念:
遞迴(recursion):程式調用自身的編程技巧。
遞迴滿足2個條件:
(1)有反覆執行的過程(調用自身函數)
(2)有跳出反覆執行過程的條件(遞迴出口)
遞迴程式設計
注意點:
(1)遞迴出口:即遞迴的結束條件,到何時不在遞迴調用下去
(2)遞迴式子:遞迴的運算式,如fact(n)=n*fact(n-1)
宏基本定義
宏定義的格式:
#define 宏名 宏定義字串
註:宏定義字串是宏名對應的具體實現過程,可以是任一字元串,中間可以有空格,以斷行符號符做結束,例:
#define PI 3.1415926
#define TRUE 1
#define FALSE 0
宏的用途
(1)符號常量,如PI、數組大小定義,以增加程式的靈活性
(2)簡單的 函數功能實現,由於宏要在一行內完成,只能實現簡單的函數功能
(3)為程式書寫帶來一些方便
檔案包含
1.常用標準標頭檔 ctype.h 字元處理 math.h 與數學處理函數有關的說明與定義 stdio.h 輸入輸出函數中使用的有關說明和定義 string.h 字串函數的有關說明和定義 stddef.h 定義某些常用內容 stdlib.h 雜項說明 time.h 支援系統時間
程式檔案模組
c語言把儲存有一部分程式的檔案稱為程式檔案模組;
程式、程式檔案模組與函數間的關係:一個大程式可由幾個程式檔案模組組成,每一個程式檔案模組又可能包括若干個函數,程式檔案模組只是函數書寫的載體
檔案模組間的通訊1.外部變數;
外部變數聲明格式:
extern 變數名表
2.靜態全域變數3..函數與程式檔案模組
函數與程式檔案模組的聲明格式:
extern 函數類型 函數名 (參數表說明)
4.靜態函數在c語言中也稱內建函式。定義格式為:
static 函數類型 函數名(參數表說明)
上機考試錯題函數題6-1 jmu-c-字串降序排序(20 分)
輸入任意個字串,能對字串降序排序。
錯誤原因:沒有理解指標數組,導致答案錯誤;
6-2 jmu-c-二分尋找(20 分)
假設數組a是個升序的數組序列,現要通過二分尋找法在數組中尋找關鍵字key,並輸出在數組中的下標及尋找次數。 若找不到,則輸出-1及尋找次數。
錯誤原因:理解錯二分尋找的判斷條件導致答案錯誤
6-3 字串正反序串連(20 分)
將s所指字串的正序和反序進行串連,形成一個新串放在t所指的數組中。
2.學習體會。
對於最近的學習狀態表示很不滿意,不是說沒有在認真的讀書,而是最近的學習效率大大降低;還有最近對於c語言的學習,感覺難度越來越大了,自己有點跟不上節奏,就比如上周的上機考試,對於稍簡單的題自己私下想想可以寫出來,但也不知道為什麼上機又不行,可能還是基礎掌握的不紮實吧;還有這次的大作業,感覺自己有點無從下手,不知道該從哪裡開始,怎麼將各個函數間聯絡起來,一直是顯示無法啟動並執行狀態;感覺對c語言的學習,自己的理解能力越來越差了,可能是自己下的功夫還不夠多,轉眼也快要期末了,還是好好複習各科的功課吧!
C語言部落格作業--函數嵌套調用