条件语句

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;
}
原文地址:https://www.cnblogs.com/-soy/p/4856583.html