91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言三大語句注意事項有哪些

發布時間:2021-09-15 09:09:44 來源:億速云 閱讀:165 作者:小新 欄目:開發技術

這篇文章主要介紹C語言三大語句注意事項有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

    在今天的內容介紹之前我們要知道:C語言中,由一個分號( ; )隔開的就是一條語句。

    很好理解,如:

    int a=3;//語句1
    
    printf("請大家多多指教!");//語句2
    
    ;//語句3----空語句

    今天講解的內容,則是自己對于這三種語句一些細節的介紹。(并不是具體講解這些語句)

    分支語句:if,switch

    循環語句:while,for,do while

    goto語句

    補充小知識(后面如果遇見,可在此了解)

    • C語言中:0 表示假--------非0 表示真,如:1,2,-1

    • EOF: EOF是一個計算機術語,為End Of File的縮寫(文件結束標志),其值為-1。通常在文本的最后存在此字符表示資料結束。

    • getchar():(來源于MSDN,大家可以自己翻譯一下哦 \(^ ^)/ )

    1. Read a character from a stream (getc, getwc), or get a character from stdin (getchar, getwchar).

    2. Return Value

    3. Each of these functions returns the character read. To indicate an read error or end-of-file condition, getc and getchar return EOF. For getc and getchar, use ferror or feof to check for an error or for end of file.(個人理解:如果正確讀取,返回的是對應字符的ASCII碼值,如果讀取失敗/結束/錯誤,返回的是EOF)

    • getchar返回類型為int。(因為他返回的可能是ASCII碼值,或者是EOF(-1))

    • scanf()在讀取字符時會跳過空格、制表符和換行符(這里不作詳細介紹啦,后面會有專門章節介紹)

    • system()——執行系統命令的一個函數——來自頭文件<stdlib.h>

    • shutdown -s——關機命令、shutdown -s -t time——在time秒后自動關機、shutdown -a——取消關機

    • 如果要讓程序實行60s內關機:system("shutdown -s -t 60");

    • strcmp:比較字符串大小的函數。如果要比較字符串A和B的大小,代碼如下:strcmp(A,B);

    • 如果返回值=0,則兩個字符串相等;如果返回值>0,則A字符串長度大于B;如果返回值<0,則A字符串長度小于B

    1、分支語句

    分支語句其實就是一種選擇結構。對于要先做判斷再選擇的問題就要使用分支語句。

    比如:如果你喜歡我的文章,可以給我點贊收藏;要是不喜歡的話,可以給我一些改進的建議。甚至你 以有其他很多的選擇,這都是分支語句的一部分。

    C語言中使用選擇結構,就要用到:ifswitch

    2、if語句

    if else 后面如果有多條語句,要加大括號{ }

    代碼如下:【期待如果age<=18,輸出未成年;age>18,輸出成年了 可以戀愛啦!】

    int age=24;
    if(a>18)
     printf("未成年");
    else
     printf("成年了");
     printf("可以戀愛啦!")

    這段代碼結果:成年了 可以戀愛啦!

    但是如果讓age=8的話,輸出結果是:未成年 可以戀愛啦! 這并不符合我們的需求

    所以需要將else后面這兩個語句用{ }括起來。

    懸空else: else 與離他最近的 未匹配的if 匹配

    代碼如下:(大家可以思考一下答案是什么)

    int a=0;
    int b=2;
    if(a==1)
        if(b==2)
            printf("hehe\n");
    else
        printf("haha\n");

    大家想到了嗎,其實這道題根本不會打印結果。

    這道題不僅要我們知道,else與離他最近的if匹配;還要我們注意代碼的書寫風格是很重要的

    這里推薦一本有關代碼風格的書《高質量的C-C++編程》,大家可以找到電子版的進行學習。

    3、switch語句

    switch語句常常用于多分支情況

    對于如:

    輸入1,輸出周一

    輸入2,輸出周二

    輸入6,輸出周六

    輸入7,輸出周日

    如果用if…else if…else if…else的形式則顯得復雜,這時用switch是一個更好的選擇

    3.1語句結構

    switch(整形表達式)
    {
        case 整形常量表達式:
            語句;
    }

    注意:
    switch后面是整形表達式(比如int型,char型)【可以用字符,因為字符其實是整型的一種,底層存儲的是字符對應的ASCII值】

    case后面是整形常量表達式(比如1,1+2)

    但是如果是下面的代碼,可以對應數字輸出星期幾嗎?大家可以思考一下

    int day=0;
    scanf("%d",&day);
    switch(day)
    {
        case 1:
            printf("Mon\n");
        case 2:
            printf("Tue\n");
        case 3:
            printf("Wed\n");
        case 4:
            printf("Thus\n");
        case 5:
            printf("Fri\n");
        case 6:
            printf("Sat\n");
        case 7:
            printf("Sun\n");
    }

    答案是,如果我輸入1,則會輸出所有的星期。因為我輸入的值是一個入口,如果我輸入2,則從case2進入, 但是好像沒有出口去使語句停止下來,故會一直往后輸出,直到switch結束。

    故這個時候,搭配break,才能使switch實現真正的分支。

    但是break并不是一定要加的,根據需求添加,如以下代碼(根據數字打印工作日和休息日)

    int day=0;
    scanf("%d",&day);
    switch(day)
    {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            printf("工作日\n");
            break;
        case 6:
        case 7:
            printf("休息日\n");
            break;//可以省略,不過建議加上
        //default:
          //  printf("輸入錯誤");
            //break;
    }

    再提一下default。如果不加default,如上面的代碼。如果輸出不是1到7的數字,則不會打印任何東西就結 束。但是你可以加一個default,如果輸入的不符合上面要求,則顯示輸入錯誤,可以提醒一下自己。(根據 需求)

    至于default的位置,可以不在最后面,只要其他的需求符合題意,放在其他位置也行。

    最后可以通過一段代碼檢驗大家是否好的理解了switch

    int n=1;
    int m=2;
    switch(n)
    {
        case 1:m++;
        case 2:n++;
        case 3:
            switch(n)
            {//switch允許嵌套使用
                case 1:
                    n++;
                case 2:
                    m++;
                    n++;
                    break;
            }
        case 4:
            m++;
            break;
        default:
            break;
    }
    printf("m=%d,n=%d\n",m,n);

    如果你的答案是 5,3,那表示你理解了。如果不是的話,可以對照上面關于switch再好好琢磨一下哦。

    4、循環語句

    循環語句:一組被重復執行的語句稱之為循環體,能否繼續重復,決定循環的終止條件。循環結構是在 一定條件下反復執行某段程序的流程結構,被反復執行的程序被稱為循環體。循環語句是由 循環體及循環的終止條件兩部分組成的。

    C語言中使用循環結構就要用到:whilefordo while

    4.1 while循環(do while類似)

    在while循環中,break用于永久的終止循環(for,do while都適用)

    代碼如下:

    int i=1;
    while(i<=10)
    {
        if(i==5)
            break;
        printf("%d ",i);
        i++;
    }

    結果輸出:1 2 3 4

    while循環中,continue是跳過本次循環continue后面的代碼,直接去判斷部分

    (for,do while都適用)

    大家可以思考一下,下面的代碼輸出什么:

    int i=1;
    while(i<=10)
    {
        if(i==5)
            continue;
        printf("%d ",i);
        i++;
    }

    結果輸出:1 2 3 4 后面死循環,因為當i=5時,就跳過了continue后面的語句,i不能自增,但是會再次進入 循環判斷。

    while( ( ch = getchar( ) ) != EOF )

    (在鍵盤上按住Ctrl+z其實就是讓getchar()讀到了EOF,讀取就結束)

    大家可以自己先調試運行一下下面的代碼:

    int ch=0;
    while((ch=getchar())!=EOF)
    {
        putchar(ch);//輸出字符
    }

    結果就是,如果你輸入A回車,界面就會打印A,然后換行顯示輸入光標,當你在輸入其他字符時回車后,也 是打印字符,回車,直到你Ctrl+z回車后,該循環才結束。

    但是你知道getchar是怎么讀入數據的嗎?

    了解getchar()是如何讀取東西:(getchar和鍵盤之間有個緩沖區,并不是直接從鍵盤拿數據)

    C語言三大語句注意事項有哪些

    • getchar是讀取一個字符

    • 輸入前緩沖區是空的,getchar就等待輸入

    • 如果你輸入 A回車,即將A\n放入緩沖區中,getchar先讀到A,A就進入ch中,然后打印,再次循環時再讀到\n,\n進入ch中,進行回車。故后面再輸入時,就換了一行。

    了解了getchar的讀入原理后,下面有一段代碼,其實有個錯誤,大家可以想想怎樣修改:

    char password[20] = { 0 };
    printf("請輸入密碼>:");
    scanf("%s", password);
    printf("請確認密碼(Y/N)>:");
    int ch = getchar();
    if ('Y' == ch)
    {
     printf("確認成功\n");
    }
    else
    {
     printf("確認失敗\n");
    }

    假設密碼是123456,當我們回車后。首先scanf讀入123456,但是剩下的\n就被getchar接收了。

    解決方案1:可以在這之前加一個getchar(),接收\n,以清理緩沖區。

    但是如果這樣做后,我們如果輸入密碼為12345 abcde,依舊會產生問題。

    所以怎么辦呢?增加getchar()的數量嗎,那我們是不是可以用一個循環,直到getchar讀入的為\n為止結束。 當我們再做確認的時候,ch就可以成功接收字符。代碼如下:

    char password[20] = { 0 };
    printf("請輸入密碼>:");
    scanf("%s", password);
    printf("請確認密碼(Y/N)>:");
    int tmp = 0;
    while ((tmp = getchar()) != '\n')
    {
     ;
    }
    int ch = getchar();
    if ('Y' == ch)
    {
     printf("確認成功\n");
    }
    else
    {
     printf("確認失敗\n");
    }

    到這里大家應該已經清楚getchar的讀入了,至于以上的密碼接收有點問題,這里只是形象的舉個例子,大家要是想的太多了,不用去糾結的。

    4.2 do while循環

    這里我有時老出現一個錯誤,故自己提出來。先大家先看以下的一段代碼:(感覺一下是否有問題)

    do
    {
     int input=0;
     printf("請選擇:>");
     scanf("%d", &input);
     switch (input)
     {
     case 0:
      break;
     case 1:
      break;
     default:
      break;
     }
    } while (input);

    我第一次寫出這種代碼時,編譯就顯示有錯誤,但我自己感覺很合理。因為本意是想輸入0,就退出循環;輸入其他的數字,就可以循環下去。
    如果細心的話,大家就會發現,input的定義其實應該在do-while循環的外面。我當時就費解了一會,但是聯想到while循環,就感覺這一切都說的通了。

    像我這種情況,判斷定義的變量,應該與循環在一個等級,就是在循環語句之外,就定義好。

    4.3 for循環

    語法結構:

    for(表達式1;表達式2;表示式3)

    循環體

    注意:

    圓括號內的三個表達式在語法上都可以省,但兩個分號“ ;”不可以省。for( ; ; )可以表示無限循環。

    因為語法規定,判斷部分省略表示真。

    5、goto語句

    goto語句:也稱為無條件轉移語句。其一般格式如:goto 語句標號; 其中語句標號是按[標識符]規定書 寫的符號, 放在某一語句行的前面,標號后加[半角冒號]“:”。語句標號起標識語句的作用, 與 goto 語句配合使用。

    用法: goto 語句通常與條件語句配合使用。可用來實現條件轉移, 構成循環,跳出循環體等功能。

    注意: 1. 使用goto語句只能goto到同一函數內,而不能從一個函數里goto到另外一個函數里。2.在結構化程序設計
    中一般不主張使用 goto 語句, 以免造成程序流程的混亂,使理解和調試程序都產生困難。

    語句格式:

    goto 語句標號:
    ...
    語句標號:語句//----語句標號也可以在goto語句之前

    可以通過下面兩段代碼比較,幫你理解:

    int i=5;
    if(i==5)
    {
        goto start:
    }
    //代碼1
    start:
    printf("A\n");
    printf("B\n");
    printf("C\n");
    //代碼2
    printf("A\n");
    printf("B\n");
    start:
    printf("C\n");

    代碼1輸出A B C,而代碼2,直接跳過A B,只輸出C。

    goto語句可以用于跳出多層循環,代碼如下:

    for()
    {
     for()
     {
      for()
      {
       goto start;
      }
     }
    }
    start:
    表達式

    故goto最常見的用法是:終止程序在某些深度嵌套的結構的處理過程。

    最后給大家寫一個《關機程序》來幫大家理解goto語句,希望大家喜歡啦\(^ ^)/

    #include <stdio.h>
    int main()
    {
        char input[10] = {0};
        system("shutdown -s -t 60");
     again:
        printf("電腦將在1分鐘內關機,如果輸入:俺很喜歡這篇文章,就取消關機!\n請輸入:>");
        scanf("%s", input);
        if(0 == strcmp(input, "我是豬"))
        {
         system("shutdown -a");
        }
        else
        {
         goto again;
        }
        return 0;
    }

    以上是“C語言三大語句注意事項有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    台东县| 凭祥市| 海林市| 洛川县| 黔东| 天长市| 高安市| 新乐市| 重庆市| 新密市| 合作市| 通化市| 乐清市| 汨罗市| 曲松县| 山丹县| 乐安县| 枣庄市| 三门县| 繁昌县| 沛县| 淳安县| 新干县| 克山县| 通化市| 宣化县| 内丘县| 科尔| 甘孜县| 桐乡市| 察雅县| 洛宁县| 波密县| 玉环县| 靖西县| 平阴县| 红河县| 辉南县| 亳州市| 平江县| 龙陵县|