栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

控制语句-辅助控制语句

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

控制语句-辅助控制语句

控制语句-辅助控制语句

1、学习目标

  • 掌握break语句的用法
  • 掌握continue语句的用法
  • 掌握return语句的用法
  • 总结与思考

2、break语句

  • 用于从循环体内跳出循环体,即提前结束一层循环。

  • break只能用在循环语句switch语句中。

  • 例子:打印出半径不超过10,面积小于100的圆。

    #include 
    #define PI 3.14
    
    int main()
    {
        int r,area;
    
        for(r = 1; r <= 10; r++){
            area = PI*r*r;
        
            if(area > 100)
                break;
            printf("r = %d,area = %dn", r, area);
        }   
        return 0;
    }
    

    运行结果:

    fuzhu_control$ ./app
    r = 1,area = 3
    r = 2,area = 12
    r = 3,area = 28
    r = 4,area = 50
    r = 5,area = 78
    
  • 判断素数

    在一个大于1的自然数中,除了1和此数自身外,没法被其他自然数整除的数。

    也就是说,只有两个正因数(1和该数本身)的自然数即为素数。比1大但不是素数的数称为合数,1和0既非素数也非合数。

    对于一个大于或等于3的正整数,判断它是不是一个素数。

    分析:首先输入整数n;设置变量i = 2;n被i除,得余数r,如果r = 0,则打印“n不是素数”,算法结束,否则执行i++;如果i<=√n(根号n),返回n被i除,得余数r,否则打印“n是素数”,然后算法结束。

    #include 
    #include 
    
    int main()
    {
        int n, i = 2;
    
        printf("Please input n(>3):");
        scanf("%d", &n);
    
        while(i <= sqrt(n)){
            if(n % i == 0)
                break;
            i++;
        }   
        if(i <= sqrt(n))
            printf("%d not sushun",n);
        else
            printf("%d is sushun",n);
    
        return 0;
    }
    

    运行结果:

    fuzhu_control$ ./app
    Please input n(>3):4
    4 not sushu
    
    /fuzhu_control$ ./app
    Please input n(>3):5
    5 is sushu
    

3、continue语句

  • 结束本次循环,接着判定下一次是否执行循环。

  • 注意continue与break的区别

    • continue只结束本次循环,而break终止本层循环

    • 例子:打印出100到110之间不能被3整除的所有数。(注意观察continue和break的运行结果的不同)

      #include 
      
      int main()
      {
          int n;
      
          for(n = 100; n <= 110; n++){
          
              if(n % 3 == 0)
                  continue;//结束本次循环,判断进行下一轮循环
            	//	break; //直接跳出本层循环
              printf("%dn", n);     
          }   
      
          return 0;
      }
      

      运行结果:

      continue:
      /fuzhu_control$ ./app
      100
      101
      103
      104
      106
      107
      109
      110
        
      break:
      $ ./app
      100
      101
      
  • 实例:对判断素数的程序进行完善,若用户输入的不是整数,需重新输入。

    分析:假如用户输入的是字符型w,此时scanf("%d",&n) 不接收该字符,需要将w清出缓冲区,程序才可以继续运行下去。

    ​ 如何判断scanf接收到的个数呢?

    ​ 用一个标记来接收scanf的个数,如ret=scanf("%d", &n);若用户输入的是w,则ret=0;若用户输入的是5,则ret=1。

    • 例1:使用while循环+break语句+continue语句
    #include 
    #include 
    
    int main()
    {
       int n, i, tmp;
    
       while(1){
                 printf("Please input n(>3):");
                 if(scanf("%d", &n) == 0){
                     if(getchar() == '#')
                          break;
                     else{
                           printf("input error!n");
                           continue;
                            }
                    }
    
                    i = 2;
                    tmp = sqrt(n);
    
                    while(i <= tmp){
                        if(n % i == 0)
                                break;
                        i++;
                    }
                    if(i <= tmp)
                        printf("%d not sushun",n);
                    else
                        printf("%d is sushun",n);
            }
        return 0;
    }
    

    运行结果:

    ./app
    Please input n(>3):5
    5 is sushu
    Please input n(>3):4
    4 not sushu
    Please input n(>3):w
    input error!
    Please input n(>3):#
    ubuntu16@ubuntu:~/Desktop/cbase/control_statement/fuzhu_control$ 
    
    • 例2:使用goto循环语句
    #include 
    #include 
    
    
    int main()
    {
        	int n, i, tmp;
    
          while(1){
    loop:
               printf("Please input n(>3):");
               if(scanf("%d", &n) == 0){
                   if(getchar() == '#')
                        return 0;
                   else
                        printf("input error!n");
                        //  getchar();
                       goto loop;
               }
    
               i = 2;
               tmp = sqrt(n);
    
               while(i <= tmp){
                   if(n % i == 0)
                        	break;
                   i++;
               }
               if(i <= tmp)
                    printf("%d not sushun",n);
               else
                    printf("%d is sushun",n);
            }
      return 0;
    }
    

    运行结果:

    $ ./appPlease input n(>3):w
    input error!
    Please input n(>3):5
    5 is sushu
    Please input n(>3):#
    ubuntu16@ubuntu:~/Desktop/cbase/control_statement/fuzhu_control$ 
    

4、return语句

  • return语句的一般形式:return(<表达式>)

  • 主要用于终止包含它的函数的执行

  • 若终止的为主函数,则主程序结束

    例子:

    #include 
    #include 
    
    int fun(){
        int r = 5;
        return r;
    }
    
    int main()
    {
    		int n, i, tmp;
    		int ret;
    
        ret = fun();
        printf("ret = %dn", ret);
    
        while(1){
                  printf("Please input n(>3):");
                  if(scanf("%d", &n) == 0){
                      if(getchar() == '#')
                           return 0;
                      else{
                             printf("input error!n");
                             continue;
                            }
                    }
    
                   i = 2;
                   tmp = sqrt(n);
    
                   while(i <= tmp){
                       if(n % i == 0)
                               break;
                       i++;
                    }
                   if(i <= tmp)
                       printf("%d not sushun",n);
                   else
                       printf("%d is sushun",n);
            }
            return 0;
    }
    

    运行结果:

    $ ./app
    ret = 5
    Please input n(>3):5
    5 is sushu
    Please input n(>3):#
    ubuntu16@ubuntu:~/Desktop/cbase/control_statement/fuzhu_control$ 
    

5、总结与思考

  • 主要介绍了C语言中的辅助控制语句,包括break语句,continue语句和return语句。
  • 思考:使用break语句如何跳出多层循环?
    • 依次跳出内层循环和外层循环。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529247.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号