C語言二級程式設計題技巧總結

2021-10-13 12:50:29 字數 4084 閱讀 6124

上機程式設計題總結

一、程式設計題的基本演算法

1.求和問題。

(1)(迴圈控制變數)計數器的範圍。

(2)和變數的初值一般為0。

(3)如是分數求和,請注意整除問題。

(4)在確保前三個條件的情況下,按程式設計的思路,一步步完善。

2. 求乘積問題。

(1)積變數 (2)乘積表示式作分母的時候,是乙個整體,**括號。

3.找最大值、最小值問題。

(1)首先將首元素(行首、列首等)的值賦給儲存最大值(或最小值)的變數,如max(或min)

(2)然後將max(或min)和後面的元素一一比較,如果出現更大的值(或更小的值),則將該值賦給max(或min),直到全部比完為止,利用乙個臨時變數j記錄max所在位置。

(3)一維陣列的首元素為a[0],二維陣列的首元素為a[0][0],二維陣列的行首元素為a[i][0],二維陣列的列首元素為a[0][i]。

例:找出2×m整型二維陣列中最大元素的值

int fun (int a[m])

4.求素數問題。

(1)判斷乙個素是否為素數。

(2)求某個範圍內素數的個數、和、平方根和等。

5. 求最小公倍數、最大公約數問題。

最小公倍數求法:用從1開始的數去整除,若能同時整除,則此數為最小公倍數,否則繼續加1再整除,直到找到為止。

for(k=1; ;k++)

if(k%a==0&&k%b==0) break

}; 最大公約數求法(碾轉相除法):x>y

(1)將兩數中的大數去除以小數,如果除不斷,轉入(2),若能整除,轉入(3)。

(2)將小數變成被除數,它們的餘數為除數,再相除。如果除不斷,轉入(2)。若能整除,轉入(3)。

(3)則此除數為最大公約數。

int a(int x,int y)

else }

6.字串問題。

(1)串重新組合問題。

①原串中去掉(或新增)一部分組成成分(如數字、*號)

②奇數或偶數重排

(2)在串中查詢字元或字串問題。

(3)前兩個問題中涉及到的字元移動問題(前移、後移)

(4)將串中的某些前移,某些後移,實質是先選出來,存在不同的陣列中,再重新合併。

(5) 逆序。

(6)字元型的數字轉換為成其面值相同的整數,並進行相關運算。如『5』轉換為數值5怎麼轉換? 『5』-『0』=5 或『5』-48=5

(7)字元大小寫轉換。如『a』轉換為『a』怎麼轉換?

『a』-『a』=-32 或『a』-32=『a』

for(i=0;i='a' && b[i]<='z')

c=b[i]-32;

if(b[i]>='a' && b[i]<='z')

c=b[i]+32;

return c;

}}7.排序問題(假定有n個元素)。

1)氣泡排序。

從陣列的首元素開始,依次對相鄰的兩個元素進行比較,當發現前面的數字大於(或小於)後面時

就進行依次交換,從頭到尾比較完一遍就挑出乙個最大(或最小)的數,將其排在最後面,n個數要比較n-1遍,其中第j遍要兩兩相比n-j遍。

主要引數說明:

i (迴圈次數n-1次): 0----n-2

如果a[i]t=a[i];a[i]=a[j];a[j]=t; }則為降序

如果a[i]>a[i+1]

t=a[i];a[i]=a[j];a[j]=t; }則為公升序.

例:main() }

for(i=0;i<10;i++)

printf("%5d,",a[i] );

printf("\n");

} 2)選擇排序。

選擇排序分公升序和降序,其中降序排序,首先從陣列中挑選乙個最大的元素,把它和第乙個元素交換,接著從剩下的n-1個元素中再挑出乙個最大的元素,把它和第二個元素交換,不斷重複以上過程,直到比較完最後兩個元素。

主要引數說明:

i (迴圈次數n-1次): 0----n-2

j (被比較元素的下標):i+1 -----n-1

如果a[i]t=a[i];a[i]=a[j];a[j]=t; }則為降序。

如果a[i]>a[j]

t=a[i];a[i]=a[j];a[j]=t; }則為公升序。

例:int myarray[6] = ;

int i, j, temp;

int n = 6;

for (i=0; i

for (j=i+1; j

} for (i=0; i<6; i

printf("%d ", myarray[i]);

8.邏輯與(&&)和邏輯或(||)的應用。

(1)求100以內能被5整除或7整除,但不能被11整除。

if((i%5==0||i%7==0)&&i%11!=0)

9. 算術運算子%與/的應用。

求商用/

求餘數用%

(1)截尾數問題,取乙個數的後n-1位。

(2)求乙個數的每一位上的數字。

(3)奇數:x%2==1;偶數:x%2==0;

10.結構體程式設計問題

引用時字元型陣列(如name)、各種型別的普通成員變數,採用**.**或者****;除字元型別外的其它型別陣列引用一般採用循還語句和**.**[i]。

請區分b.score[i]與b[i].score,

11. 結點引用類似,* →*。

12. 兩個數重新合併成乙個新數。

請掌握指標檔案相關函式及字串相關函式的使用方法。

file *fp;fopen(fp)與fclose(fp)對稱

13 統計字串中單詞的個數,單詞中間用若干個空格隔開。

二、進行程式設計測試時,建議按以下步驟進行

1.首先仔細審題,了解試題的要求,記下試題給出的輸入和輸出例示,以便檢驗在完成指定的函式後程式執行的結果是否正確。

2.調出源程式後,應對照函式首部的形參,審視主函式中呼叫函式時的實參內容,以便明確在函式中需要處理的資料物件。

3.理解試題的要求,審視主函式中呼叫函式的方式,若在表示式中呼叫函式(如把函式值賦給某個物件),則要求有函式值返回,需注意函式的型別,並在函式中用return語句返回函式值;若主函式中僅用語句形式呼叫函式,則需要通過形參間接地返回所得結果。

4.選擇適當的演算法進行程式設計,輸入程式語句。不要忘記及時存檔!

5.編譯程式,直到沒有語法錯誤。

6.除錯程式,利用試題中給出的例示資料進行輸入(若要求輸入的話),執行程式,用例示的輸出資料檢驗輸出結果,直到結果相同。

三、 c程式設計時常犯的錯誤。

1.書寫識別符號時,忽略了大小寫字母的區別。

main()

編譯程式把a和a認為是兩個不同的變數名,而顯示出錯資訊。c認為大寫字母和小寫字母是兩個不同的字元。習慣上,符號常量名用大寫,變數名用小寫表示,以增加可讀性。

2.忽略了變數的型別,進行了不合法的運算。

main()

%是求餘運算,得到a/b的整餘數。整型變數a和b可以進行求餘運算,而實型變數則不允許進行「求餘」運算。

3.將字元常量與字串常量混淆。

char c; c="a";

在這裡就混淆了字元常量與字串常量,字元常量是由一對單引號括起來的單個字元,字串常量是一對雙引號括起來的字串行。c規定以「\0」作字串結束標誌,它是由系統自加上的,所以字串「a」實際上包含兩個字元:『a'和『\0',而把它賦給乙個字元變數是不行的。

4.忽略了「=」與「==」的區別。

在許多高階語言中,用「=」符號作為關係運算子「等於」。如在basic程式中可以寫:

if (a=3) then … 但c語言中,「=」是賦值運算子,「==」是關係運算子。如:

if (a==3) a=b; 前者是進行比較,a是否和3相等,後者表示如果a和3相等,把b值賦給a。由於習慣問題,初學者往往會犯這樣的錯誤。

5.忘記加分號。

分號是c語句中不可缺少的一部分,語句末尾必須有分號。

a=1b=2編譯時,編譯程式在「a=1」後面沒發現分號,就把下一行「b=2」也作為上一行語句的一部分,這就會出現語法錯誤。改錯時,有時在被指出有錯的一行中未發現錯誤,就需要看一下上一行是否漏掉了分號。

{ z=x+y;

t=z/100;

printf("%f",t);

二級C語言程式設計題總結 程式設計方法

新視野教育二級c語言程式設計題 方法和技巧總結 a.程式設計題中涉及 簡單的數學計算 的相關題目 28 2 18 老版本 第70題 b.程式設計題第28題的操作過程 1 題目 計算pi的值 要求滿足精度0.0005,即某項小於0.0005時停止迭代 2 分析 該題用最新的方法做題,非常方便,只要記住...

C語言二級上機考試程式設計題答案

1 求1 2 3 100。迴圈 答案 include void main 2 求1 2 3 10。迴圈 答案void main printf d j return 0 3 輸入三個數字,輸出他們的最大值。if 答案 include void main int max int x,int y,int ...

C語言程式設計題

第一題 將兩個兩位數a,b合併成為乙個四位數,合併規則為 a的十位數作為新數的千位,b的十位數做百位,a的個位做十位,b的個位做個位。a,b從鍵盤輸入,例如輸入23,45,則輸出2435。第二題 從鍵盤輸入乙個雙精度數,保留其小數點後兩位,對第三位進行四捨五入,例如輸入12.3456,則輸出12.3...