C語言流程控制-----if

循環(huán)結(jié)構(gòu)的種類

  • 順序結(jié)構(gòu)
  • 選擇結(jié)構(gòu)
  • 循環(huán)結(jié)構(gòu)

順序結(jié)構(gòu)

  • 從上到下依次執(zhí)行



選擇結(jié)構(gòu)

if條件循環(huán)
  • 三種格式
    • 第一種格式 if(條件表達(dá)式){語句}
    • 第二種格式 if(條件表達(dá)式){語句}else{語句}
    • 第三種格式 if(條件表達(dá)式){語句}else if(條件表達(dá)式){語句}else{語句}

  • 注意事項(xiàng)
    • if不用寫分號(hào),分號(hào)也是一條語句,是一條空語句
int num = -1;
if(-2 == num);
{
printf("num = %d",num);
}//此時(shí)無論條件是否成立,都會(huì)打印num = -1;
  • if可以省略大括號(hào),省略大括號(hào)后受到控制的是緊隨其后的一條語句

  • {}可以單獨(dú)出現(xiàn),單獨(dú)出現(xiàn)的意義在與封閉括號(hào)內(nèi)變量的作用域(作用域是指變量開始定義的那一行到遇到對(duì)應(yīng)區(qū)間的}或者return為止)

  • if不寫大括號(hào)后,后面不能定義變量,這樣會(huì)導(dǎo)致作用域混亂而報(bào)錯(cuò)

int num = -1;
if(num) 
  int res = num;//報(bào)錯(cuò)
  • 除了if以外,else if 和 else也可以省略大括號(hào),省略大括號(hào)后的特點(diǎn)和if一樣,只控制緊隨其后的一條語句,后面不可以定義變量,另外特別注意不要在if和else if后面寫兩條語句,會(huì)切斷if和else的聯(lián)系

  • if(1)括號(hào)里的條件表達(dá)式都有真假性,因此需要特別注意千萬別在括號(hào)內(nèi)寫賦值操作(例如:age = 18) 這樣會(huì)導(dǎo)致括號(hào)內(nèi)容永真,避免這樣的情況的方法是將常量寫在前面,這樣==寫成=時(shí)會(huì)報(bào)錯(cuò)

  • 在企業(yè)開發(fā)中一定不要用 == 來判斷兩個(gè)小數(shù)是否相等,這樣會(huì)產(chǎn)生精度問題,一般企業(yè)開發(fā)中判斷小數(shù)是否相等用>= <=或者其他方法


if else綜合案例

  • if else的冒泡排序

    • 接收用戶輸入的三個(gè)整數(shù),排序后輸出
#include <stdio.h>

int main()
{
    //接收用戶輸入的三個(gè)整數(shù),排序后輸出
    //1.定義三個(gè)變量,用于接收用戶輸入的整數(shù)
    int a,b,c;
    a = -1,b = -1,c = -1;
    //2.提示用戶輸入三個(gè)整數(shù),用逗號(hào)隔開
    printf("請(qǐng)輸入三個(gè)整數(shù),用逗號(hào)隔開:\n");
    //3.輸入三個(gè)整數(shù)
    scanf("%d,%d,%d",&a,&b,&c);
    //4.排序(相鄰的兩個(gè)數(shù)比較,交換位置即可)
    //特點(diǎn):經(jīng)過一輪比較最大的數(shù)會(huì)出現(xiàn)在最后
    //三個(gè)數(shù)比大小只需要進(jìn)行兩輪比較即可
    //定義一個(gè)變量作為容器,作為兩兩交換的中間件
    int temp = -1;
    if(a>b){
        temp = a;
        a = b;
        b = temp;
    }
    if(b>c){
        temp = b;
        b = c;
        c = temp;
    }
    //第二輪比較
    if(a>b){
        temp = a;
        a = b;
        b = temp;
    }
    //輸出(從小到大)
    printf("三個(gè)整數(shù)由小到大為:%d,%d,%d",a,b,c);
    return 0;
}
  • 接收用戶輸入的四個(gè)整數(shù),排序后輸出
#include <stdio.h>

int main()
{
    //接收用戶輸入的四個(gè)整數(shù)备燃,排序后輸出
    //1.定義四個(gè)變量,用于接收用戶輸入的整數(shù)
    int a,b,c,d;
    a = -1,b = -1,c = -1,d = -1;
    //2.提示用戶輸入三個(gè)整數(shù),用逗號(hào)隔開
    printf("請(qǐng)輸入四個(gè)整數(shù),用逗號(hào)隔開:\n");
    //3.輸入三個(gè)整數(shù)
    scanf("%d,%d,%d,%d",&a,&b,&c,&d);
    //4.排序(相鄰的兩個(gè)數(shù)比較,交換位置即可)
    //特點(diǎn):經(jīng)過一輪比較最大的數(shù)會(huì)出現(xiàn)在最后
    //四個(gè)數(shù)比大小只需要進(jìn)行三輪比較即可
    //定義一個(gè)變量作為容器,作為兩兩交換的中間件
    int temp = -1;
    if(a>b)
    {
        temp = a;
        a = b;
        b = temp;
    }
    if(b>c)
    {
        temp = b;
        b = c;
        c = temp;
    }
    if(c>d)
    {
        temp = c;
        c = d;
        d = temp;
    }
    //第二輪比較
    if(a>b)
    {
        temp = a;
        a = b;
        b = temp;
    }
    if(b>c)
    {
        temp = b;
        b = c;
        c = temp;
    }
    //第三輪比較
    if(a>b)
    {
        temp = a;
        a = b;
        b = temp;
    }
    //輸出(從小到大)
    printf("四個(gè)整數(shù)由小到大為:%d,%d,%d,%d",a,b,c,d);
    return 0;
}
  • 冒泡排序的邏輯



  • if else石頭剪刀布游戲
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
//實(shí)現(xiàn)石頭剪刀布
    /*
     剪刀石頭布游戲:
    1)定義游戲規(guī)則
      剪刀 干掉 布
      石頭 干掉 剪刀
      布 干掉 石頭
    2)顯示玩家開始猜拳
    3)接收玩家輸入的內(nèi)容
    4)讓電腦隨機(jī)產(chǎn)生一種拳
    5)判斷比較
    (1)玩家贏的情況(顯示玩家贏了)
    (2)電腦贏的情況(顯示電腦贏了)
    (3)平局(顯示平局)
    */
    setbuf(stdin,NULL);
    //保存用戶輸入的值和電腦的值
    int user,computer = -1;
    printf("請(qǐng)出拳:0.剪刀 1.石頭 2.布\n");
    //玩家輸入
    scanf("%i",&user);
    //電腦產(chǎn)生一個(gè)0~2的隨機(jī)數(shù)
    srand((unsigned int)time(NULL));
    computer = (rand()%3);
    //判斷輸入數(shù)據(jù)的合法性
    if(user>=0 && user <= 2){
        //如果合法,比較誰勝誰負(fù)
        //做差比較,如果差值為1或-2,減數(shù)勝,差值為-1或2,被減數(shù)勝,0為平局
            //保存差值
        int res = user - computer;
        if(res == 1 || res == -2){
            //如果贏了,輸出
            printf("computer = %d\n",computer);
            printf("我靠,你贏了");
        }else if(res == -1 && res == 2){
            printf("computer = %d\n",computer);
            printf("很遺憾,你輸了");
        }else{
            printf("computer = %d\n",computer);
            printf("平局");
        }
    }else{
        printf("輸入有誤");
    }
    return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市菩彬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌潮梯,老刑警劉巖骗灶,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異秉馏,居然都是意外死亡耙旦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門萝究,熙熙樓的掌柜王于貴愁眉苦臉地迎上來免都,“玉大人,你說我怎么就攤上這事帆竹∪颇铮” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵栽连,是天一觀的道長险领。 經(jīng)常有香客問我,道長秒紧,這世上最難降的妖魔是什么绢陌? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮熔恢,結(jié)果婚禮上脐湾,老公的妹妹穿的比我還像新娘。我一直安慰自己绩聘,他們只是感情好沥割,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布耗啦。 她就那樣靜靜地躺著凿菩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帜讲。 梳的紋絲不亂的頭發(fā)上衅谷,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音似将,去河邊找鬼获黔。 笑死蚀苛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的玷氏。 我是一名探鬼主播堵未,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盏触!你這毒婦竟也來了渗蟹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤赞辩,失蹤者是張志新(化名)和其女友劉穎雌芽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辨嗽,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡世落,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了糟需。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屉佳。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖篮灼,靈堂內(nèi)的尸體忽然破棺而出忘古,到底是詐尸還是另有隱情,我是刑警寧澤诅诱,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布髓堪,位于F島的核電站,受9級(jí)特大地震影響娘荡,放射性物質(zhì)發(fā)生泄漏干旁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一炮沐、第九天 我趴在偏房一處隱蔽的房頂上張望争群。 院中可真熱鬧,春花似錦大年、人聲如沸换薄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轻要。三九已至,卻和暖如春垦缅,著一層夾襖步出監(jiān)牢的瞬間冲泥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凡恍,地道東北人志秃。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像嚼酝,于是被迫代替她去往敵國和親浮还。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line)闽巩,也就是一...
    悟名先生閱讀 4,131評(píng)論 0 13
  • 去嵊泗列島是很早就有的想法碑定,不知道為什么就是向往大海,其實(shí)暈船讓我享受不了大海的寬廣又官。 鐘浩很早就和我...
    zlx_114閱讀 383評(píng)論 2 1
  • 晚飯時(shí)候六敬,無話碘赖。 不知道我這輩子什么時(shí)候才能理解我爸。也許只是一個(gè)愿景外构,也許隨著年歲的增長普泡,隨著與父母在一起的時(shí)間...
    虛音閱讀 120評(píng)論 0 0