C++分支和循环语句怎么使用

发布时间:2022-10-17 16:44:55 作者:iii
来源:亿速云 阅读:189

本篇内容介绍了“C++分支和循环语句怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

生活中存在三种语言结构

(1)顺序结构

(2)选择结构<——>分支语句:if   switch    

(3)循环结构<——>循环语句:while      for      do while         goto 

C语言中0表示假,非0表示为真。(比如说-1表示为真)

 if 语句

语法结构:

       语句;

            语句1;

        else

            语句2;

            语句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 (表达式)

           循环语句;

只有在表达式为真的时候,才会执行循环语句,知道发现表达式为假的时候,表达式便不再执行,结束循环。

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循环的表达式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++分支和循环语句怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. git 本地创建分支和远程分支关联
  2. Gitlab使用和分支管理(三)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:switch分支语句怎么使用

下一篇:怎么用imageIO图像流实现验证码效果

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》