C語言流程控制??

  • 版權(quán)聲明:本文為博主原創(chuàng)文章康辑,未經(jīng)博主允許不得轉(zhuǎn)載咸灿。

一、流程控制結(jié)構(gòu)

(1)順序結(jié)構(gòu):按書寫順序執(zhí)行每一條語句丛塌。

(2)選擇結(jié)構(gòu):對給定的條件進行判斷,根據(jù)判斷結(jié)果決定執(zhí)行哪一段代碼畜疾。

(3)循環(huán)結(jié)構(gòu):在給定條件成立的情況下赴邻,反復(fù)執(zhí)行某一段代碼。

二庸疾、選擇結(jié)構(gòu)-if

(一)if簡單使用

  • (1) 第一種結(jié)構(gòu):
a) 如果條件為真乍楚,就執(zhí)行后面的語句,否則不執(zhí)行届慈。

if(條件)

{

語句1徒溪;

語句2忿偷;

····

}```

- (2) 第二種結(jié)構(gòu):

a) 如果條件成立就執(zhí)行語句1,否則執(zhí)行語句2臊泌。

if(條件)

{

語句1鲤桥;

}

else

{

語句2;

}```

  • (3) 第三種結(jié)構(gòu):
a) 先判斷條件1渠概,若成立則執(zhí)行語句1茶凳,其它不執(zhí)行;若條件1不成立播揪,則檢查條件2···贮喧,【注意】如果條件3成立,則說明前面的都不成立猪狈。所有的語句塊只有一個會被執(zhí)行箱沦。

if(條件1)

{

語句1;

}

else if(條件2)

{

語句2雇庙;

}

else (條件3)

{

語句3谓形;

}```

- (4) 第四種結(jié)構(gòu):

a) 在這種情況下,當條件成立疆前,只執(zhí)行語句1寒跳,語句2不屬于次條件結(jié)構(gòu),但不推薦此種寫法竹椒。

If(條件)

語句1童太;

語句2;```

(二)if使用注意

①. 比較大小時胸完,可以把常量值放在左邊康愤,變量值放在右邊以避免錯誤。因為if(a==0)也容易被寫成if(a=0),而這種情況舶吗,編譯器并不會報錯,推薦使用if(0==a)這種寫法择膝。

②. 注意賦值運算符誓琼,不要把=寫成是==。

③. If(條件)后面不要加分號肴捉,這代表是一個空語句腹侣,后面的代碼塊將成為一個獨立的代碼塊。如if(條件)齿穗;{.....}//需要多加注意

④. 注意作用域的問題傲隶,如果要在if后面定義新的變量,則一定要使用大括號窃页。

if(10>6)

{

Int a;//a的作用域在代碼塊結(jié)束后失效

}

Printf(“a=%d”,a);//編譯器報錯跺株,找不到標識符

 

if(10>6)

Int a; //這種情況下報錯复濒,a的作用域不明確

Printf(“a=%d”,a); //編譯器報錯,找不到標識符

 

⑤. If(0){...}隨便挑一個數(shù)值也可以做條件```

>(三)if結(jié)構(gòu)練習(xí)

>問題:輸入一個整數(shù)seore代表分數(shù)乒省,根據(jù)分數(shù)輸出等級(A-E)巧颈。

>A 90-100  B80-89 C70-79 D60-69 E0-60

代碼:

include<stdio.h>

int main()
{

//定義變量存儲分數(shù)值

int score;

//提示輸入

printf("請輸入分值:\n");

//接受輸入

scanf("%d",&score);

//判斷等級

if(score>=90&&score<=100)
{
printf("A\n");
}
else if(score>=80)
{
printf("B\n");
}
else if(score>=70)
{
printf("C\n");
}
else if(score>=60)
{
printf("D\n");
}
else
{
printf("E\n");
}
return 0;
}```

三、選擇結(jié)構(gòu)-switch

  • (一)switch結(jié)構(gòu)
switch(值) //通常是變量
{

  case 數(shù)值1:

  語句1袖扛;

  break;

  case 數(shù)值2:

  語句2砸泛;

  break;

  case 數(shù)值3:

  語句3;

  break;

  default :

  語句4蛆封;

  break;

}```

>######解說:該結(jié)構(gòu)把數(shù)值與數(shù)值1進行比較唇礁,若相等,則執(zhí)行后面的所有語句惨篱,直到遇見break語句跳出整個循環(huán)盏筐,若前面的條件都不滿足,則最終會執(zhí)行default后面的語句妒蛇。如果不寫break語句机断,則后面的語句會接連執(zhí)行,直到遇到break語句或者是全部語句執(zhí)行完畢绣夺,只要前面的條件成立吏奸,則后面的判斷就直接被忽略。


####(二)Switch使用注意

char c=‘A’;

switch(c)
{
case ‘A’:

語句1陶耍;

break;

case 65://不能這樣寫奋蔚,因為‘A’的ASCII值就是65,會報錯

語句2烈钞;

break;

case 數(shù)值3:

int a=10;

//a的作用域不明確報錯泊碑,c語言檢查變量的作用域根據(jù){}決定,這里可以加{}

break;

default :

語句4毯欣;

break;

}```

注意:如果要在case后面的語句中定義變量馒过,則必須使用大括號包住。

(三)switch結(jié)構(gòu)練習(xí)

問題:輸入一個整數(shù)seore代表分數(shù)酗钞,根據(jù)分數(shù)輸出等級(A-E)腹忽。

A 90-100 B80-89 C70-79 D60-69 E0-60

代碼:
#include<stdio.h>

int main()
{

  //定義變量存儲分數(shù)值

  int score;

  //提示輸入

  printf("請輸入分值:\n");

  //接受輸入

  scanf("%d",&score);

  //判斷等級

  switch(score/10)
  {

    case 10:

    case 9:

    printf("A\n");

    case 8:

    printf("B\n");

    break;

    case 7:

    printf("C\n");

    break;

    case 6:

    printf("D\n");

    break;

    default:

    printf("E\n");

    break;

  }

return 0;
}```

######【對比】if與switch:

>1. If語句能夠完成的功能,switch有時并不能夠完成砚作,如判斷if(a>100)

>2. 在有些情況下窘奏,if語句和switch語句可以互換

>3. Switch語句能完成的功能,if語句都可以完成


####四葫录、循環(huán)結(jié)構(gòu)-while

- (一)簡單使用

while(條件)
{
語句着裹;
}```

解說:先判斷條件是否成立,成立則執(zhí)行米同,執(zhí)行完代碼后再次判斷條件是否成立(判斷條件-》執(zhí)行代碼塊-》判斷條件-》執(zhí)行代碼塊···)1.首先確定循環(huán)執(zhí)行的操作骇扇,2.在確定約束條件摔竿,即需要循環(huán)多少次,3.定義一個變量來記錄循環(huán)的次數(shù)匠题。

  • 提示:在while循環(huán)體內(nèi)使用if...break(跳出整個循環(huán))或if...continue語句(跳出本次循環(huán)拯坟,繼續(xù)下一次循環(huán)判斷)。

  • while結(jié)構(gòu)的運行原理:

①. 如果一開始條件不成立韭山,則永遠不會執(zhí)行循環(huán)體郁季。

②. 如果條件成立,則執(zhí)行一次循環(huán)體钱磅,執(zhí)行完畢后再次判斷條件是否成立梦裂。

③. break:直接退出整個循環(huán)。

④. continue:結(jié)束當前循環(huán)體盖淡,進行下一輪循環(huán)判斷年柠。

  • (二)使用注意
  1. while(1){.....}是一個死循環(huán)
  1. while(a<10);{...}在條件后面加逗號表示循環(huán)體是一個空語句褪迟,而非{}部分
  1. while條件語句后推薦使用{}冗恨,否則只有第一條語句時循環(huán)體
  1. 最簡單的死循環(huán) while(1);//永遠執(zhí)行空語句,讓程序崩潰
  • (三)while練習(xí)

問題:編程實現(xiàn)味赃,提示輸入一個正整數(shù)n掀抹,計算1+2+3+...n的值。

代碼:

#include<stdio.h>

int main()
{

  //定義變量保存用戶輸入的整數(shù)

  int n;

  while(n<=0)
  {

    //提示輸入

    printf("請輸入一個正整數(shù):\n");

    //接受輸入

    scanf("%d",&n);

  }

  int sum=0;

  int number=0;//默認被加的數(shù)值

  while(number<n)
  {

    number++;

    sum=sum+number;
  }

  printf("計算結(jié)果為:%d\n",sum);

  return 0;

}```


####五心俗、循環(huán)結(jié)構(gòu)-do while

do
{
語句
}while(條件)```

特點:do while循環(huán)至少會執(zhí)行一次循環(huán)體

六傲武、循環(huán)結(jié)構(gòu)-for

  • (一)基本使用
for(語句1,條件城榛,語句2)
{

  //循環(huán)體
}```

>語句1:一般為初始化語句

>語句2:一般為增量語句(執(zhí)行完循環(huán)體后再執(zhí)行的語句)

- for循環(huán)原理:

  1. for循環(huán)一開始就會執(zhí)行語句1(整個for循環(huán)只會執(zhí)行一次)

  2. 判斷條件是否成立揪利,若成立,則執(zhí)行一次循環(huán)體狠持,然后執(zhí)行語句2疟位,再次判斷條件是否成立,若條件不成立則結(jié)束循環(huán)

  3. 順序為:(語句1-》判斷條件-》循環(huán)體—》語句2-》判斷條件-》循環(huán)體···)```

【對比】for和while:

在性能上喘垂,for循環(huán)稍勝一籌献汗,因為while循環(huán)只能使用外部的變量,而for循環(huán)可以對變量進行及時回收王污。

  • (二)for使用注意

①. 不要隨便在for語句后面寫上分號,如for()楚午;{....}

②. 定義變量的作用域不明確錯誤
for(int i=0;i<5;i++)
int a=10; //編譯器報錯昭齐,變量作用域不明確

③. For語句中最簡單的死循環(huán)for(;;);

④. 需要注意變量定義的作用域

int a=10;

for(int i=0,int a=9;i<5;i++)
{

  int a=10;

  printf(“a=%d\n”,a)矾柜;//這里打印的a的值是多少阱驾?
}```

 

- (三)for循環(huán)嵌套

>用以輸出特定格式的內(nèi)容就谜,如QQ好友列表等,提升可擴展性。

for(in i=0;i<5;i++)
{

//外面的循環(huán)控制行數(shù)

printf(“好友列表%d\n”,i);

//內(nèi)部的循環(huán)控制列數(shù)

for(int j=1;j<=6;j++)
{

printf(“好友%d\n”,j);

}

}```

  • (四)for練習(xí)

使用for循環(huán)輸出九九乘法表里覆。//先控制行數(shù)丧荐,在控制列數(shù)

代碼:

#include<stdio.h>

int main()
{
  for(int i=1;i<=9;i++)
  {
    for(int j=1;j<=i;j++)
    {
      printf("%d*%d=%d\t",i,j,i*j);
    }
    printf("\n");
  }
  return 0;
}```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市喧枷,隨后出現(xiàn)的幾起案子虹统,更是在濱河造成了極大的恐慌,老刑警劉巖隧甚,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件车荔,死亡現(xiàn)場離奇詭異,居然都是意外死亡戚扳,警方通過查閱死者的電腦和手機忧便,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來帽借,“玉大人珠增,你說我怎么就攤上這事】嘲” “怎么了蒂教?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長辐董。 經(jīng)常有香客問我悴品,道長,這世上最難降的妖魔是什么简烘? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任苔严,我火速辦了婚禮,結(jié)果婚禮上孤澎,老公的妹妹穿的比我還像新娘届氢。我一直安慰自己,他們只是感情好覆旭,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布退子。 她就那樣靜靜地躺著,像睡著了一般型将。 火紅的嫁衣襯著肌膚如雪寂祥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天七兜,我揣著相機與錄音丸凭,去河邊找鬼。 笑死,一個胖子當著我的面吹牛惜犀,可吹牛的內(nèi)容都是我干的铛碑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼虽界,長吁一口氣:“原來是場噩夢啊……” “哼汽烦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起莉御,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤撇吞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后颈将,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梢夯,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年晴圾,在試婚紗的時候發(fā)現(xiàn)自己被綠了颂砸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡死姚,死狀恐怖人乓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情都毒,我是刑警寧澤色罚,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站账劲,受9級特大地震影響戳护,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瀑焦,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一腌且、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧榛瓮,春花似錦铺董、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至粹懒,卻和暖如春重付,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凫乖。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工堪夭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留愕把,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓森爽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嚣镜。 傳聞我的和親對象是個殘疾皇子爬迟,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

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

  • Swift 提供了類似 C 語言的流程控制結(jié)構(gòu),包括可以多次執(zhí)行任務(wù)的for和while循環(huán)菊匿,基于特定條件選擇執(zhí)行...
    窮人家的孩紙閱讀 701評論 1 1
  • 不管是芝士蛋糕付呕、巧克力慕斯、泡芙…… 對于炎 (臃)熱 (腫)的夏天 (身材)來說跌捆, 似乎都太重徽职、太難負荷了。 而...
    世界甜品閱讀 537評論 0 1
  • 一個人生氣蓬勃的時候決不問為什么生活潮瓶,只是為生活而生活——為了生活是樁美妙的事而生活。 fro...
    谷雨寫在四月后閱讀 289評論 1 2
  • 少年仗劍天涯夢钙姊,不知年歲遠故園毯辅。 風景依舊人不在,桃花開時幾月天煞额。 塞外江南轉(zhuǎn)身過思恐,心念君兮未曾言。 夜深最是醉難...
    淺月堂前閱讀 210評論 1 2
  • 作業(yè):以別出心裁的風格改寫四大名著中的著名片段膊毁,如“武松打虎”胀莹、“三打白骨精”等。改寫:開始寺廟里有一個和尚A媚媒,他...
    小超人123閱讀 721評論 1 0