編程不是看會的,也不是聽會的,而是練會的,所以儘量在計算機旁閱讀,將書中的代碼輸入到計算機中進行調試,順便做做上機練習。千萬不要圖快,如果沒有足夠的時間來實踐,那麼學得快,忘得也快。
經驗(參加機試之前看一看,不要犯錯):
1、整數值用%d輸出,浮點數用%lf輸出
2、整數/整數=整數,浮點數/浮點數=浮點數
一般來說,只要在程序中用到了數學函數,就需要在程序最開始的地方包含頭文件<cmath>,並在編譯時連接數學庫。
3、scanf中的佔位符和變量的數據類型應一一對應,且每個變量前需要&符號。
4、在算法競賽中,輸入前不要打印提示信息。輸入完畢後應立即終止程序,不要等待用戶按鍵,因爲輸入輸出的過程都是自動的,沒有人工干預。
5、在算法競賽中不要使用頭文件conio.h,包括getch()、clrscr()等函數。
6、在算法競賽中,每行輸出均應以回車符結束,包括最後一行。除非特別說明,每行的行首不應有空格,但行末通常可以有多餘空格。另外,輸出的每兩個數或者字符串間應以單個空格隔開。
7、儘量用const關鍵字聲明常數。
8、賦值是動作,先計算右邊的值,再賦給左邊的變量,覆蓋它原來的值。
9、算法競賽是在比誰能更好地解決問題,而不是在比誰寫的程序看上去更高級。
10、C語言中的邏輯運算符都是短路運算符。一旦能夠確定整個表達式的值,就不再繼續計算。
11、算法競賽的目標是變成對任意輸入均得到正確的結果,而不是僅對樣例數據。
有時,即使通過了題目中給出的樣例,程序仍然可能存在問題。
12、如果有多個並列,情況不交叉的條件需要一一處理,可以用else if語句。
13、可以用花括號把若干條語句組合成一個整體。這些語句仍然按順序執行。
14、在難以一次性求出最後結果時,可以用變量存儲“臨時結果”,從而逐步更新。
對於競賽的一點說明:
1、選手程序的執行時自動完成的,沒有人工干預。不要在用戶輸入之前打印提示信息。
2、不要讓程序“按任意鍵退出”。(例如:system("pause"),或者多加一個getchar())。
簡單的雞兔同籠問題:
//雞兔同籠
#include<iostream>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int y=(m-2*n)/2;
int x=n-y;
if(m%2==1||x<0||y<0)
cout<<"No answer"<<endl;
else{
cout<<x<<" "<<y<<endl;
}
return 0;
}