zoukankan      html  css  js  c++  java
  • 分支结构、循环结构

    一.判断条件不能多过3个。嵌套不能多过3层。必须带上花括号{}。

    二.分支结构中:

    if.../if...else...用于条件判断。switch用于无规律的条件、情况匹配、等号判断。if...else if...else...情况匹配、条件判断都有。


    if...:条件正确,执行if其后{}里的语句;条件错误,不执行{}里的语句。

    if...else...:条件正确,执行if其后{}里的语句;条件错误,执行else其后{}里的语句。

    if...else if...else:

    switch(整形表达式)
    {
       case 1:
       { 
          语句;
          break;
       }
       default:
       {
          语句;
          break;
       }  
    }

    三.循环结构

    (1)while:条件为假时,跳出循环体;条件为真时,执行循环体。
    while(条件)
    {
    循环体;
    }
    (2)do...while:最少执行一次循环体。条件为假时,跳出循环体;条件为真时,执行循环体。

    do
    {
    循环体;
    }
    while(条件);

    (3)for:执行顺序1234,1只执行1次。条件为假时,跳出循环体;条件为真时,执行循环体。
    for(1;2条件;4)
    {
    3循环体;
    }

    (4)break:终止循环体,其后的代码都不用执行。continue:终止本次循环进入下次循环。return:返回函数值,跳出函数,结束多线程。
    (5)while常用于某值是否存在、多个条件的时候。do...while常用于读取文件。for常用于知道次数。
    (6)解题思路:先初始化变量和写出输出目标。列出一些好计的数,寻找规律(规律是写出来的,不是看出来的)或验证结果(类比)。列出数学方程(以一个未知数一个方程的形式),再转化成表达式。最后判断是否需要附件条件。
    例1:1加到100
    1+2+...+5
    for(int i = 1;i <= 5;i++){}

    例2:求个十百位的数

    153 / 100 = 1              →百→               b = n / 100;

    (153 - 100) / 10 = 5       →十→          s = (n - (b * 100)) / 10;

    (153 - 100) % 10 = 3      →个→          g  = (n - (b * 100)) % 10;

    例3:打印菱形 

        *    
      * * *  
    * * * * *
      * * *  
        *    

      分上下两部分打印:由结构可知先打印" ",观察数据,共五列,利用行的自加自减与列的自加自减特性,确定条件。例如:自增与自减的和可能会是同一个数。

      

    i   *   ""
    0   1   2
    1   3   1
    2   5   0
             
    0   3   1
    1   1   2
             

      ""=3-i-1  *=(i*2)+1    

      ""=i+1  *=3-(2*i)

          for(i=0;i<3;i++){
       for(j=0;j<3-i-1;j++){   //j=2;j>i;j--
        printf(" "); }
       for(k=0;k<i*2+1;k++){
        printf("*"); }
            printf(" ");}
     
         for(i=0;i<2;i++){
       for(j=0;j<i+1;j++) {
        printf(" ");  }
       for(k=0;k<3-(2*i);k++){
        printf("*"); }
            printf(" ");}

      四.

        /*分支结构
        //if
        int money = 1000;
        if(money >=1000)
        {
            printf("打八折
    ");
        }
        //if...else...老师来且天气好
        bool teacher = true;
        bool sun = true;
        if (teacher && sun) {
            printf("class
    ");
        }
        else
        {
            printf("no class to rest
    ");
        }
        
        //if...else if...else...
        //老师来或者天气好
        if(teacher )
        {
            printf("class
    ");
    
        }
        else if (sun)
        {
            printf("class
    ");
            
        }
        else
        {
            printf("no class
    ");
            
        }
        //1,3,5上课,2,4上机
        int day = 5;
        if(day <= 7)
        {
            if (day % 2 == 1) {
                printf("上课
    ");
            }
            else if (day % 2 == 0)
            {
                printf("上机
    ");
                
            }
            else
            {
                printf("自由活动
    ");
            }
        }
        else
        {
            printf("条件有误
    ");
        }
        
        //1,3,5上课,2,4上机
        day = 2;
        
        switch (day) {
            case 1:
            case 3:
            case 5:
            {
                printf("上课
    ");
                break;
            }
            case 2:
            case 4:
            {
                printf("上机
    ");
                break;
            }
                
            default:
                break;
        }
         */
    //     车位号限行
    //     星期一:2、7
    //     星期二:3、8
    //     星期三:4、9
    //     星期四:5、0
    //     星期五:1、6
         int number,weekday;
         int flag = 0;
         printf("请输入车位号和工作日,以逗号隔开
    ");
         scanf("%d,%d",&number,&weekday);
         switch(number)
         {
         case 2 : case 7 :
         if(weekday == 1)
         {
         flag=1;
         }
         break;
         case 3 : case 8 :
         if(weekday == 2)
         {
         flag=1;
         }
         break;
         case 4 : case 9 :
         if(weekday == 3)
         {
         flag=1;
         }
         break;
         case 5 : case 0 :
         if(weekday == 4)
         {
         flag=1;
         }
         break;
         case 1 : case 6 :
         if(weekday == 5)
         {
         flag=1;
         }
         break;
         default:
         printf("你输入的尾号有问题
    ");
         break;
         }
         if(flag == 1)
         {
         printf("对不起,你的车今天限行,请选择其他交通方式
    ");
         }
         else
         {
         printf("你的车今天不限行,但建议坐公交
    ");
         }
        
        /*~~循环结构~~
    //1+...+10 //while int sum = 0; int i = 1; while (i <= 10) { sum += i; i++; } printf("sum = %d ",sum); //do...while sum = 0; i = 1; do { sum += i; i++; } while (i <= 10); printf("sum = %d ",sum); //for //10以内第一个偶数 int var = 0; for (int i = 1; i <= 10; i++) { if (i % 2 == 0) { var = i; break; } printf("------------- "); } printf("var = %d ",var); //10以内的奇数 for (int i = 1; i <= 10; i++) { if (i % 2 == 0) { continue; } else { printf("%d,",i); } }
    */

     (5)

    //用分支结构实现输出三个数中的最大值。
        int a ,b ,c;
        printf("请输入三个整数,以逗号隔开");
        scanf("%d,%d,%d",&a,&b,&c);
        if(a < b)
        {
            a = b;
        }
        if(a < c)
        {
            a = c;
        }
        printf("max = %d
    ",a);
    
    /*第二种方法
      
      

    int a = 0,b = 0,c = 0,max = 0;
      printf("请输入三个整数,以逗号隔开");
        scanf(
    "%d,%d,%d",&a,&b,&c);
    if(a > b)
        {
         max = a;   
        }
       else
        {
         if(b > c)
          {
            max = b;
          }
         else
          {
            max = c;
          }
      
        }
       printf("max = %d",max);
    */
    //计算1-100间所有奇数的和 int i = 1,sum = 0; for (;i <= 100;i++) { if(i % 2 == 0) { continue; } else { sum +=i; } } printf("sum = %d ",sum); //编程求1到100之间能被3整除的数。 i = 1; for (; i <= 100; i++) { if (i % 3 != 0) { continue; } else { printf("%d,",i); } } //从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各多少张。(输出面额最大值:比如345.78=100*3+10*4+5*1+0.5*1+0.1*2+0.01*8) double count = 0.0,lastmoney = 0.0; int yb = 0,ws = 0,sy = 0,wy = 0,ey = 0,yy = 0,wj = 0,yj = 0,wf = 0,yf = 0; scanf("%lf",&count); lastmoney = count; yb= (int)(count / 100); count = count - (100 * yb); ws = (int)(count / 50); count = count - (50 * ws); sy = (int)(count / 10); count = count - (10 * sy); wy = (int)(count / 5); count = count - (5 * wy); ey = (int)(count / 2); count = count - (2 * ey); yy = (int)(count / 1); count = count - (1 * yy); wj = (int)(count / 0.5); count = count - (0.5 * wj); yj = (int)(count / 0.1); count = count - (0.1 * yj); wf = (int)(count / 0.05); count = count - (0.05 * wf); yf = (int)(count / 0.01); count = count - (0.01 * yf); printf("%lf = yb=%d-ws=%d-sy%d-wy%d-ey=%d-yy=%d-wj=%d-yj=%d-wf=%d-yf=%d ",lastmoney,yb,ws,sy,wy,ey,yy,wj,yj,wf,yf); // printf("%d ",(int)168.92 / 100); // printf("%d ",(int)(168.92 -100) / 50); // printf("%d ",(int)(168.92-100-50)/10); // printf("%d ",(int)(168.92-100-50-10)/5); //已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。(a > 0 && c > 0) // int a = 0,b = 0,c = 0; // for (a = 1; a <= 9 ; a++) // { // for (b = 0; b <= 9; b++) // { // for (c = 1; c <= 9; c++) // { // if ((a * 100 + b * 10 + c )+ (c * 100 + b * 10 + a) == 1333 ) // { // printf("%d-%d-%d ",a,b,c); // } // } // } // }
  • 相关阅读:
    「学习记录」《数值分析》第三章计算实习题(Python语言)
    Set原理
    字符串流stringReader
    Collection List接口
    io
    Dubbo 服务容错Hystrix
    Duboo 与springboot整合
    读取配置文件
    springboot 端口号
    springboot 多环境选择
  • 原文地址:https://www.cnblogs.com/huen/p/3481212.html
Copyright © 2011-2022 走看看