C语言选择结构--RAPTOR算法及if语句

选择结构就是根据给定的判定条件,判断结果,并根据判断的结果来控制程序的流程
二、选择结构的三种情况
选择结构也称为分支结构,可以分为三种情况
1.单分支选择结构(Single Selection)
1)面临的选择是:要么执行一个操作,要么跳过它
a)根据苹果的质量好坏决定买或者不买
b)根据应聘的表现,单位决定录用还是不录用
2.双分支选择结构(Double Selection)
1)面临的选择是:在两个不同的操作中选择其中的一个来执行
a) 根据苹果的质量好坏决定买多少:多买还是少买
b) 公司根据你的业绩,决定给你发多少奖金:多发还是少发
3.多分支选择结构(Multiple Selection)
1)面临的选择是:2种以上的选择(需要连续执行多个条件判断)
a)高考分批次录取,根据考生填写的多个志愿依次进行录取
b)最想去或最有可能录取的学校和专业通常写在前面,为什么呢?
流程图如下
在这里插入图片描述在这里插入图片描述三、选择结构实例
选择结构实例1:计算机两个数的最大值
1.理解问题
2.制定计划
在这里插入图片描述重点我们来关注,怎么比较a和b的大小,将较大的数存入max
1.利用单分支结构
在这里插入图片描述2.利用双分支结构

在这里插入图片描述四、RAPTOR之选择结构及Raptor中的关系和逻辑运算符
我们的程序对吗?那就是三角形输入的是任意的三个边的数值,那么这三个数值到底能不能够成一个三角形呢?那如果不是三角形的话,我们那样求肯定是不对,也只有能够成三角形我们才能用三角形的公式去求面积。这里就涉及到了分支结构也就是选择结构。
分支结构(selection)图示核心
1.可以按条件判断,分流执行
2.同条件语句判断别True和False
在这里插入图片描述
如上图所示,分支结构的条件一般是由关系运算符和逻辑运算符,用于选择和循环中的条件。
这里的关系运算符也就是判断出关系表达式是否成立,如里成立表达式的值为真,否则为假。逻辑运算符有and、or、not也就是与或非。and(与)就是几个条件共同都满足才行,一个不满足就为假;or(或)就是几个条件有一个满足就行,只有都不满足时是假,not(非)是非真即假,非假即真。关于关系运算符及逻辑运算符这里先做理解,在下个月课程中的运算符一章会做详细讲解。
知道了这些那么我们的求三角形面积的流程图就应该变化为
在这里插入图片描述三角形必须满足三角形的任意两边和应该大于第三边的和;所以输入三条边a、b、c,首先判断任意两边是否大于第三边,当任意两边都大于第三边时,才算是三角形;否则就不构成在三角形。所以条件中应该是一个and的关系,那么我们的Raptor图就应该修改如下:

在这里插入图片描述如上图所示,先在输入a、b、c三边后先来判断能否够成三角形。先画出选择结构,条件在写的时候,因为三个条件必须同时满足,所以这里用and连接,and前后要加空格。
当条件满足那么就是构成三角形,就应该走yes分支,也就是求面积输出,这时可以直接选中图上条件下的三个框,直接拖动到yes分支上即可,最后在no分支上输出不构成三角形即可如下图
在这里插入图片描述执行效果如下图
1:如果输入是1,2,3则不构成三角形,输出不构成三角形。
2:如果输入3,4,5则构成三角形,输出三角形的面积。
五、用Raptor实现简单的选择结构
利用Raptor来实现案例:输入两个数,输出大值
已知解决问题的流程图方式如下:可以是单分支,也可以是双分支
在这里插入图片描述这里用方法一来实现Raptor图的解决办法
过程如下:
第一步:先根据流程图绘制Raptor图:如下
在这里插入图片描述这里会出现一个错误:max can only appear on right side of assignment
意思是:max只能出现在赋值的右边。
这是因为max在Raptor里默认是一个函数,所以出错,这里你只要改个变量名称即可,如max1。
在这里插入图片描述六、用Raptor实现选择结构的嵌套
解决上述问题,首先我们先绘制出流程图:如下
在这里插入图片描述如上图,流程图中可用max,Raptor中要注意绘制Raptor图如下:
在这里插入图片描述七、if语句的三大形式
程序设计语言中选择结构一般有两大语法:一是if语句;二是switch语句。首先我们来学习下if语句,if翻译成中文是如果的意思,现在让你以汉语“如果”造句,你会想到什么呢?如果———就———否则———。
1.单分支语句if
(1)格式
if(表达式)
语句;
如果表达式为真(成立),则只执行语句;否则什么都不做。
注:if后面只有一条语句是,可以不用{},多条语句时一定要加{};所以建议初学者if()后紧接{}。
(2)如下代码,输入一个大于10的数则显示出来,不大于10就不做

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int num;
    printf("请输入一个数:");
    scanf("%d",&num);
    if(num>10)
    printf("你输入的数比10大\n");
}

2.双分支语句if-else
(1)格式
if(表达式)
语句1;
else
语句2;
如果表达式为真(成立),则只执行语句1;否则执行语句2。
注:if后面语句1只有一条语句是,可以不用{},多条语句时一定要加{}; else和if一样,只有一条语句时,可以不用{},多条语句时一定要加{};所以建议初学者if()后接{}再接else再接 {}。
(2)如下代码,输入一个大于10的数则显示比10大,不大于10就输出不比10大

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int num;
    printf("请输入一个数:");
    scanf("%d",&num);
    if(num>10)
printf("你输入的数比10大\n");
else
printf(你输入的数不比10大\n");
}

3.多分支语句if—else if
(1)格式
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
如果表达式1为真(成立),则只执行语句1;否则再次判断表达式2,如果表达式2为真(成立),则执行语句2,否则执行语句3。
注:if—else if与if—else一样,当if后只有一条语句可以不加{},多条必须加{};else后只有一条语句可以不加{},多条必须加{}。
(2)如下代码,输入一个的数,判断是大于10还是等于10还是小于10。

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int num;
    printf("请输入一个数:");
    scanf("%d",&num);
    if(num>10)
printf("你输入的数比10大\n");
else if(num==10)
printf("你输入的数等于10\n");
else
printf("你输入的数小于10\n");
}

4.if语句三大形式的比较
if语句三大形式,依据于不同的条件判断,从上面的分析及代码执行过程中,其实我们也能看出单if其实就是单分支,成立就执行不成立不执行;而if—else 我们也能看出它属于双分支,两条路,成立走一条,不成立走另一条,也就是根据条件选择其一走;而if—else if则是属于多分支,可以有三条以上的路,只是在走每一条路之前先判断相关表达式,如果成立就走相应的路,不成立继续判断第2表达式,再判断,依次类推,直到确定要走那一条(或者都不成立都不走,也就最后没有else)。所以,写程序选择照应的语法,会让你学起来很简单。记住语句格式也是很关键的呀!
5.if语句的灵活应用
试比较如下两段代码:试说下它们的区别;《输入两个数,比较大小

(1)/*单if实现*/
#include "stdio.h"
void main()
{
    int m,n;
    printf("请输入两个数:");
    scanf("%d%d",&m,&n);
    if(m>n)
    {
   		printf("第1个数大于第2个数\n");
    }
    if(n>m)
    {
   		printf("第2个数大于第1个数\n");
    }
    if(m==n)
    {
   		printf("第1个数等于第2个数\n");
    }
}
(2)/* if--else if实现 */
#include "stdio.h"
void main()
{
    int m,n;
    printf("请输入两个数:");
    scanf("%d%d",&m,&n);
    if(m>n)
    {
   		printf("第1个数大于第2个数\n");
    }
    else if(n>m)
    {
   		printf("第2个数大于第1个数\n");
    }
    else if(m==n)
    {
   		printf("第1个数等于第2个数\n");
    }
}

通过以上案例说明,if—else或if—else if都可以转换成多个单if语句。但是在写程序时还是双分支选择if—else ,多分支选if—else if

猜你喜欢

转载自blog.csdn.net/SqrsCbrOnly1/article/details/91362607
今日推荐