程式設計總結2(12 9)

2021-09-02 22:01:09 字數 1988 閱讀 5405

第六章迴圈控制結構

一、知識

1.條件控制的迴圈(特別地:標誌變數控制的迴圈)

計數控制的迴圈

2.用於結構化程式設計的三種基本結構

①順序結構 ②選擇結構 ③迴圈結構

其中迴圈結構分為當型迴圈結構和直到型迴圈結構

3.for語句:

更適合於計數控制的迴圈

*需要注意兩個分隔符";"不可缺少

for( ; ; )後加上分號,起延時的作用

逗號表示式:

迴圈變數可以超過乙個eg. for(i=1,j=n;i=j;i++,j- -)      

4.while語句:

更適合於迴圈次數未知、條件控制的迴圈

*注意while( )後加上分號可導致死迴圈

while中的計數變數控制要注意是

i++還是++i;

特別注意需要用while解決的問題很多需要反著找

(逆向思維

)5.do-while語句:直到型迴圈

在迴圈底部進行迴圈條件測試,迴圈至少執行一次。(這說明在第一次判斷為假的情況下do-while與while不等價)

適合於迴圈次數未知、條件控制的迴圈

6.區域性變數與復合語句

區域性變數在迴圈語句中定義的變數,只能在迴圈語句中使用,一般在迴圈內賦值或緊靠迴圈

賦值迴圈中常用復合語句

來執行多個工作7.

一些新學的函式:

setw

():cout《在cpp的中//

其中的setw(x)的作用是控制輸出的a的寬度為x

//puts

():就是

printf(「...\n」) 中f

loor()/ceil()

:向下取整和向上取整

中exit

(code

):結束程式:

當code的值為0時,表示程式正常退出;當code的值為非0值時,表示程式出現某種錯誤後退出

/在cpp的

中rand( )

:偽隨機數

生成(具體為啥是假的我現在都沒搞懂233)

,產生[0,32767]之間的隨機數

在cpp的

中產生[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++)

//找到了//}二、

應用累加

累乘問題

/找最大最小

篩選同類/特殊資料並進行一定操作(eg.求

乙個整數含3的個數

)迴圈結構是解決遞迴

,遞推問題的主要手段之一

(特別是需要暴力的時候

)

fzu Problem 2129 子串行個數

accept 107 submit 334 time limit 2000 msec memory limit 32768 kb problem description 子串行的定義 對於乙個序列a a 1 a 2 a n 則非空序列a a p1 a p2 a pm 為a的乙個子串行,其中1 p1例...

FZU 2129 子串行個數

給乙個序列,裡面可能有相同元素,問能組成多少不同子串行。dp。一直想用dp i 表示到序列a1 ai的答案,一直想不出來,其實有更好的做法。我們可以用dp i 表示最後乙個元素為ai的子串行有多少,sum i 表示dp 1 dp i 的和。狀態轉移見 include include include ...

HZNUOJ2129這是壓軸題

給定兩個數a,b,輸出a b 有t組輸入 對於每組輸入有兩個非負整數a,b 10 210 對於每組資料輸出a b input copy 2 1 1 2 2 output copy 2 4注意此題的資料範圍,所以不可以用int 或者long long int 直接相加 此題要運用到字串來完成相加 將各...