新四季網

c語言知識點總結完整版(C語言學習筆記系列)

2023-04-21 11:26:33 1

第五章學習極少了表達式以及運算符,淺嘗使用了一次循環(while)。寫完之後發現閱讀量不高,找下自己原因可能是有點過於囉嗦了吧。

那第六章就直接開始啦!正式進入到學習循環階段。C語言中循環只有三種——for、while、do while,還是比較好記住的,但是用法需要注意。

學習參考書籍《C Primer Plus》

1,While循環

在第五章的時候已經簡單介紹和使用了While循環,下邊程序做了一個求和運算(整型運算),結束循環使用的是利用scanf的返回值來結束循環。

#include int main(void){ long num; long sum = 0L; //首先聲明sum初始值設置為0,此處使用了long類型(0L) int status; printf("Please enter an integer to be summed "); printf("(q to quit): "); status = scanf("%ld", &num); while (status == 1) //使用了==運算符號,這個是真的等於號。 { sum = sum num; printf("Please enter next integer (q to quit): "); status = scanf("%ld", &num); } printf("Those integers sum to %ld.\n", sum); return 0;}

上述程序中使用了==符號,在之前篇章中強調了很多次關於「=」是賦值的意思。其次在使用sum聲明類型中使用long類型是為了存儲更大的整數,所以將sum初始化為0L(long類型的0),而不是0(int類型的0)。程序結果如下:

Please enter an integer to be summed (q to quit): 44Please enter next integer (q to quit): 336Please enter next integer (q to quit): qThose integers sum to 435.

這個循環程序是根據測試條件status ==1,只要status等於1,循環就會重複。每次循環,num的當前值都被加到sum上,這樣sum的值始終是當前整數之和。當status的值不為1時,循環結束。這個程序有意思的就在於status的值是怎麼變化的:

1,如果scanf成功讀取一個整數,就把該數存入num並返回1,隨後返回值將被賦給status(注意,用戶輸入的值存儲在num中,不是status中)。這樣做同時更新了num和status的值,while循環進入下一次迭代。

2,如果用戶輸入的不是數字(如,q或者任何其他字符),scanf會讀取失敗並返回0。此時,status的值就是0,循環結束。

上述方式比較費腦子,其實有簡單的辦法退出循環也就是在循環中添加代碼,例如每次循環時詢問用戶「是否繼續循環?」,然後判斷用戶是否輸入y。這個辦法雖然有點蠢,但Linux以及很多網絡設備中仍然使用這種方法選擇是否進入下一步。

自製流程圖

因此總結來看while循環是入口條件循環,程序在進入循環體之前必須獲取輸入的數據並檢查status的值(作為一種條件),所以在while前面要有一個輸入並且不一定是scanf。要讓循環繼續執行,在循環內需要一個讀取數據的語句,這樣程序才能獲取下一個條件的值。

1.1,終止循環(while)

while循環有一點非常重要:在構建while循環時,必須讓測試表達式的值有變化。否則,循環就不會終止(會讓程序一直循環下去直到計算機卡死)。

1.2,入口條件循環

在1.2中總結描述了while需要入口在才能進行循環操作,也就是所謂「有條件」指的是語句部分的執行取決於測試表達式描述的條件,如(a < 6)。所以在日常使用中可以使用C語言中的運算關係來進行使用條件(類似大於、小於、等於、不等於、不大於等於等等)。

2,for循環

for循環與while循環中的三個行為寫在了一起;

for (size_t i = 0; i < count; i )

for循環的第1行包含了循環所需的所有信息:i的初值,i的終值(循環的出口條件)和每次循環i的增量。

用下邊的程序來舉例讓大家更簡單認識for循環:

#include int main(void){ int i; for (i = 0; i < 11; i ) printf("%d seconds!\n", i); return 0;}

下面程序的運行結果:

輸出結果

這個程序每次對i進行累加,累加到10後退出for循環。

當然for的寫法還有很多,比如下面的寫法:

#include int main(void){ int x; int y = 0; for (x = 0; y <= 75; y = ( x * 5) 50) printf("d d\n", x, y); return 0;}

該循環列印x的值和表達式 x * 5 50的值,程序的輸出如下:

輸出結果

所以for語言的寫法相對簡便,for語句是一種入口條件循環,即在執行循環之前就決定了是否執行循環。

3,do while循環

while循環和for循環都是入口條件循環,即在循環的每次迭代之前檢查測試條件,所以有可能根本不執行循環體中的內容。C語言還有一種條件循環,即在循環的每次迭代之後檢查測試條件,至少執行循環體中的內容一次。

這種循環被稱為do while循環,通用的表達式為以下公式:

do   statementwhile ( expression );

do while循環在執行完循環體後才執行測試條件,所以至少執行循環體一次;而for循環或while循環都是在執行循環體之前先執行測試條件。do while循環適用於那些至少要迭代一次的循環。

4,選擇一個適用的循環

首先,確定是需要入口條件循環還是出口條件循環。通常,入口條件循環用得比較多,有幾個原因。其一,一般原則是在執行循環之前測試條件比較好。其二,測試放在循環的開頭,程序的可讀性更高。另外,在許多應用中,要求在一開始不滿足測試條件時就直接跳過整個循環。

這就是為什麼需要在講do while時候用的篇幅較小,主要講解for和while。

一般而言,當循環涉及初始化和更新變量時,用for循環比較合適,而在其他情況下用while循環更好。對於下面這種條件,用while循環就很合適:

while (scanf("%ld", &num) == 4)

對於涉及索引計數的循環,用for循環更適合。例如:

for (count = 0; count <= 200; count )

所以個人建議是while與for學號走遍天下!

5,總結

本章主要是講解循環的知識內容,本來打算適用兩章來講,但想了一下不要寫得過於分散,增加學習閱讀體驗。在C語言中使用循環特別注意的三點內容:

注意循環的測試條件要能使循環結束。

確保循環測試中的值在首次使用之前已初始化。

確保循環在每次迭代都更新測試的值。

時間精力有限,儘量提升閱讀體驗吧,發現想寫的簡單,但是又覺得寫的簡單了又不好讓讀者讀懂。如有不足或有疑問歡迎各位大佬們指正,同時也希望非IT專業的小白們能感受到C語言的魅力所在。如果對你有幫助的話點讚收藏哦!嘿嘿

[1] 《C Primer Plus》

,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了