中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

C++分支和循環語句怎么使用

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

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

生活中存在三種語言結構

(1)順序結構

(2)選擇結構<——>分支語句:if   switch    

(3)循環結構<——>循環語句:while      for      do while         goto 

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

 if 語句

語法結構:

  • if(表達式)

       語句;

  • if(表達式)    

            語句1;

        else

            語句2;

  • if (表達式1)

            語句1;

         else if(表達式2)

             語句2;

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

               語句3;

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

C++分支和循環語句怎么使用

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

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

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

練習

1.判斷一個數是否為奇數?

#include <stdio.h>

int main()

{

    int num=0;

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

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

    if (num%2==1)

    {

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

    }

    else

    {

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

    }

    return 0;

}

2.且輸出1-100之間的奇數。

#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):

              內容;

                break;

    case (語句3):

               內容;

                break;

    case(語句4):

                內容;

                break;

    ……

     default;// 可有可無

              內容;

               break;

}

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

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

while循環

while 語法結構:

while (表達式)

           循環語句;

只有在表達式為真的時候,才會執行循環語句,知道發現表達式為假的時候,表達式便不再執行,結束循環。

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

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

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

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

int main()

{

    int ch=0;

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

{

    putchar(ch);

}

return 0;

}

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

getchar與scanf的區別:

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

getchar函數是一位一位的讀取字符的。

#include <stdio.h>

int main()

{

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

    {

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

            continue;

        putchar(ch);

    }

    return 0;

}

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

for循環

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

            {

                循環語句;

            }

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

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

有一個小區別:

#include <stdio.h>

        int main()

    {

        int i=0;

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

        {

            if (i==5)

                continue;

            printf("%d",i);

        }

        return 0;

    }

此結果的輸出是1 2 3 4 6 7 8 9 10 因為在i=5的時候遇到了continue之后直接跳轉到了變量調整部分i++那里,所以,這個時候變量的值變為了6,繼續輸出。

#include <stdio.h>    

            int  main()

        {

            int i=1;

            while (i<=10)

            {

                if(i==5)

                    continue;

                printf("%d",i);

                i++;

             }

          }

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

for語句循環控制變量的一些建議:

  • 不可在for循環體內修改循環變量,防止for循環失去控制。

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

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

請問一下代碼循環了多少次?

#include <stdio.h>

int main()

{

     int i=0;

     int k=0;

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

     k++;

return 0;

}

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

do while 循環

語法:do 

            {

                 循環;

             }  

               while()

練習題

1.        從鍵盤輸入一個數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.在一個有序數組中查找具體的某個數字n,編寫int binsearch(intx,  int v[],int n);功能:在v[0]<=v[1]<=v[2]<=……v[n-1]的數組中查找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所在的庫函數

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

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

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

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");//表示在輸出一次結果后清屏

        left++;

        right--;

    }

    return 0;

}

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

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

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

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

int main()

{

    int i=0;

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

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

    {

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

        scanf("%s",password);

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

        {

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

            break;

        }

        else

        {

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

        }

    }

    if (i==3)

    {

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

    }

    return 0;

}

goto 語句

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

分支和循環的作業和練習

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

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

int main()

{

    int a=0;

    int b=0;

    int c=0;

    printf("請輸入三個數:\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的倍數的數字

#include <stdio.h>

int main()

{

    int i=0;

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

    {

        if (i%3==0)

        {

            printf("%d",i);

        }

    }

    return 0;

}

3.給定兩個數,求這兩個數的最大公倍數.

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

#include <stdio.h>

int main()

{

       int a = 0;

       int b = 0;

       int temp = 0;

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

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

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

       {      

              a = b;

              b = temp;

       }

       printf("公倍數為:%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之間的素數

#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;

}

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

#include <stdio.h>

# include<math.h>//sqrt函數在此函數庫中

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.編寫程序數一下1-100之間所有的整數中出現了多少個數字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的值,打印出結果

#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,否則結果都是不對的

              flag = (-flag);

       }

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

       return 0;

}

8.求10個整數中的最大值

#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個數字,并且找出其中的最大值

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main()

{

       int i = 0;

       int arr[10] = { 0 };

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

       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.設計一個猜數字游戲

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

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

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

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

void menu()

{

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

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

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

}

void game()

{

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

       int ret = 0;

       int guess = 0;

       printf("猜數字\n");

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

       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()

{

       //猜數字游戲

       //1.電腦會生成一個隨機數

       //2.猜數字

       int input = 0;

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

       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.一個關機程序

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h> 

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

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

int main()

{

       char input[20] = { 0 };

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

again:

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

       scanf("%s", input);

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

       {

              system("shutdown -a");

       }

       else

       {

              goto again;

       }

       return 0;

}

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

向AI問一下細節

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

c++
AI

武冈市| 扎兰屯市| 望谟县| 隆尧县| 工布江达县| 宝坻区| 拜泉县| 房山区| 宜兰县| 连州市| 农安县| 东安县| 定州市| 平阳县| 灵山县| 阿坝| 清丰县| 图木舒克市| 丹巴县| 九龙城区| 武城县| 中山市| 韩城市| 岳西县| 嘉善县| 五莲县| 浦东新区| 永兴县| 大邑县| 来凤县| 嘉祥县| 三门峡市| 济宁市| 南京市| 杭锦后旗| 沧源| 微山县| 宜川县| 东至县| 岗巴县| 钟祥市|