第二章 迴圈結構程式設計

2022-05-20 21:13:48 字數 3186 閱讀 5575

<1>: for語句[for(初始化;條件;調整) ]執行時先完成賦值操作,判斷滿足條件後執行迴圈體,之後的每次執行都是先完成調整操作,判斷滿足條件後繼續執行迴圈體,不滿足條件就退出迴圈。

1 #include 3 #include 4

using

namespace

std;56

intmain()712

//程式無輸出內容

<2>: 判斷乙個數是否為完全平方數

利用恒等式1+3+5+7+···+2*n-1=n*n;

1 #include 2 #include 3

using

namespace

std;

4bool issqrt(int

n);5

6int

main()

714 printf("

isn't sqrt\n");

15}16return0;

17}18bool issqrt(int

n)

<3>: floor函式:其功能是「向下取整」,或者說「向下捨入」,即取不大於x的最大整數(與「四捨五入」不同,下取整是直接取按照數軸上最接近要求值的左邊值,即不大於要求值的最大的那個值。

1 #include 2 #include 3 #include 4

using

namespace

std;56

intmain()

7//程式輸出為3.0

//double floor(double n);

//floor()函式標頭檔案為#include

<4>: 浮點數運算可能存在誤差,浮點數比較時要考慮到浮點誤差。

1 #include 2 #include 3 #include 4

using

namespace

std;

5bool issqrt(int

n);6

7int

main()

815 printf("

isn't sqrt\n");

16}17return0;

18}19bool issqrt(int

n)

<5>: while語句和do-while語句用法相同,唯一的區別是while先判斷條件是否成立,成立即開始迴圈,do-while則是先做一次再判斷是否成立,隨後便和while一樣運作。

可以利用do-while的這一特性解決一些特殊的問題(迴圈終止判斷在計算之後的情況很適用於do-while語句)。

例如求integer的位數:

1 #include 2 #include 3

using

namespace

std;45

intmain()

6while(n);//do-while語句

避免了需要考慮n==0的情況

14 printf("

%d\n

",cnt);15}

16return0;

17 }

<6>: int_32, int_64, uint_32,uint_64(c語言資料型別)

c99規定int至少是16位,卻沒有具體的值,所以c99規定了以上資料型別,演算法競賽平台一般相對穩點,int為32位數。

1 #include 2 #include 3

using

namespace

std;45

intmain()

6

<7>: c語言中long long int 在linux下輸入格式為%lld,在windows下輸入為%i64d。

<8>: 函式clock()返回程式目前為止的執行時間,這個時間除以常數clocks_per_sec之後得到的值以秒為單位。

1 #include 2 #include 3 #include 4

using

namespace

std;56

intmain()

7

<10>: scanf函式在遇到空格,回車換行時會自動結束。

<11>: c語言檔案讀寫。

函式名:freopen 

宣告:file *freopen( const char *path, const char *mode, file *stream ); 

所在檔案: #include引數說明:

path: 檔名,用於儲存輸入輸出的自定義檔名。

mode: 檔案開啟的模式。和fopen中的模式(如r-唯讀, w-寫)相同。

stream: 乙個檔案,通常使用標準流檔案。

返回值:成功則返回乙個path所指定檔案的指標;失敗返回null。(一般可以不使用它的返回值)

功能:實現重定向,把預定義的標準流檔案定向到由path指定的檔案中。標準流檔案具體是指stdin、stdout和stderr。其中stdin是標準輸入流,預設為鍵盤;stdout是標準輸出流,預設為螢幕;

stderr是標準錯誤流,一般把螢幕設為預設。

1 #include 2 #include 3

using

namespace

std;45

intmain()

6

//重定向使用完畢後記得要取消重定向

習題2-5 分數化小數

思路:分步輸出

1 #include 2 #include 3

using

namespace

std;45

intmain()

615 a*=10

;16 printf("

%d\n

",a/b>5?(a/b+1):(a/b));17}

18return0;

19 }

習題2-6 排列

簡單將每一位初始化為1,最後將各位相加結果為9即輸出。

1 #include 2 #include 3 #include 4

using

namespace

std;56

intmain()728

return0;

29 }

第二章 迴圈結構程式設計(二)

關於取末或前幾位數 取末6位 6個0,取最末 1個0.例如 121 1212 1000,23 123 100,3 23 10。的想法 你取幾位數,它從後到前數幾個數。模擬可得 的用法。三角 要計算只包含加法,減法和乘法的整數表示式除以正整數n的餘數,可以在每步計算之後對n取餘,結果不變。includ...

第二章 迴圈結構程式設計(二)

浮點數的陷阱 陷阱1 cpp view plain copy double i for i 0 i 10 i 0.1 printf 1lf n i 程式會列印至10.0時結束迴圈嗎?不會。因為i永遠也不可能等於10,這是個無限迴圈 陷阱2 cpp view plain copy if 0.1 0.1...

《程式設計珠璣》第二章 迴圈移位

問題 將乙個n維向量向左迴圈移位m位。如向量0,1,2,3,4,5,6,7,8,9向左迴圈移位3位,結果是3,4,5,6,7,8,9,0,1,2。方法1 每次迴圈移位1位,執行m次。輔助空間1,時間複雜度o n m 方法2 用m維的輔助空間暫存前m個元素,對剩下的n m個元素進行移位,最後將m個元素...