C語言筆記03_while嵌套循環(huán)

C語言 筆記03

本章涉及《啊哈C》第三章晨缴、第四章

名稱 作用 名稱 作用
+ >= 大于等于
- <= 小于等于
* != 不等于
/ &&
> 大于 (看注釋)
< 小于 !
== 等于

1.運(yùn)算符總結(jié)

名稱 作用 名稱 作用
+ >= 大于等于
- <= 小于等于
* != 不等于
/ &&
> 大于 (看注釋)
< 小于 !
== 等于

其中“或”的符號(hào)是“||”。

2.1>2究竟對(duì)不對(duì)



3.討厭的嵌套

書本中的部分內(nèi)容這里不提了峡捡,就是關(guān)于縮進(jìn)嵌套的內(nèi)容击碗,主需要注意下面2個(gè)問題即可。

4.永不停止的while
怎么讓計(jì)算機(jī)輸出1000個(gè)“Hello World”们拙,寫1000個(gè)print嗎稍途?太笨了吧!
這里我們介紹while睛竣,代碼如下:

while(1>0)
{
    printf("Hello World");
}

這樣電腦就能無限打印"Hello World"

5.我說幾遍就幾遍

int a;
a = 1;
while(a<=100)
{
    printf("Hello World");
    a = a + 1;
}

這樣就會(huì)打印100個(gè)“Hello World”晰房。

6.if 對(duì) while 說:我對(duì)你很重要
7.求和求摇、求和
8.邏輯挑戰(zhàn)4:60秒倒計(jì)時(shí)開始
我們要設(shè)計(jì)一個(gè)60秒倒計(jì)時(shí)射沟,先設(shè)計(jì)一個(gè)3秒倒計(jì)時(shí)。





9.這個(gè)有點(diǎn)暈——循環(huán)嵌套來了

現(xiàn)在我們想嘗試打印出下面圖形:

*****
*****
*****

改怎么辦呢与境?

法一:

printf("*****\n");
printf("*****\n");
printf("*****\n");

上面的寫法當(dāng)然可以验夯,但是如果我們要輸出100行甚至更多的情況下,則不適合了摔刁。所以我們利用while循環(huán)改進(jìn):

法二:while + if

int a;
a=1;
while(a<=15)
{
    printf("*");
    if (a%5 == 0)
        printf("\n");
    a = a+1;
}

這段代碼就是循環(huán)打印 星號(hào) 15次(涉及while語句)挥转,并且當(dāng)打印到第5 10 15 個(gè)時(shí)就換行(涉及if語句)。

當(dāng)然還有別的辦法:循環(huán)嵌套

法三:while循環(huán)嵌套(while + while)

首先用一個(gè)外循環(huán)循環(huán)a解決換行的問題:

int a;
a=1;
while (a<=3)
{
    printf("\n");
    a=a+1;
}

然后再用一個(gè)內(nèi)循環(huán)循環(huán)b解決星號(hào)問題:

int a,b;
a=1;
while (a<=3)     // 控制換行
{
    b=1;
    while (b<=5)   //控制每行5個(gè)星號(hào)
    {
        printf("*")
        b=b+1;
    }
    printf("\n");
    a=a+1;
}

外循環(huán)每循環(huán)一次共屈,內(nèi)循環(huán)就會(huì)從頭到尾循環(huán)一遍绑谣。


現(xiàn)在,如果我們想要輸出下面的圖形怎么辦:

*
**
***
****
*****

我們同樣可以用嵌套的方法:
外嵌套a實(shí)現(xiàn)換行:

int a;
a = 1;
while (a<=5)
{
    printf("\n");
    a=a+1
}

內(nèi)嵌套b實(shí)現(xiàn)打印星號(hào):把b<=5改成b<=a即可拗引。

int a,b;
a = 1;
while (a<=5)
{
    b = 1;
    while (b <= a)
    {
        printf("*");
        b = b+1;
    }
    printf("\n");
    a=a+1;
}

10.邏輯挑戰(zhàn)5:奔跑的字母

顯然借宵,除了printf中的內(nèi)容不容,三個(gè)部分的內(nèi)容都一樣矾削,所以可以考慮使用while嵌套循環(huán):

打印順序?yàn)椋?/h3>
  1. 打印“H”壤玫;
  2. 打印“空格”+“H”豁护;
  3. 打印“空格”+“空格”+“H”。

顯然欲间,不管加不加“空格”楚里,3次“H”是肯定會(huì)打印的,所以我們用外循環(huán)a實(shí)現(xiàn)打印3次H:

int a ;
a = 1;
while (a<=3)
{
    system("cls");   // 清屏
    printf("H");     
    Sleep(1000);     // 使 H 暫停一秒
    a = a+1;        
}

再用循環(huán)b實(shí)現(xiàn)打印第n次時(shí)猎贴,就在打印“H”前先打印(n-1)個(gè)“空格”:

int a,b ;
a = 1;
while (a<=3)
{
    system("cls");   // 清屏
    b = 1;
    while (a>b)
    {
        printf(" ");
        b = b+1;
    }
    printf("H");     
    Sleep(1000);     // 使 H 暫停一秒
    a = a+1;         
}

效果:

11.究竟循環(huán)了多少次
12.邏輯挑戰(zhàn)6:奔跑的小人
如果我們將要第10節(jié)內(nèi)容中的“H”換成一個(gè)行走的小人:

 O
<H>
I I

怎么辦呢班缎?
我們首先會(huì)把

printf("H")

替換成:

printf(" O\n");
printf("<H>\n");
printf("I I\n");

效果如下:

顯然,只有腦袋在移動(dòng)嘱能!沒有達(dá)到我們的目的吝梅。
為什么呢?因?yàn)槲覀兗拥哪切┛崭裰患釉诹?" O\n"前面惹骂,所以要想整體移動(dòng)苏携,還得在其余部分也加上空格代碼:

效果圖

13.for隆重登場(chǎng)

回顧之前我們用while語句來輸出1到10:

int a ;
a = 1;
while (a<=10)
{
    printf("%d",a);
    a = a+1;
}

這個(gè)while循環(huán)由三個(gè)部分組成:

  1. 設(shè)置初始值 a = 1;
  2. 設(shè)置循環(huán)條件 a<=10;
  3. a每次增加1 a = a+1;

其中第1和第3是我們?nèi)菀走z漏的部分,如果我們不小心遺漏的話這個(gè)while循環(huán)就運(yùn)行不了了对粪。
為了規(guī)避這種情況右冻,我們就可以使用for循環(huán):

int a;
for(a=1;a<=10;a=++)  // a = a+1 可寫成 a = a++
{
    printf("%d",a);
}

我們可以把while循環(huán)的三個(gè)部分都放進(jìn)for循環(huán)的括號(hào)中!是不是很方便著拭!

注意:for循環(huán)括號(hào)中只有2個(gè)分號(hào)纱扭,最后一個(gè)部分后面不用加。

用for循環(huán)輸出1~100中能所有7的倍數(shù)或者末尾含7的數(shù)儡遮,代碼如下:

int a;
for(a=1;a<=100;a=a++)
{
    if(a%7==0 || a%10==7)
        printf("%d",a);
}

是不是很簡(jiǎn)便乳蛾?那么是不是for循環(huán)就一定比while循環(huán)好呢?
不是的鄙币,其實(shí)在控制已知循環(huán)次數(shù)時(shí)肃叶,比如100次1000次,for循環(huán)確實(shí)比while循環(huán)好用十嘿。
但是因惭,并不是任何情況下for循環(huán)都要優(yōu)于while循環(huán),隨著慢慢深入绩衷,你會(huì)了解什么時(shí)候用while蹦魔,什么時(shí)候用for。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末咳燕,一起剝皮案震驚了整個(gè)濱河市勿决,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌招盲,老刑警劉巖低缩,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異宪肖,居然都是意外死亡表制,警方通過查閱死者的電腦和手機(jī)健爬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來么介,“玉大人娜遵,你說我怎么就攤上這事∪蓝蹋” “怎么了设拟?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)久脯。 經(jīng)常有香客問我纳胧,道長(zhǎng),這世上最難降的妖魔是什么帘撰? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任跑慕,我火速辦了婚禮,結(jié)果婚禮上摧找,老公的妹妹穿的比我還像新娘核行。我一直安慰自己,他們只是感情好蹬耘,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布芝雪。 她就那樣靜靜地躺著,像睡著了一般综苔。 火紅的嫁衣襯著肌膚如雪惩系。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天如筛,我揣著相機(jī)與錄音堡牡,去河邊找鬼。 笑死妙黍,一個(gè)胖子當(dāng)著我的面吹牛悴侵,可吹牛的內(nèi)容都是我干的瞧剖。 我是一名探鬼主播拭嫁,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼抓于!你這毒婦竟也來了做粤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤捉撮,失蹤者是張志新(化名)和其女友劉穎怕品,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體巾遭,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肉康,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年闯估,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吼和。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涨薪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出炫乓,到底是詐尸還是另有隱情刚夺,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布末捣,位于F島的核電站侠姑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏箩做。R本人自食惡果不足惜莽红,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望邦邦。 院中可真熱鬧船老,春花似錦、人聲如沸圃酵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽郭赐。三九已至薪韩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捌锭,已是汗流浹背俘陷。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留观谦,地道東北人拉盾。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像豁状,于是被迫代替她去往敵國(guó)和親捉偏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容