• 【C#学习笔记】【5】找出0-100以内的所有的能被3整除或者被5整除余2的数(一)(流程控制)


    我们思考一下怎么写这个程序。流程如下:

    Sample Flowchart Template (1)

    解释一下上面的流程图。

    首先声明变量a=0;

    判断一下a是否在0到100;

    如果不在,则结束,如果在的话,我们再判断一下a是否能被3整除或者被5整除余2;

    如果上一步真,则输出a,并且执行i++,然后循环至第二步,如果上一步为假,那么直接执行i++;

    直至程序结束。

    以上的过程不是很难理解,多看几次就明白了。问题在于我们之前学的知识无法解决这里的判断或者循环问题。今天我们就来学流程控制。

     

    判断或者选择(if   esle)

    先来介绍其语法格式,常见的有两种:

    第一种:

    if (这里写逻辑表达式)
    {
        当上面逻辑表达式结果为真的时候,执行这里的代码
    }
    else
    {
        当上面逻辑表达式结果为假的时候,执行这里的代码
    }

    第二种:

    if (这里写逻辑表达式1)
    {
        当上面逻辑表达式1结果为真的时候,执行这里的代码
    }
    if (这里写逻辑表达式2)
    {
        当上面逻辑表达式2结果为真的时候,执行这里的代码
    }
    ......
    else
    {
        当上面逻辑表达式结果全部为假的时候,执行这里的代码
    }

    当然,还有其他的变种,也就是灵活运用的结果。例如第一种的嵌套,还有就是只有if语句,省略了else语句。

    下面我们写几个例子:

    例1  给定一个数,判断是否是偶数还是奇数,并输出结果

    这里我们先不通过键盘输入数,先写死到程序里,例如下面的程序:

    int a = 7;
    if (a % 2 == 0)
    {
        Console.WriteLine("这个数是偶数");
    }
    else
    {
        Console.WriteLine("这个数是奇数");
    }

    分析:给定这个数后,我们要先判断是不是偶数。(怎么判断呢,当然是除2取余数啦)我们把条件判断写在if后面的圆括号里面。如果是真的,那就执行if下面的花括号内的内容,也就是输出这个数是偶数,否则执行else部分,输出这个数是奇数(除了奇数不就是偶数么,莫非你还想说有小数?)

    例2 给定一个数,判断能否被3整除,如果能,则输出可以被3整除,如果能被5整除,再输出可以被5整除,否则输出此数既不是3的倍数,也不是5的倍数

    先来分析一下,这个题需要判断两次,第一次是3的倍数,第二次是5的倍数,很显然,需要if的第二种格式。代码如下:

    int a = 7;
    if (a % 3 == 0)
    {
        Console.WriteLine("这个数是3的倍数");
    }
    if (a % 5 == 0)
    {
        Console.WriteLine("这个数是5的倍数");
    }
    else
    {
        Console.WriteLine("这个数是既不是3的倍数也不是5的倍数");
    }

    我想你写的和我的是一样的。

    从上面两个例子看出来,选择或者判断流程不是很难,只要给定判断条件,就可以进行判断了。

    思考下面的一个问题,学校里在进行成绩分级时通常这么做,如果你是优,则代表你是90-100的分数段,如果是良,则80-89,中70-79,及格60-69,不及格60一下,那么我们怎么用程序表达呢?

    你是否想用第二种形式的呢?但是我觉得还是太麻烦,得写5个if,是否有简单的写法呢?先看我给出的程序:

    string score = "";
    switch (score)
    {
        case "": Console.WriteLine("你的成绩在90-100");
            break;
        case "": Console.WriteLine("你的成绩在80-89");
            break;
        case "": Console.WriteLine("你的成绩在70-79");
            break;
        case "及格": Console.WriteLine("你的成绩在60-69");
            break;
        case "不及格": Console.WriteLine("你的成绩在0-59");
            break;
        default: Console.WriteLine("你给的等级不存在!");
            break;
    }

    哈哈,貌似也不简单。来吧,分析一下这个语法结构。(由于等级无法用整数变量表示,所以我用的字符串类型,string,string赋值时需要双引号,你还记得这点么?)

    首先是witch关键字,后面有个括号,这个括号里不能放if里的那种条件表达式,这里只能是一个变量,而后面的花括号里,才要进行判断。

    花括号里优三个关键字,case,break和default。case后面跟的是一个值,也就是上面变量的值,如果那个值等于这个,则执行后面的语句,然后紧跟break,跳出判断。

    最后的default是在前面的值都无法匹配时执行的。当然,你可以省略此句。

    所以switch的判断适合这种定值匹配的,也就是说变量的值是固定个数的,这就是和if的区别。

    if和?:运算符的区别

    还记得上节中的三元运算符找最大值得例子么,我们可以用if改写。这里有个结论,所有的三元运算符都可以用if改写,反之不成立。改写的代码如下:

    int a = 2;
    int b = 3;
    int max;
    //max = a > b ? a : b;这是我们上节中的写法
    if (a > b)
    {
        max = a;
    }
    else
    {
        max = b;
    }

    今天的写法更清晰明了吧。但是三元运算符更简洁。至于选哪种,你自己决定吧。

    本节的内容不多,但是难度大。主要是对程序运行过程的理解,和语法的记忆。循环下节中介绍。

    总结:

    1. 判断选择的两种写法(if…else…)
    2. 定值判断(switch…case…)
    3. 三元运算符和if的相互转化

    练习:

    1. a=5,b=4,c=7,用程序判断这三边是否可以组成三角形,如果可以则输出能组成三角形,如果不能,则输出不能组成三角形。(两边之和大于第三边,两边之差小于第三边)
    2. 已知点(3,-5),用程序判断其在直角坐标系的第几象限,并输出结果。
    3. a=5,b=4,c=7,找出最大值输出。
    4. 已知一元二次方程的系数为A=10,B=-3,C=4,如果方程有实数根,则求出结果,如果没有则输出无实数根。

    本文为原创文章,允许转载,转载时请注明转载自http://www.cnblogs.com/zp646858695尊重作者劳动成果。
    您可以收藏我的博客或者关注和订阅,每天都会发布最新内容

  • 相关阅读:
    @ControllerAdvice + @ExceptionHandler 使用
    将博客搬至CSDN
    Docker pull网络错误
    Centos7.5安装Docker
    Oracle18c创建不带C##的用户
    Centos7.5静默安装Oracle18c
    nodeJs和JavaScript的异同
    maven项目引入本地包,不使用中央仓库
    java中把指数形式的数字转为正常形式显示
    validateJarFile jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
  • 原文地址:https://www.cnblogs.com/zp646858695/p/4654794.html
Copyright © 2020-2023  润新知