c++语言学习(6)--分支结构

一、if语句

1、很多事物都是有一定的逻辑在里面的,比如:

如果天下雨了,那么今天出门就要带雨伞了

如果天气冷了,那么就要增加衣物

如果你的房子有个洞,那么他肯定会漏水。

我们会发现以上的案例都有一个如果,带有一种假设前提。转换成计算机的语言就是

if   <条件>   

  语句;

 

例子 写一个程序,输入的整数如果不能被5整除,就显示相应的信息。

#include "stdio.h"

int main()
{
    int no;

    printf("请输入一个整数:");
    scanf("%d",&no);
    
    if(no%5!=0)
        puts("输入的整数不能被5整除");

    return 0;
}

if 的英语单词的意思就是 如果的意思。

他的语法是:  if (表达式)  语句;

这个就叫做if 语句

画出上述语句的流程图

满足上述条件的时候,no是不能被5 整除的,所以 no%5!=0  叫做条件判断表达式,也叫控制表达式。!= (意思是 不等于)

例子2

输入一个整数,判断是否为奇数,如果为奇数,就显示“是奇数”。

代码如下:

#include "stdio.h"

int main()
{
    int no;

    printf("请输入一个整数:");
    scanf("%d",&no);
    
    if(no%2!=0)
        puts("输入的整数是奇数");

    return 0;
}

 

2、if语句升级版

前面的例子的升级

#include "stdio.h"

int main()
{
    int no;

    printf("请输入一个整数:");
    scanf("%d",&no);
    
    if(no%5!=0)
        puts("输入的整数不能被5整除");
  else
    puts("输入的整数能被5整除");
return 0; }

这里使用的是

if  (表达式)   语句1;      else    语句2;

else 是否则的意思,很显然,这句话的意思是如果条件满足就执行 语句1   ,条件不满足就是执行语句2;

画出流程图

 

奇数  偶数判断

#include "stdio.h"

int main()
{
    int no ;
    
    printf("请输入一个整数:");
    scanf("%d",&no);
    
    if(no%2!=0)
        printf("该数是奇数");
    else
        printf("该数是偶数");

    return 0;
}

---------------------------------------------------------------------------------------------------------------------------

练习1:

写一个程序,输入两个整数,如果后者是前者的约数,就显示“ B是A的约数”,如果不是,就显示“B不是A的约数”。

 

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------

3、非0的判断

判断输入的值是否为0,程序如下

#include "stdio.h"

int main()
{
    int num;

    printf("请输入一个整数:");
    scanf("%d",&num);

    if(num!=0)
        puts("该数不是0");
    else
        puts("该数是0");

    return 0;
}

这个程序中的条件

if(num!=0) 也可以写成

if  (num)

同一个意思,为什么一样?

待解决

 

通过num的值来控制程序的流程走向。

该语句的流程图的走向。以及结构图

 

4、相等运算符

输入两个整数值,判断他们是否相等

代码如下

#include "stdio.h"

int main()
{
    int n1,n2;

    puts("请输入两个整数:");

    printf("整数a:"); scanf("%d",&n1);
    printf("整数b:"); scanf("%d",&n2);

    if(n1==n2)
        puts("他们相等");
    else
        puts("他们不相等");

    return 0;
}

!= 就是 不等于

==  就是  等于的意思

这两个符号就是判断的意思。

以上程序也可以反过来写

 

5、余数的判断

判断输入整数的个位数是否为5,并显示相关的信息。

代码如下

#include "stdio.h"

int main()
{
    int num;
    
    printf("请输入一个整数:");
    scanf("%d",&num);

    if ((num% 10)==5)
        puts("这个整数的个位是5");
    else
        puts("这个整数的个位不是5");

    return 0;
}

 

 

6、关系运算符

什么是关系运算符,就是  >     <     ==     !=      >=       <=

例子 :输入一个整数,判断他的符号。

#include "stdio.h"

int main()
{
    int no;

    printf("请输入一个整数:");
    scanf("%d",&no);

    if(no==0)
        puts("这个数为0");
    else if(no>0)
        puts("这个数为正数");
    else
        puts("这个数为负数"):

    return 0;
}

关系运算 的特点,

no>0   如果这个条件成立,  那么no>0  的结果就是为1    反之为0

这个叫做关系运算,就像是加减乘除一样,不同数字之间会有一个值。

同理,其他的关系也是类似。

 

7、嵌套的if语句

if  条件 

   语句1

else

   语句2

上例中语句2处  用   

 

 

这个if语句代替,这就是嵌套。

更改上例中的  no>0 为  no<0

----------------------------------------------------------------------------------

练习1:

写一段程序,读入一个整数,显示他的绝对值

 

练习2:

写一段程序,读入两个整数,如果A和B相等,就是显示A和B相等,其他的同理

----------------------------------------------------------------------------------------------------------------

嵌套的范例

#include "stdio.h"

int main()
{
    int no;

    printf("请输入一个整数:");
    scanf("%d",&no);

    if(no>0)
        if(no %2==0)
            printf("这个数是偶数 \n");
        else
            printf("这个数是奇数\n");
    else
        printf("这个数不是正数\n");


    return 0;
}

可以在程序中加入大括号  {  }来区分出 嵌套的部分。

 

----------------------------------------------------------------------------------------------------

练习:

确认 相等运算和 关系运算的结果是 1和0

 

---------------------------------------------------------------------------------------------------------------------

8、计算较大值

输入两个整数,显示其中较大的值,代码如下

#include "stdio.h"

int main()
{
    int n1,n2;

    puts("请输入两个整数:");
    printf("整数1:");  scanf("%d",&n1);
    printf("整数2:");  scanf("%d",&n2);

    if(n1>n2)
        printf("较大的数是:%d\n",n1);
    else
        printf("较大的数是:%d\n",n2);

    return 0;
}

 

上述程序的另外一段写法如下:

#include"stdio.h"

int main()
{
    int n1,n2,max;
    
    puts("请输入两个整数:");

    printf("整数1:"); scanf("%d",&n1);
    printf("整数2:"); scanf("%d",&n2);

    if(n1>n2)
        max=n1;
    else
        max=n2;

    printf("较大的数是 %d\n",max);
    return 0;
}

 

 

9、计算3个数的最大值

输入3个整数,显示出其中最大的那个数

代码如下:

#include"stdio.h"

int main()
{
    int n1,n2,n3,max;

    puts("请输入3个整数:");
    printf("整数1:");  scanf("%d",&n1);
    printf("整数2:");  scanf("%d",&n2);
    printf("整数3:");  scanf("%d",&n3);

    max=n1;
    if(n2>max)  max=n2;
    if(n3>max)  max=n3;

    printf("最大值是  %d\n",max);

    return 0;
}

对于这段代码的分析如下

n1-> max

n2  :  max比较,取出二者之间的较大的值,到这一步,max就是 n1 和 n2中的最大值

然后剩下的n3

n3 :  max和签名档两者之中的最大值比较

这种 有点带有循环  重复的感觉

那么,加入我们比较的数字是很多,比如 5个,6个……20个,100个,……10000个,那这种方法就不太合适,这就用其他的方法了。

 

 

 

10、条件运算符

条件运算的基本格式如下:

a?b:c;

如果a不为0,  运算的结果是b,   否则结果为c

例子:用条件运算写一段程序,输入两个程序,计算并显示两个中较大的那个。

程序如下:

#include"stdio.h"

int main()
{
    int n1,n2,max;
    
    puts("请输入两个整数:");
    printf("整数1:");  scanf("%d",&n1);
    printf("整数2:");  scanf("%d",&n2);

    max=(n1>n2)?n1:n2;

    printf("较大的数是 %d\n",max);
    return 0;
}

 

例子2:

差值计算,输入两个整数,保证差值是正数。

#include"stdio.h"

int main()
{
    int n1,n2;

    puts("输入两个整数:");
    printf("整数1:");  scanf("%d",&n1);
    printf("整数2:");  scanf("%d",&n2);

    printf("他们的差值是 %d\n",(n1>n2)?n1-n2:n2-n1);
    return 0;
}

这样 每次都是大的减去小的。

-----------------------------------------------------------------------------

练习1:

写一段程序,计算出输入的三个整数中的最小值并显示

请使用if 语句

 

练习2:

写一段程序,计算出输入的四个整数中最大的值并显示,

使用if语句

 

练习3:

使用if语句替换 差值计算这个例子中的条件运算

练习4:

用条件运算写一段程序,

输入两个整数,判断他们是否相等,如果相等就显示相等,如果不相等就显示不相等。

 

posted @ 2020-12-24 16:23  xujieqiang  阅读(394)  评论(0编辑  收藏  举报