成为C++高手之if与switch

计算器第三版

上一节中的这一部分:

    //跟据运算符进行不同的运算
        if(opt == 1){
            //加
            result = number1+number2;
        }
        if(opt == 2){
            //减
            result = number1-number2;
        }
        if(opt == 3){
            //乘
            result = number1*number2;
        }
        if(opt == 4){
            //除,现在只能整除
            result = number1/number2;
        }

有点问题,虽然逻辑上没问题,但是运行不高效。因为如果opt==1,那么加运算被执行,那么其它的运算肯定不用再看了,但上面的代码依然会执行后面的判断。浪费CPU啊。这样改就OK了:

    //跟据运算符进行不同的运算
        if(opt == 1){
            //加
            result = number1+number2;
        }else if(opt == 2){
            //减
            result = number1-number2;
        }else if(opt == 3){
            //乘
            result = number1*number2;
        }else if(opt == 4){
            //除,现在只能整除
            result = number1/number2;
        }

加了else表示if不成立时才执行。效率变高了。其实可以把运算符不在范围内时的提示功能也结合进来,变成这样:

int main(void)
{
    //保存用户输入的数
    int number1;
    int number2;
    int opt;//运算符

    //提示用户输入第一个数:
    printf("请输入第一个数:\n");
    int r =scanf("%d",&number1);
    //查看Scanf是否收到了正确的数
    if(r==0){
        printf("别调皮,这样不好玩,我走了\n");
        //程序退出
        return 0;
    }

    //提示用户输入第二个数
    printf("请输入第二个数:\n");
    r = scanf("%d",&number2);
    if(r==0){
        printf("别调皮,这样不好玩,我走了\n");
        //程序退出
        return 0;
    }

    //提示用户输入运算符
    printf("请输入运算符(1234分别对应加减乘除):\n");
    r = scanf("%d",&opt);
    if(r==0){
        printf("运算符也是数字,别搞错好吗?你这样让我怎么混? 我走了\n");
        //程序退出
        return 0;
    }

    //程序运行到这里说明两次输入都正确

    int result;//存放计算结果

    //跟据运算符进行不同的运算
    if(opt == 1){
        //加
        result = number1+number2;
    }else if(opt == 2){
        //减
        result = number1-number2;
    }else if(opt == 3){
        //乘
        result = number1*number2;
    }else if(opt == 4){
        //除,现在只能整除
        result = number1/number2;
    }else{
        printf("运算符必须是1,2,3,4之一才行!走了\n");    
        return; //退出
    }

    //输出结果
    printf("%d+%d = %d\n",number1,number2,result);
    return 0;
}

最后的else表示当上面所有的判断都不成立时执行。

计算器第四版

条件语句还有一种写法:switch…case。判断运算符的部分适合用switch …case :

//跟据运算符进行不同的运算
    switch(opt){
    case 1:
        //加
        result = number1+number2;
        break;
    case 2:
        //减
        result = number1-number2;
        break;
    case 3:
        //乘
        result = number1*number2;
        break;
    case 4:
        //除,现在只能整除
        result = number1/number2;
        break;
    default:
        printf("运算符必须是1,2,3,4之一才行!走了\n");    
        return; //退出
    }

   //输出结果
   printf("%d+%d = %d\n",number1,number2,result);

Switch(opt)表示判断opt的值。case中的break表示跳出。如果没有break,语法没错,但是逻辑出错,不跳出的话,就会继续执行下面的case。defult相当于上一节中的else部分。

Switch…case 只能判断相等的条件,if可以判断任何条件,比如等于,不等于,大于,小于等,所以if完全可以替换switch,反过来却不行。

注意,本系列文章必须结合视频教程 http://edu.csdn.net/course/detail/2057 才能取得快速入门的效果。欢迎加入群535807023讨论。
上一篇:成为C++高手之条件语句
下一篇:成为C++高手之宏与枚举

猜你喜欢

转载自blog.csdn.net/nkmnkm/article/details/51371353