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:
用条件运算写一段程序,
输入两个整数,判断他们是否相等,如果相等就显示相等,如果不相等就显示不相等。