zoukankan      html  css  js  c++  java
  • 条件语句

    if语句

      if语句的3种形式如下:

      第1种形式:

        if(表达式语句

      其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。

      第2种形式:

        if(表达式

          语句1

        else

          语句2

      其语义是:如果表达式的值为真,则执行语句1,否则执行语句2

      第3种形式:

        if(表达式1) 

          语句1

        else if(表达式2) 

          语句2

        else if(表达式3) 

          语句3

          ...

        else if(表达式m) 

          语句m

        else

          语句n

      其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句,然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n,然后继续执行后续程序。

      注意事项:

        (1)3种形式的if语句中在if后面都有”表达式”,一般为逻辑表达式或关系表达式。在执行if语句时先对表达式求解,若表达式的值为0,则按""处理;若表达式的值为非0,则按""处理,执行指定的语句。

        (2)else子句不能作为语句单独使用,它必须是if语句的一部分,与if配对使用。

        (3)ifelse后面可以包含一个或多个内嵌的操作语句,当为多个操作语句时要用”{}”将几个语句括起来成为一个复合语句。

        (4)if语句可以嵌套使用即在if语句中又包含一个或多个if语句,在使用时应注意else总是与它上面的最近的未配对的if配对。

      else子句的配对

        在使用if语句的嵌套时,如果使用了else子句,则else子句会采用就近原则,与其最近的if语句进行配对。如果想要将else子句与其他的if语句配对,则需要使用当前else子句与if语句之间的内容用大括号括起来,这样程序会将大括号中的内容作为复合语句处理,就实现了else子句与if语句的配对。

    #include "stdafx.h"
    #include <iostream>
    
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        int a, b, c, t;
    
        printf("请输入3个数:
    ");
    
        scanf_s("%d%d%d",&a,&b,&c);
    
        if (a < b)
        {
            t = a;
            a = b;
            b = t;
        }
        if (a < c)
        {
            t = a;
            a = c;
            c = t;
        }
        if (b < c)
        {
            t = b;
            b = c;
            c = t;
        }
        
    
        printf("排序如下:
    ");
        printf("%d,%d,%d
    ",a,b,c);
    
        system("Pause");
    
        return 0;
    }

    逻辑运算符

      &&逻辑与,a&&b,若ab为真,则a&&b为真。

      ||逻辑或,a||b,若ab之一为真,则a||b为真。

      !逻辑非,!a,若为真,则!a为假。

      三者的优先次序是:!->&&->||,即"!"为三者中最高的。

    “==”和”=”之间的区别

      “==”为关系运算符,结合方向是”自左至右”;”=”是赋值运算符,结合方向是”自右至左”。

    #include "stdafx.h"
    #include <iostream>
    
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        int year;
    
        printf("请输入年份:
    ");
        scanf_s("%d",&year);
    
        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
            printf("%d年是闰年
    ",year);
        else
            printf("%d不年是闰年
    ", year);
    
        system("Pause");
    
        return 0;
    }
    #include "stdafx.h"
    #include <iostream>
    
    using namespace std;
    
    int Weight(int iArray[], int iNum)
    {
        int iRet;
        int iVar = iNum / 3;
        int jVar,mVar,nVar,kVar;
        jVar = mVar = nVar = kVar = 0;
    
        for (int i = 0; i < iVar; i++)
        {
            jVar += iArray[i];
            mVar += iArray[i + iVar];
            nVar += iArray[i + iVar * 2];
        }
    
        int* pArray = new int[iVar];
    
        if (jVar>mVar)
        {
            kVar = 0;
        }
        else if (jVar < mVar)
        {
            kVar = 1;
        }
        else if (jVar == mVar)
        {
            kVar = 2;
        }
    
        if (iVar == 1)
        {
            iRet = iVar*kVar;
        }
        else
        {
            for (int j = 0; j < iVar; j++)
            {
                pArray[j] = iArray[j + iVar*kVar];
            }
    
            iRet = Weight(pArray, iVar) + iVar*kVar;
        }
    
        delete[] pArray;
    
        return iRet;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        int Ball[] = {2,1,1,1,1,1,1,1,1};
        int iWeightBall = Weight(Ball, 9);
        
        cout << "比较重的小球号码:" << endl;
        cout << iWeightBall << endl;
    
        system("Pause");
    
        return 0;
    }

    break语句

      break语句是程序控制跳转语句,可以跳出语句块,常用于switch语句和循环语句中。当程序达到某一条件时,使用break语句进行跳转,跳出当前语句的执行。

    #include "stdafx.h"
    #include <iostream>
    
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        int bccd = 98;
        printf("单价是多少?
    ");
        int Price;
    
        while (1)
        {
            scanf_s("%d", &Price);
            if (Price > bccd)
            {
                printf("你猜的价格高了!
    ");
            }
            else if (Price < bccd)
            {
                printf("你猜的价格低了!
    ");
            }
            else
            {
                printf("回答正确!
    ");
                break;
            }
        }
    
        system("Pause");
    
        return 0;
    }

    switch语句

      switch语句能够测试一组有序类型(整型、字符型、枚举型、布尔类型等)的数据,发现匹配的常量时,将执行与该常量关联的语句。switch语句的语法如下:

        switch(表达式)

        {

        case 常量1:

          语句;

          break;

        case 常量2:

          语句;

          break;

        ......

        case 常量n:

          语句;

          break;

        default:

          语句;

        }

        其中,表达式必须是有序类型,不能是实数或字符串类型。表达式逐一与case语句部分的常量匹配,如果发现有常量与表达式相匹配,则执行当前case部分的语句,直到遇到break语句为止,或者到达switch语句的末尾(没有遇到break语句)。当表达式没有发现与之匹配的常量时,将执行default部分的代码。default语句是可选的,如果代码中没有提供default语句,并且没有常量与表达式匹配,那么switch语句将不执行任何动作。

      case语句使用技巧

        在switch语句中,如果多个case常量需要进行相同的处理,那么可以将多个case语句组织在一起,中间不加break语句,使多个case语句都可以执行同一个语句块。

    #include "stdafx.h"
    #include <iostream>
    
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        printf("请输入消费金额:
    ");
    
        float dMoney;
        scanf_s("%f",&dMoney);
        int iMoney = dMoney;
        switch (iMoney / 500)
        {
        case 0:
            printf("你的消费没有折扣,金额是:%0.2f
    ",dMoney);
            break;
        case 1:
            printf("你的消费享受9折,金额是:%0.2f,优惠后的金额是:%0.2f
    ",dMoney,dMoney*0.9);
            break;
        case 2:case 3:
            printf("你的消费享受8折,金额是:%0.2f,优惠后的金额是:%0.2f
    ", dMoney, dMoney*0.8);
            break;
        case 4:case 5:
            printf("你的消费享受8折,金额是:%0.2f,优惠后的金额是:%0.2f
    ", dMoney, dMoney*0.7);
            break;
        case 6:case 7:
            printf("你的消费享受8折,金额是:%0.2f,优惠后的金额是:%0.2f
    ", dMoney, dMoney*0.6);
            break;
        default:
            printf("你的消费享受8折,金额是:%0.2f,优惠后的金额是:%0.2f
    ", dMoney, dMoney*0.5);
            break;
        }
    
        system("Pause");
    
        return 0;
    }

    枚举类型

      枚举类型能够将一组枚举常量与一个枚举类型名称关联。枚举类型就像是一个常量的集中营,在这个集中营中,常量被冠名为枚举常量,如果参数以某一个枚举类型定义参数类型,那么在调用该函数时,就只有该集中营的枚举类型作为参数通过,虽然其他常量的值和枚举常量的值可以相同,但是由于不属于当前枚举类型这个集中营,所以在作为参数调用函数时不能通过。使用关键字enum定义一个枚举类型。

      在定义枚举类型时,可以为各个枚举常量提供一个整数值,如果没有提供整数值,默认第一个常量值为0,第二个常量值为1,依此类推。

      为枚举常量赋默认值

        enum RecordsetState {RS_OPEN=3,RS_WAIT,RS_CLOSE=6};

      上面的语句将枚举常量RS_OPEN设置为3,将枚举常量RS_CLOSE设置为6,没有为RS_WAIT提供默认值,RS_WAIT的数值为前一个枚举常量值加1,因此RS_WAIT的数值为4

    #include "stdafx.h"
    #include <iostream>
    
    using namespace std;
    
    typedef enum NUMBER {ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN};
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        NUMBER num = FIVE;
    
        switch (num)
        {
        case SEVEN:
            cout << "    *************    " << endl;
        case SIX:
            cout << "     ***********    " << endl;
        case FIVE:
            cout << "      *********        " << endl;
        case FOUR:
            cout << "       *******        " << endl;
        case THREE:
            cout << "        *****        " << endl;
        case TWO:
            cout << "         ***        " << endl;
        case ONE:
            cout << "          *            " << endl;
        }
    
        system("Pause");
    
        return 0;
    }
  • 相关阅读:
    将博客搬至CSDN
    规范化设计的范式的个人理解
    Codeforces Round #422 (Div. 2) D题要补的知识点
    Codeforces第一次rated比赛
    Codeforces 818B Permutation Game
    USACO Dynamic Programming (1)
    关于数据库中除法的一个小问题
    USACO hamming
    USACO Healthy Holsteins
    USACO Sorting a Three-Valued Sequence
  • 原文地址:https://www.cnblogs.com/-soy/p/4856583.html
Copyright © 2011-2022 走看看