二級c語言之最後複習

2021-06-29 06:05:04 字數 2263 閱讀 7251

總結一下二級c語言常考的知識點:

1、  最大公約數和最小公倍數:(雖然很少可能會考,但還是寫一下吧)

利用輾轉相除法求最大公約數,程式簡單,效率高

思路:輸入兩個整數:n,m。先用大的數對小的數取餘,再用小的數對得到的餘數取餘,知道餘數為0為止,此時上一步的餘數就是最大公約數。舉個例子。求24和16的最大公約數,首先24%16=8;然後16%8=0;所以8就是這兩個數的最大公約數。

程式**如下:

int fun(int a,int b)

return b; }

對於最小公倍數,用兩個數中較大的數對所求得的最大公約數取模再乘以較小的數即是最小公倍數。如24,16,求得的最大公約數是8,那麼24/8=3,3*16=48.。48便是這兩個數的最小公倍數。

2 、關於素數:

素數是常考的乙個知識點,考查的方法有很多,判斷乙個數是否是素數,輸出n-m的素數(的個數),輸出離n最近的m個素數,篩選法得1-100的素數等問題。不過這些問題都只需要做出細小的調整即可實現。素數的判斷方法就不想多說了,說一下怎麼用篩選法求素數吧,這是一種較為高效率的演算法。

思路:首先我們把所有的數都設定為1(布林變數),然後把1置0,從2開始,把2*i都置為0,再到3,把3*i都置為0;注意,i>=2;如此反覆,這樣到最後仍為1的數就是素數了。

**如下:

#define n 100000007

bool prime[n];

void fun(int n) }

執行完這個函式之後布林值為1的i就可以了

for(i=2;i

if(prime[i])

printf("%d ",i);

篩選法就這樣吧。

3、排序問題,排序問題在二級中也很常見,詳細見部落格裡的另一篇文章。

4、指標與陣列:

陣列實際上是位址,而指標也是位址,所以在函式中,我們經常可以看見函式用指標來接受陣列的位址;在fun函式中看見它的形參為乙個指標,像fun(int *s,int n)之類的,實參字元型陣列時,對應的形參改為char *s就是了。 因此,在寫**的時候,我們可以直接把指標看成陣列,把陣列看成指標。像fun(int *s,int n),我們可以在函式中直接用s[i];而不需要另外在定義乙個陣列;

另外,在做題時,我們經常要遍歷陣列,這時候我們需要設定乙個結束標誌,即陣列的最後乙個數遍歷完成的標誌。一般可以這樣寫(i=0;s[i];i++)    (陣列s為字元陣列時)

5、指標與字串

這個二級中最常見的乙個考點,通常出現在程式設計題中,做這類題關鍵的還是用好指標,對指標的指向有良好的認知,可以參考部落格裡的「刪除字串中的指定字元」,那是指標與字串考點中的乙個經典例子。

要使指標指向字串末尾,通常的做法是:

while(*p)

p++;

這樣就可以指向最後乙個字元:'\0'了,要求指向最後乙個非空字元時,還要再加一條語句,p--;

如果題目中設定了乙個空的指標(這裡說的空指的是指標沒有指向任何東西)來作為函式的返回,這時候我們需要把最後的結果賦給這個指標,如果題目要求的是用原來的指標進行輸出,那麼一般我們需要在函式中設定乙個新的指標來進行指標運算,然後再把最後的結果賦給原來的指標;

怎麼樣看是用哪個指標進行輸出呢?比如main函式中呼叫fun函式時是這樣寫的,char a[80];  int n;  fun(a,n);   輸出語句是這樣寫的printf("%s",a);   那麼fun函式中用於輸出的還是a陣列,或者說a指標,所以在fun函式裡,我們可以定義char *p=a; 把a所指的位址賦給p,再進行後續的運算,最後把運算的結果賦回給a;如果main函式中呼叫fun函式時是這樣寫的,char a[80],t[80];  int n;  fun(a,t,n);   輸出語句是這樣寫的printf("%s",t);   那麼fun函式中用於輸出的則是t陣列,我們需要把結果賦給指標t。

5、數字的拆分與回文數

關於數字的拆分有時候會考到,數字的拆分就是12345,有時候需要把每個數都拆出來即'1','2','3','4','5'。我們用的方法一般是這個數字先對10取餘,再對10取模,不斷重複直到模為0;例如:12345%10=5;然後12345/10=1234;1234%10=4;。。。不斷重複即可,

關於回文數,就是,順序和倒序,這個數的值都是一樣的,如12321.判斷乙個數是否是回文數時,做法是,先拆分,再把拆分出來的數倒序組成乙個新的數,判斷這個數是否與原來的數相等,

詳情見**:(判斷n是否是回文數)

int s=0,a,b;

a=n;

while(a)

if(s==n)

這個表示式若成立則為回文數,否則不是。

二級c語言複習3

1棧支援子程式呼叫。棧是一種只能在一端進行進行插入或刪除的線性表,在主程式呼叫子程式時首先儲存主程式狀態,在執行子程式,最後把子程式結果返回到主程式中呼叫子程式的位置。2二叉樹性質 3 在任意一顆二叉樹中,度為 0的葉子結點總是比度為 2的結點多乙個。3軟體測試的目的是為了發現錯誤而執行程式的過程,...

二級C語言複習4

1樹是一種非線性結構,而迴圈佇列 帶鏈佇列和帶鏈棧都是線性結構。2迴圈佇列的隊頭指標與隊尾指標不是固定的,隊頭指標可能大於隊尾指標,有時也可能小於隊尾指標。3演算法的空間複雜度是指演算法在執行過程中所需要的記憶體空間。4n s圖提出用方框圖來代替傳統的程式流程圖,pad圖是問題分析圖,它是繼承程式流...

二級C語言複習5

1棧和佇列都是線性結點 2軟體的生命週期指軟體產品從提出 實現 使用維護到停止使用退役的過程。3繼承是面對物件的方法的乙個主要特點,是使用已有的類的定義作為基礎建立新類的定義技術。繼承是指能直接獲得已有的性質和特徵,而不必重複定義他們,所以說繼承是指類之間共享屬性和操作的 4層次模型的基本結構是樹形...