程式設計總結2(12.9)
第六章迴圈控制結構
一、知識
1.條件控制的迴圈(特別地:標誌變數控制的迴圈)
計數控制的迴圈
2.用於結構化程式設計的三種基本結構
①順序結構 ②選擇結構 ③迴圈結構
其中迴圈結構分為當型迴圈結構和直到型迴圈結構
3.for語句:
更適合於計數控制的迴圈
*需要注意兩個分隔符";"不可缺少
for( ; ; )後加上分號,起延時的作用
逗號表示式:
4.while語句:
更適合於迴圈次數未知、條件控制的迴圈
*注意while( )後加上分號可導致死迴圈
while中的計數變數控制要注意是i++還是++i;
特別注意需要用while解決的問題很多需要反著找(逆向思維)
5.do-while語句:直到型迴圈
在迴圈底部進行迴圈條件測試,迴圈至少執行一次。(這說明在第一次判斷為假的情況下do-while與while不等價)
適合於迴圈次數未知、條件控制的迴圈
6.區域性變數與複合語句
區域性變數在迴圈語句中定義的變數,只能在迴圈語句中使用,一般在迴圈內賦值或緊靠迴圈賦值
迴圈中常用複合語句來執行多個工作
7.一些新學的函式:
setw():cout<<setw(x)<<a<<endl;在cpp的<iomanip>中
//其中的setw(x)的作用是控制輸出的a的寬度為x//
puts
floor()/ceil():向下取整和向上取整<math.h>中
exit(code):結束程式:當code的值為0時,表示程式正常退出;當code的值為非0值時,表示程式出現某種錯誤後退出/在cpp的<cstdlib>中
rand( ):偽隨機數生成(具體為啥是假的我現在都沒搞懂233),產生[0,32767]之間的隨機數 在cpp的<csdlib>中
產生[0,b-1]之間的隨機數 magic=rand( )%b;
產生[a,a+b-1]之間的隨機數 magic=rand( )%b+a;
真正隨機需要設個種子需要加一條srand(a);a即是seed,任何數都可以
8.多組測試資料
有效輸入重複,無效輸入退出
while(scanf("%d",&x)!=EOF)
while(scanf("%d",&x)!=1)//注意這裡是不等於輸入的變數個數//
while(cin>>x)
上述的三條語句中內涵了輸入語句,不需要在迴圈體中再寫入
9.流程的轉移控制
①goto語句:無條件轉移到標號(label)所標識的語句處去執行
1 Label命名同變數名2 goto一般和if聯用3沒有特殊情況禁用
②break語句:用於退出switch或一層迴圈結構
(連跳可用goto)
③continue語句:用於結束本次迴圈、繼續執行下一次循環
10.標誌變數控制的迴圈
eg.
bool find=0;
for(i=1;!find;i++)
{
if(...){...;find=1;}//找到了//
}
二、應用
累加累乘問題/找最大最小
篩選同類/特殊資料並進行一定操作(eg.求一個整數含3的個數)
迴圈結構是解決遞迴,遞推問題的主要手段之一(特別是需要暴力的時候)