上機程式設計題總結
一、程式設計題的基本演算法
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...