溫馨提示×

溫馨提示×

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

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

C++分支和循環(huán)語句怎么使用

發(fā)布時間:2022-10-17 16:44:55 來源:億速云 閱讀:185 作者:iii 欄目:編程語言

本篇內(nèi)容介紹了“C++分支和循環(huán)語句怎么使用”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

生活中存在三種語言結(jié)構(gòu)

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

(2)選擇結(jié)構(gòu)<——>分支語句:if   switch    

(3)循環(huán)結(jié)構(gòu)<——>循環(huán)語句:while      for      do while         goto 

C語言中0表示假,非0表示為真。(比如說-1表示為真)

 if 語句

語法結(jié)構(gòu):

  • if(表達式)

       語句;

  • if(表達式)    

            語句1;

        else

            語句2;

  • if (表達式1)

            語句1;

         else if(表達式2)

             語句2;

          else  // 最后一個else語句借以省略,根據(jù)需要寫

               語句3;

如果if 或者else想要控制多條語句,必須要用大括號括起來,整體形成一個代碼塊。

C++分支和循環(huán)語句怎么使用

以上程序的輸出結(jié)果不是“hahahah”也不是“hehhehe”,結(jié)果是什么也不輸出。else是和最近的 if匹配,所以都是屬于第一個if的代碼塊內(nèi)容。

else是和它離得最近的那個沒有匹配的if 是一對。

如果常量和變量做比較的時候,我們可以把常量寫在前面,這樣能夠避免出現(xiàn)錯誤如:5==num;

練習

1.判斷一個數(shù)是否為奇數(shù)?

#include <stdio.h>

int main()

{

    int num=0;

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

    scanf("num=%d\n",&num);

    if (num%2==1)

    {

        printf("該數(shù)字為奇數(shù)");

    }

    else

    {

        printf("該數(shù)字為偶數(shù)");

    }

    return 0;

}

2.且輸出1-100之間的奇數(shù)。

#include <stdio.h>

int main()

{

    int a=1;

    while (a<=100)

    {

        if(a%2==1)

        {

            printf("%d\n",a);

            a++;

        }

        else

            a++;

    }

    return 0;

}

Switch語句

Switch語句的一般形式:

Switch(語句1)

{

    case(語句2):

              內(nèi)容;

                break;

    case (語句3):

               內(nèi)容;

                break;

    case(語句4):

                內(nèi)容;

                break;

    ……

     default;// 可有可無

              內(nèi)容;

               break;

}

Switch語句是從case進入,從break出來,只有當case后面的語句與Switch后面的語句匹配上的時候才會執(zhí)行。

注意:Switch語句里面必須是整型表達式,case后面必須是整型常量表達式。

while循環(huán)

while 語法結(jié)構(gòu):

while (表達式)

           循環(huán)語句;

只有在表達式為真的時候,才會執(zhí)行循環(huán)語句,知道發(fā)現(xiàn)表達式為假的時候,表達式便不再執(zhí)行,結(jié)束循環(huán)。

  • continue的作用是終止本次循環(huán)中,也就是說continue后面的代碼不再執(zhí)行,直接跳轉(zhuǎn)到while的判斷部分,判斷是否需要進入下一次循環(huán)。

  • 只要循環(huán)中遇到break,就停止后期的所有的循環(huán),直接終止循環(huán),所以:while中的break是用于永久終止循環(huán)的。

getchar 是輸入字符,putchar() 是輸出字符。putchar(變量名)的含義類似于printf(“%c”,變量名);

EOF——表示的end of file 是文件的結(jié)束標志。

int main()

{

    int ch=0;

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

{

    putchar(ch);

}

return 0;

}

 當你輸入EOF的時候,循環(huán)并不會終止,只有當你輸入Ctrl+z時,才會終止。

getchar與scanf的區(qū)別:

scanf是把你所輸入的內(nèi)容放到一個緩沖區(qū)中,最后的回車鍵作為結(jié)束標志,在最終顯示的時候不會顯示出\n。但是getchar首先是去輸入緩沖區(qū)中看是否有內(nèi)容,不管里面的內(nèi)容是否是自己所需要的,都會被讀走。所以,一般我們在使用getchar()輸入的時候,前面一般加上一句getchar();不用給他賦予返回值,因為我們此時的目的就是清空數(shù)據(jù)緩沖區(qū)中的內(nèi)容,讓getchar獲取我們想要的內(nèi)容。

getchar函數(shù)是一位一位的讀取字符的。

#include <stdio.h>

int main()

{

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

    {

        if(ch<'0'||ch>'9')

            continue;

        putchar(ch);

    }

    return 0;

}

以上代碼的意思是只有在輸入字符0-9之間的字符,包含0和9,才會有輸出,否則就不輸出。

for循環(huán)

語法:for (表達式1;表達式2;表達式3)

            {

                循環(huán)語句;

            }

表達式 1為初始化部分,用于初始化循環(huán)變量的。表達式2 為條件判斷部分,用于判斷循環(huán)時候終止。表達式3位調(diào)整部分,用于循環(huán)條件的調(diào)整。

break和continue的用法和在while語句中的用法一致。

有一個小區(qū)別:

#include <stdio.h>

        int main()

    {

        int i=0;

        for(i=1;i<=10;i++)

        {

            if (i==5)

                continue;

            printf("%d",i);

        }

        return 0;

    }

此結(jié)果的輸出是1 2 3 4 6 7 8 9 10 因為在i=5的時候遇到了continue之后直接跳轉(zhuǎn)到了變量調(diào)整部分i++那里,所以,這個時候變量的值變?yōu)榱?,繼續(xù)輸出。

#include <stdio.h>    

            int  main()

        {

            int i=1;

            while (i<=10)

            {

                if(i==5)

                    continue;

                printf("%d",i);

                i++;

             }

          }

   此代碼的結(jié)果是1 2 3 4 最后是一個死循環(huán),因為當i=5的時候,遇到了continue,后面的部分不再執(zhí)行,直接跳過了變量調(diào)整部分,一直在判斷i=5。

for語句循環(huán)控制變量的一些建議:

  • 不可在for循環(huán)體內(nèi)修改循環(huán)變量,防止for循環(huán)失去控制。

  • 建議for語句的循環(huán)控制變量的取值采用“前閉后開區(qū)間”寫法。

當for循環(huán)的表達式2,即判斷語句不寫的時候,就意味著這個判斷條件恒為真,那么就進入了死循環(huán)。

請問一下代碼循環(huán)了多少次?

#include <stdio.h>

int main()

{

     int i=0;

     int k=0;

for (i=0,k=0;k=0;i++,k++)

     k++;

return 0;

}

答案是循環(huán)了0次,就是根本就沒有進入循環(huán),因為判斷語句處是一個賦值語句,賦值表達式的結(jié)果是0,為假,那么就不進入循環(huán)。

do while 循環(huán)

語法:do 

            {

                 循環(huán);

             }  

               while()

練習題

1.        從鍵盤輸入一個數(shù)n,并且求n!

#include <stdio.h>

int main()

{

    int n=0;

    int i=1;

    int sum=1;

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

    scanf("%d",&n);

    while (i<=n)

    {

      sum=sum*i;

      i++;    

    }

    printf("sum=%d\n",sum);

    return 0;

}

2.求1!+2!+3!+4!+……n!

[x]

#include <stdio.h>

int main()

{

    int n=0;

    int i=1;

    int sum=1;

    int get=0;

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

    scanf("%d",&n);

    for (n=1;n<=10;n++)

    {

      sum=1;

      while (i<=n)

      {

        sum=sum*i;

        i++;    

        }

        get=get+sum;

   }

    printf("get=%d\n",get);

    return 0;

}

[x]

#include <stdio.h>

int main()

{

    int n=0;

    int i=1;

    int sum=1;

    int get=0;

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

    scanf("%d",&n);

    for (n=1;n<=10;n++)

    {

        sum=sum*n;

       get=get+sum;

   }

    printf("get=%d\n",get);

    return 0;

}

3.在一個有序數(shù)組中查找具體的某個數(shù)字n,編寫int binsearch(intx,  int v[],int n);功能:在v[0]<=v[1]<=v[2]<=……v[n-1]的數(shù)組中查找x。

[x]

#include <stdio.h>

int main()

{

    int i=1;

    int k=7;

    int arr[]={1,2,3,4,5,6,7,8,9,10};

    int lgth=sizeof(arr)/sizeof(arr[0]) ;

    for(i=0;i<lgth;i++)

    {

        if(k==arr[i])

        {

            printf("找到了,下標為%d\n",i);

             break;

        }

    }

    if (i==lgth)  

    printf("沒有找到");

    return 0;

}

[x]二分查找法

#include <stdio.h>

int main()

{

    int k=7;

    int arr[]={1,2,3,4,5,6,7,8,9,10};

    int i=0;

    int legth=sizeof(arr)/sizeof(arr[0]);

    int right=legth-1;

    int left=0;

    while(left<=right)

    {

        int mide=(right+left)/2;

        if(k>arr[mide])

        {

            left=mide+1;

        }

        else if(k<arr[mide])

        {

            right=mide-1;

        }

        else

        {

            printf("找到了,下標為%d\n",mide);

            break;

        }

    }

    if(left>right)

    {

        printf("找不到");

    }

    return 0;

}

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

#include <stdio.h>//這個是printf所在的庫函數(shù)

#include <string.h>//這個是 strlen所在的庫函數(shù)

#include<windows.h>//這個是sleep所在的庫函數(shù)

#include<stdlib.h> //這個是system所在的庫函數(shù)

int main()

{

    char arr1[]="Welcome to DongHua!!!!";

    char arr2[]="######################";

    int left =0;

    int right=strlen(arr1)-1;

    while (left<right)

    {

        arr2[left]=arr1[left];

        arr2[right]=arr1[right];

        printf("%s\n",arr2);

        Sleep(1000);//表示在輸出的時候停留1000毫秒

        system("cls");//表示在輸出一次結(jié)果后清屏

        left++;

        right--;

    }

    return 0;

}

5.編寫代碼實現(xiàn),模擬用戶登錄情景,并且只能登錄三次。(只允許輸入三次密碼,如果密碼正確就提示登錄成功,如果三次均輸入錯誤,則退出程序)

strcmp(A,B)是比較字符串A和字符串B,如果字符串A>B,那么會返回一個大于0的數(shù)字,如果A<B,那么會返回一個個小于0的數(shù)字

#include <stdio.h>//這個是printf所在的庫函數(shù)

#include <string.h>//這個是 strlen所在的庫函數(shù)

int main()

{

    int i=0;

    char password[20]={0};//不能寫成password[]={0},這樣定義的話,就不知道數(shù)組的長度是多少結(jié)果就會出錯

    for (i=0;i<3;i++)

    {

        printf("請輸入密碼:\n");

        scanf("%s",password);

        if(strcmp(password,"123456")==0)//在比較兩個字符串是否相等的時候,不能直接用==來判斷,要用strcmp函數(shù),它在string.h函數(shù)庫中

        {

            printf("密碼正確,登陸成功\n");

            break;

        }

        else

        {

            printf("密碼錯誤\n");

        }

    }

    if (i==3)

    {

        printf("三次密碼錯誤,退出程序\n");

    }

    return 0;

}

goto 語句

在一般編寫程序的時候很少使用goto語句,因為它會破壞程序的邏輯性,它所使用的場景是跳出多層循環(huán)嵌套。

分支和循環(huán)的作業(yè)和練習

1.輸入三個數(shù),按照從大到小的順序輸出。

#include <stdio.h>//這個是printf所在的庫函數(shù)

int main()

{

    int a=0;

    int b=0;

    int c=0;

    printf("請輸入三個數(shù):\n");

    scanf("%d%d%d",&a,&b,&c);

    if (a<b)

    {

     int temp=a;//在此注意,不能直接將b賦值給a,因為這樣a的值容易丟失

     a=b;

     b=temp;    

    }

    if(a<c)

    {

        int temp=a;

        a=c;

        c=temp;

     }

     if(b<c)

     {

         int temp=b;

         b=c;

         c=temp;

      }

     printf("由大到小的順序為:%d %d %d\n",a,b,c);

    return 0;

}

2.寫一個代碼打印1-100之間的所有的3的倍數(shù)的數(shù)字

#include <stdio.h>

int main()

{

    int i=0;

    for (i=0;i<100;i++)

    {

        if (i%3==0)

        {

            printf("%d",i);

        }

    }

    return 0;

}

3.給定兩個數(shù),求這兩個數(shù)的最大公倍數(shù).

輾轉(zhuǎn)相除法比如說24和18,首先看24%18余數(shù)是否為0,如果不為0的話,再用除數(shù)與余數(shù)相除,直到余數(shù)為0為止,此時最后的除數(shù)就是公倍數(shù)。

#include <stdio.h>

int main()

{

       int a = 0;

       int b = 0;

       int temp = 0;

       printf("請輸入兩個數(shù)字:\n");

       scanf_s("%d %d", &a, &b);

       while(temp = a % b)//只要結(jié)果為非0,就進入循環(huán)。

       {      

              a = b;

              b = temp;

       }

       printf("公倍數(shù)為:%d", b);

       return 0;

}

4.打印1000年到2000年之間的閏年

#include <stdio.h>

int main()

{

       int year = 0;

       for (year = 0; year <= 2000; year++)

       {

              //判斷year是否為閏年

              //1.能被4整除并且不能被100整除

              //2.能被400整除是閏年

              if (year % 4 == 0 && year % 100 != 0)

              {

                      printf("閏年為:%d\n", year);

              }

              else if(year%400==0)

              {

                      printf("閏年為:%d\n", year);

              }

       }

       return 0;

}

5.打印100-200之間的素數(shù)

#include <stdio.h>

int main()

{

       int count = 0;

       int i = 0;

       for (i = 100; i <= 200; i++)

       {

              int j = 0;

              for (j = 2; j < i ; j++)

              {

                      if (i%j == 0)

VPsx9aha">                      {

                             break;

                      }

              }

              if (j == i)

              {

                      count++;

                      printf("%d\n", i);

              }

       }

       printf("count=%d\n", count);

       return 0;

}

優(yōu)化程序:首先偶數(shù)肯定不是素數(shù),所以先產(chǎn)生100-200之間的奇數(shù)。根據(jù)c=a*b,那么a或者b中必有一個小于c開平方

#include <stdio.h>

# include<math.h>//sqrt函數(shù)在此函數(shù)庫中

int main()

{

       int count = 0;

       int i = 0;

       for (i = 101; i <= 200; i+2)

       {

              int j = 0;

              for (j = 2; j <= sqrt(i) ; j++)

              {

                      if (i%j == 0)

                      {

                             break;

                      }

              }

              if (j >sqrt(i))

              {

                      count++;

                      printf("%d\n", i);

              }

       }

       printf("count=%d\n", count);

       return 0;

}

6.編寫程序數(shù)一下1-100之間所有的整數(shù)中出現(xiàn)了多少個數(shù)字9

#include<stdio.h>

int main()

{

       int count = 0;

       int i = 0;

       for (i = 1; i <= 100; i++)

       {

              if (i % 10 == 9)

              {

                      count++;

              }

              if (i / 10 == 9)

              {

                      count++;

              }

       }

       printf("%d\n", count);

       return 0;

}

7.計算1/1-1/2+1/3+1/4+1/5+……+1/99+1/100的值,打印出結(jié)果

#include<stdio.h>

int main()

{

       int i = 0;

       double sum = 0.0;

       int flag = 1;

       for (i = 1; i <= 100; i++)

       {

              sum += flag*(1.0 / i);//此處必須是1.0,否則結(jié)果都是不對的

              flag = (-flag);

       }

       printf("%lf\n", sum);

       return 0;

}

8.求10個整數(shù)中的最大值

#include<stdio.h>

int main()

{

       int i = 0;

       int arr[] = { 1,2,3,4,5,6,7,8,9,10 };

       int sz = sizeof(arr) / sizeof(arr[0]);

       int max = arr[0];

       for (i = 0; i <= 10; i++)

       {

              if(max<arr[i])

              max = arr[i];

       }

       printf("%d\n", max);

       return 0;

}

輸入10個數(shù)字,并且找出其中的最大值

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main()

{

       int i = 0;

       int arr[10] = { 0 };

       printf("請輸入數(shù)字:");

       for (i = 0; i < ; i++)

       {

              scanf("%d", &arr[i]);//切勿忘記加上取地址運算符

       }

       int max = arr[0];

       for (i = 1; i < 10; i++)

       {

              if (arr[i]>max)

              {

                      max = arr[i];

              }

       }

       printf("max=%d\n", max);

       return 0;

}

9.輸出乘法口訣表

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main()

{

       int i = 0;

       int j = 0;

       for (i = 1; i < 10; i++)

       {

              for (j = 1; j < i+1; j++)

              {

                      printf("%d*%d=%2d  ", i, j, i*j);//輸出為%2d表示的是輸出為兩個字符,不夠兩個字符的,自動補一個空格。%-2d是輸出左對齊

              }

              printf("\n");

       }

       return 0;

}

10.設(shè)計一個猜數(shù)字游戲

#define _CRT_SECURE_NO_WARNINGS//scanf所在的頭文件

#include<stdio.h>//srand函數(shù)所在的頭文件

#include<time.h>//time函數(shù)所在的頭文件

#include<stdlib.h>//rand函數(shù)所在的頭文件

void menu()

{

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

              printf("***         1.play         0.exit        ***\n");

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

}

void game()

{

       //時間戳:當前時間-1970年1.1 0:0:0 時間差換算成秒后的數(shù)字。

       int ret = 0;

       int guess = 0;

       printf("猜數(shù)字\n");

        ret = rand()%100+1;//生成隨機數(shù),生成隨機數(shù)的范圍是0-0x7fff,即轉(zhuǎn)換為十進制是32767,對100取余,使其輸出1-100以內(nèi)的隨機數(shù)

       while (1)

       {

              scanf("%d", &guess);

              if (guess < ret)

              {

                      printf("猜小了\n");

              }

              else if (guess > ret)

              {

                      printf("猜大了\n");

              }

              else if (guess == ret)

              {

                      printf("恭喜你,猜對了\n");

                      break;

              }

       }

}

int main()

{

       //猜數(shù)字游戲

       //1.電腦會生成一個隨機數(shù)

       //2.猜數(shù)字

       int input = 0;

       srand((unsigned int)time(NULL));//設(shè)置時間起點

       do

       {

              menu();

              printf("請選擇:");

              scanf("%d", &input);

              switch (input)

              {

                             case 1:

                                    printf("開始游戲\n");

                                    game();

                                    break;

                             case 0:

                                    printf("退出游戲\n");

                                    break;

                             default:

                                    printf("您輸錯了,請重新輸入\n");

                                    break;

              }

       } while (input);

       return 0;

}

11.一個關(guān)機程序

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h> 

#include <stdlib.h>//system 函數(shù)所在的頭文件

#include <string.h>//strcmp函數(shù)所在的頭文件

int main()

{

       char input[20] = { 0 };

       system("shutdown -s -t 60");//此處一定要注意,命令的格式,空格鍵不能敲錯

again:

       printf("提示??!!您的電腦將在1分鐘后關(guān)機,如果您輸入“我是豬”可以取消關(guān)機\n");

       scanf("%s", input);

       if (strcmp(input, "我是豬") == 0)

       {

              system("shutdown -a");

       }

       else

       {

              goto again;

       }

       return 0;

}

“C++分支和循環(huán)語句怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

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

c++
AI