最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

史上最強C語言分支和循環(huán)教程詳解

 更新時間:2021年11月15日 09:53:41   作者:鹿九丸  
這篇文章主要介紹了史上最強C語言分支和循環(huán)教程詳解,本文通過代碼演示給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

3.3 do...while()循環(huán)

3.3.1 do語句的語法:

do

          循環(huán)語句;

while(表達式);

3.3.2 執(zhí)行流程

3.3.3 do語句的特點

循環(huán)至少執(zhí)行一次,使用的場景有限,所以不是經(jīng)常使用。一般常常用在某些項目或者游戲的開始界面,因為無論用戶做出怎樣的選擇,菜單或者游戲的開始頁面至少會顯示一次。

下面代碼給大家展示一下:

#include <stdio.h>
int main()
{
 int i = 10;
 do
 {
  printf("%d\n", i);
 } while (i < 10);
 return 0;
}

3.3.4 do while循環(huán)中的break和continue

break:同while與for循環(huán),執(zhí)行break后直接跳出循環(huán)。下面給大家代碼展示一下:

#include <stdio.h>
int main()
{
    int i = 0;
 
    do
    {
        if (5 == i)
            break;
        printf("%d\n", i);
        i++;
    } while (i < 10);
 
    return 0;
}

 

在i = 0 到4 的時候程序正常執(zhí)行,當(dāng)i = 5的時候,執(zhí)行break語句循環(huán)退出結(jié)束,因此在屏幕上值打印了0 1 2 3 4。

 continue:當(dāng)do while循環(huán)體語句中遇到continue之后,就會跳轉(zhuǎn)到條件判斷語句。

#include <stdio.h>
int main()
{
    int i = 0;
 
    do
    {
        if (5 == i)
            continue;
        printf("%d\n", i);
        i++;
    } while (i < 10);
 
    return 0;
}

 

程序在i=5的時候if條件判定成立,執(zhí)行continue語句,跳轉(zhuǎn)到條件判定語句while(i<10)成立,陷入了死循環(huán),此時i的值始終為5。

3.4 練習(xí)

3.4.1. 計算 n的階乘。

#include<stdio.h>
int main()
{
 int n = 0;
 int i = 1;
 int ret = 1;//ret用來存放階乘的結(jié)果
 scanf("%d", &n);
 for (i = 1; i <= n; i++)
 {
  ret *= i;
 }
 printf("%d", ret);
 return 0;
}

通過for循環(huán)即可實現(xiàn)求階乘。

3.4.2. 計算 1!+2!+3!+……+10!

#include<stdio.h>
int main()
{
 int n = 10;
 int i = 1;
 int ret = 1;//ret用來存放階乘的結(jié)果
 int sum = 0;
 for (i = 1; i <= n; i++)
 {
  ret *= i;
  sum += ret;
  
 }
 printf("%d", sum);
 return 0;
}

求階乘的和時,此處用了一個比較巧妙的方法,即n的階乘等于(n-1)的階乘再乘n即可得出,當(dāng)然,也可以用其它的方法,此處需要注意的是,如果用兩個for循環(huán)求的話不要忘記ret的初始化!

3.4.3. 在一個有序數(shù)組中查找具體的某個數(shù)字n。

#include<stdio.h>
int main()
{
 int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
 int left = 0;
 int right = sizeof(arr) / sizeof(arr[0]) - 1;
 int key = 7;
 int mid = 0;
 while (left <= right)
 {
  mid = (left + right) / 2;
  if (arr[mid] > key)
  {
   right = mid - 1;
  }
  else if (arr[mid] < key)
  {
   left = mid + 1;
  }
  else
   break;
 }
 if (left <= right)
  printf("找到了,下標是%d\n", mid);
 else
  printf("找不到\n");
}

二分查找法主要是弄明白原理,只要原理弄清楚了就能很容易的寫出代碼,其原理為:定義首元素下標記為left,尾元素下標記為right,中間元素下標記為mid,拿我們向要查找的元素即mid下標對應(yīng)的元素進行比較,如果比中間元素小,就將mid元素的前一個元素的下標記為right,反之,就將mid的后一個元素的下標記為left,重復(fù)這個過程即可,即構(gòu)成一個循環(huán),另外,需要記住這個循環(huán)終止的條件,當(dāng)left>right時就表明中間已經(jīng)沒有中間元素供我們進行查找,在退出循環(huán)之后,如果left仍然小于right,就說明已經(jīng)找到了我們想要查找的元素,即mid下標所對應(yīng)的元素,mid即為其對應(yīng)的下標。

3.4.4. 編寫代碼,演示多個字符從兩端移動,向中間匯聚。

#include <stdio.h>
#include<string.h>
#include<windows.h>
int main()
{
    char arr1[] = "welcome to bit";
    char arr2[] = "##############";
    int left = 0;
    int right = strlen(arr1) - 1;
    printf("%s\n", arr2);
    //while循環(huán)實現(xiàn)
    while (left <= right)
    {
        Sleep(1000);
        arr2[left] = arr1[left];
        arr2[right] = arr1[right];
        left++;
        right--;
        printf("%s\n", arr2);
    }
    return 0;
}

這段代碼并不復(fù)雜,就是將我們給出的字符串的左右元素逐個賦值到新建的字符串中即可,同樣的,需要注意的是循環(huán)終止的條件,因為每次賦值完后,left下標+1,right下標-1,當(dāng)left下標大于right下標即停止,此時中間已經(jīng)沒有元素了,就無法從兩端向中間移動了。

3.4.5. 編寫代碼實現(xiàn),模擬用戶登錄情景,并且只能登錄三次。

(只允許輸入三次密碼,如果密碼正確則 提示登錄成,如果三次均輸入錯誤,則退出程序。

#include<stdio.h>
#include<string.h>
int main()
{
    char psw[10] = "";
    int i = 0;
    int j = 0;
    for (i = 0; i < 3; ++i)
    {
        printf("please input:");
        scanf("%s", psw);
        if (strcmp(psw, "password") == 0)
            break;
    }
    if (i == 3)
        printf("exit\n");
    else
        printf("log in\n");
}

這個題中需要注意的是兩個字符串不能直接進行比較,只能利用string.h庫函數(shù)中的strcmp()進行比較,當(dāng)兩個字符串的每一個元素都相等的時候,給函數(shù)的返回值為0,即可進行判斷。

3.4.6.猜數(shù)字游戲?qū)崿F(xiàn)

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
 printf("**********************************\n");
 printf("*********** 1.play     **********\n");
 printf("*********** 0.exit     **********\n");
 printf("**********************************\n");
}
void game()
{
 int random_num = rand() % 100 + 1;
 int input = 0;
 while (1)
 {
  printf("請輸入猜的數(shù)字>:");
  scanf("%d", &input);
  if (input > random_num)
  {
   printf("猜大了\n");
  }
  else if (input < random_num)
  {
   printf("猜小了\n");
  }
  else
  {
   printf("恭喜你,猜對了\n");
   break;
  }
 }
}
int main()
{
 int input = 0;
 srand((unsigned)time(NULL));
 do
 {
  menu();
  printf("請選擇>:");
  scanf("%d", &input);
  switch (input)
  {
  case 1:
   game();
   break;
  case 0:
   break;
  default:
   printf("選擇錯誤,請重新輸入!\n");
   break;
  }
 } while (input);
 return 0;
}

猜數(shù)字游戲并不復(fù)雜,但運用了函數(shù)模塊化的思想,其中生成隨機數(shù)用到了rand()函數(shù)和時間戳進行搭配,需要注意的是,時間戳只需要在主函數(shù)中聲明或者運行一次即可,不需要在每次生成隨機數(shù)時都進行聲明。

4.goto語句

 C語言中提供了可以隨意濫用的 goto語句和標記跳轉(zhuǎn)的標號。

從理論上 goto語句是沒有必要的,實踐中沒有g(shù)oto語句也可以很容易的寫出代碼。 但是某些場合下goto語句還是用得著的,最常見的用法就是終止程序在某些深度嵌套的結(jié)構(gòu)的處理過程。

例如:一次跳出兩層或多層循環(huán)。 多層循環(huán)這種情況使用break是達不到目的的。它只能從最內(nèi)層循環(huán)退出到上一層的循環(huán)。當(dāng)然,利用多個break也可以跳出循環(huán),不過要加很多條件進行限制,代碼會變得過于冗長,且容易出錯。

goto語言真正適合的場景如下:

for (...)
{
    for (...)
    {
        if (disaster)
            goto error;
    }
}
error :
     if (disaster)
         //處理錯誤情況

下面是使用goto語句的一個例子,然后使用循環(huán)的實現(xiàn)方式替換goto語句:

一個關(guān)機程序

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

而如果不想用goto語句,則可以使用循環(huán):

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char input[10] = { 0 };
    system("shutdown -s -t 60");
    while (1)
    {
        printf("電腦將在1分鐘內(nèi)關(guān)機,如果輸入:我是豬,就取消關(guān)機!\n請輸入:>");
        scanf("%s", input);
        if (0 == strcmp(input, "我是豬"))
        {
            system("shutdown -a");
            break;
        }
    }
    return 0;
}

到此這篇關(guān)于史上最強C語言分支和循環(huán)教程詳解的文章就介紹到這了,更多相關(guān)C語言分支和循環(huán)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c語言實現(xiàn)MD5算法的項目實踐

    c語言實現(xiàn)MD5算法的項目實踐

    MD5用于確保信息傳輸完整一致,是計算機廣泛使用的雜湊算法之一,本文主要介紹了c語言實現(xiàn)MD5算法,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • C++ 設(shè)置透明背景圖片

    C++ 設(shè)置透明背景圖片

    這篇文章主要介紹了C++ 設(shè)置透明背景圖片的相關(guān)資料,需要的朋友可以參考下
    2015-06-06
  • 關(guān)于STL中set容器的一些總結(jié)

    關(guān)于STL中set容器的一些總結(jié)

    關(guān)于set,必須說明的是set關(guān)聯(lián)式容器。set作為一個容器也是用來存儲同一數(shù)據(jù)類型的數(shù)據(jù)類型,并且能從一個數(shù)據(jù)集合中取出數(shù)據(jù),在set中每個元素的值都唯一,而且系統(tǒng)能根據(jù)元素的值自動進行排序
    2013-09-09
  • C語言實現(xiàn)詞法分析器

    C語言實現(xiàn)詞法分析器

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)詞法分析器,一個簡單的詞法分析程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C語言實現(xiàn)貪吃蛇游戲(命令行)

    C語言實現(xiàn)貪吃蛇游戲(命令行)

    這篇文章主要為大家詳細介紹了C語言命令行實現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • c++中vector的使用和模擬實現(xiàn)

    c++中vector的使用和模擬實現(xiàn)

    這篇文章主要介紹了c++中vector的使用和模擬實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • EasyC++靜態(tài)持續(xù)變量

    EasyC++靜態(tài)持續(xù)變量

    這篇文章主要介紹了EasyC++靜態(tài)持續(xù)變量,除了自動存儲變量之后,C++當(dāng)中還有靜態(tài)持續(xù)變量。關(guān)于靜態(tài)持續(xù)變量的定義C++和C語言是一樣的,它擁有三種鏈接性,即外部鏈接性、內(nèi)部連接性和無鏈接性,下面一起進入文章了解更具體內(nèi)容吧
    2021-12-12
  • C++實現(xiàn)對象化的矩陣相乘小程序

    C++實現(xiàn)對象化的矩陣相乘小程序

    這篇文章主要為大家詳細介紹了C++實現(xiàn)對象化的矩陣相乘小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C語言數(shù)組和指針,內(nèi)存之間的關(guān)系

    C語言數(shù)組和指針,內(nèi)存之間的關(guān)系

    這篇文章主要介紹了C語言數(shù)組和指針,內(nèi)存之間的關(guān)系,首先論證一維數(shù)組和一級指針之前的關(guān)系,我們常常使用一級指針指針的方式訪問一維數(shù)組,只有對內(nèi)存的理解到位才能理解它們直接的關(guān)系。需要的小伙伴可以參考一下
    2022-02-02
  • C++中指針和引用的區(qū)別詳解

    C++中指針和引用的區(qū)別詳解

    這篇文章主要介紹了C++中指針和引用的區(qū)別詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評論

彭山县| 宜阳县| 军事| 普宁市| 开远市| 黔西县| 贵溪市| 甘南县| 岢岚县| 大竹县| 托克逊县| 驻马店市| 萨嘎县| 司法| 海盐县| 云浮市| 梁河县| 依兰县| 甘德县| 黄陵县| 三台县| 康乐县| 辽宁省| 耿马| 包头市| 黔东| 晋宁县| 湖北省| 海安县| 南投县| 宜川县| 兴和县| 宁南县| 青冈县| 大同县| 邛崃市| 读书| 甘德县| 金寨县| 安吉县| 宜丰县|