[C语⾔学习]选择结构(判断语句)
[C语⾔学习]选择结构(判断语句)
⼤家好这⾥是三岁,C语⾔是各类语⾔的基础,由于个⼈学习需要特别开设了C语⾔基础专题,内容不⼀定深⼊,都是基础知识,还是⽩话C语⾔,最简单的⽅式带领⼤家学习不是那么容易理解的C语⾔!(该系列应该每周末更新直到系列结束,有问题的及时留⾔,会马上修改!)
上⼀篇:C语⾔程序设计基础(三)
选择结构⽤于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。
在C语⾔中常⽤的选择结构(判断语句)也就是我们经常说的if语句和switch语句。
if语句
C语⾔中有3种if语句分别是if、if-else、if- else if -else(单分⼦、双分⽀、多分⽀)三种,让我们⼀起来看⼀下吧。
if(单分⽀结果)
if语句是我们的单分⽀语句,可以对内容进⾏判定。
语法:
if判断表达式:
{
语句块;
}
⽩话:if可以⽤如果代替,解读上⾯的语法就是:假如判定表达式成⽴则执⾏语句块
计算顺序解读
先计算表达式然后判定表达式的真假。
如果是真(结果等于1)则执⾏语句块。
如果是假(结果等于0)则直接跳过当前模块。
判定模块范围
1、if后⾯有{}则整个if语句到花括号(⼤括号)结束。
2、如果没有{}则到第⼀个分号结束。
第⼀类:
#include<stdio.h>
main()
{
int a=12;
int b;
if(a<=15){//if语句起始位置
b=a+5;
printf("b=%d",b);
}//if语句结束位置
}
结果:15
语义说明:a=12;当a<15时执⾏b被(a+5)赋值;输出b的值。
第⼆类:
#include<stdio.h>
main()
{
int a=12;
int b=10;
if(a<=5)//if语句起始位置
b=a+5;//if语句结果位置
printf("b=%d",b);
}
结果:10
语义说明:a=12,b=10;假如a<10则执⾏把(a+5)赋值给b否则跳出if语句,执⾏输出b的值。(这⾥if没有判断成功所以b还是被10赋值不是被(a+5)赋值)
注:当语句组,只有⼀个语句时,⼤括号(花括号)可以省略。
if-else(⼆分⽀结构)
if-else语句是双分⽀语句
语法
if(表达式){
语句块1;
}
else{
语句块2;
}
⽩话语句解析:假如表达式成⽴则执⾏语句块1的内容,不成⽴则执⾏语句块2的内容。
计算顺序解读
先计算表达式的逻辑值,
如果结果为真(值为1)就运⾏语句块1的内容。
如果结果为假(值为0)就运⾏语句块2的内容。
模块的范围判断:
模块的范围和⼤括号有关(花括号),如果有⼤括号以对应的⼤括号结束为if语句终⽌(对应的!有些时候有嵌套,所以⼀定是对应的内容)如果没有⼤括号那就是最近的⼀个分号为语句的终⽌位置。
经典案例解析:
输⼊⼀元⼆次⽅程的a、b、c的值求解x1、x2的实数根(仅限实数)
思路解析:
⾸先解⼀元⼆次⽅程的更需要先求△然后通过△的⼤⼩是否⼤于0判断结果。那么话不多说,上代码。
#include <stdio.h>
#include <math.h> //添加函数库
int main ()
{
double a ,b ,c ,x1,x2,delta ;
printf ("分别输⼊a 、b 、c 的值:");
scanf ("%lf%lf%lf",&a ,&b ,&c );
delta =b *b -(4*a *c );// 求△的值
if (delta >=0){
x1=(-b +sqrt (delta ))/(2*a );//计算x1的值
x2=(-b -sqrt (delta ))/(2*a );//计算x2的值
printf ("x1=%lf,x2=%lf",x1,x2);
}
else {
printf ("该函数没有实数根!");
}
return 0;
}
输⼊ 2 4 6时⽆实数根
输⼊ 1 -5 6时有两个实数根分别是3和2
代码⽩话解析:
定义需要的值,类型为double,⼈机交互对话添加abc的值。
计算△的值为 b -4ac 并把计算结果赋值给delta ;
判断如果delta ⼤于0则继续计算x1和x2,分别使⽤(-b正负△)/2a并把结果赋值给x1、x2然后输出结果
如果⼩于0则输出没有实数根
只需要把if使⽤如果进⾏替代即可。
if-else if -else (多分⽀结构)
语法
2
if(表达式){
语句1;
}
else if(表达式2){
语句2;
}
{
……
}
else if(表达式n){
语句n;
}
else{
语句n+1;
}
⽩话语句解析:假如表达式1成⽴则执⾏语句块1的内容,否则如果表达式2成则运⾏语句块2的内容,以此类推直到表达式n为⽌。以上都不满⾜就运⾏语句块n+1。
如果运⾏了某个语句块⾃动结束整个判断语句(就满⾜⼀个条件就可以结束了(撤退了))
执⾏过程:
按顺序计算表达式,直到出现第⼀个计算结果为真(结果值为1)的表达式i,然后执⾏对应的语句i,执⾏结束以后判断结束。
如果没有结果为真,则执⾏最后的else语句(n+1)语句。
模块范围和之前的⼀样先判断⼤括号(花括号)再查看分号。
经典案例解析
⼀家商店开业酬宾,已知购买价值超过100元开始打折具体打折⽅式(如下图)计算打折需要⽀付的⾦额:
购买⾦额折扣数(单位:折)
0~1001
100~50095
500~10009
1000~50008
⼤于500075
书写思路:
先定义值:打折是⼩数就定义浮点型,需要输⼊的结果,输出的结果,和打折的折扣数(⼀共3个值!)
第⼆步进⾏输⼊:输⼊实际消费⾦额并⽤值进⾏接收。
第三步进⾏判定:查看输⼊内容属于哪个范围然后给出对应的折扣数。
第四步计算并输出:计算打折后的内容并输出。
#include<stdio.h>
int main()
{
double a,price,d;//第⼀步定义
printf("请输⼊实际⽀付的⾦额:");
scanf("%lf",&a);//第⼆步输⼊(前⾯那个输出属于⼈机交互)
//第三步:判定折扣数
if(a<100){
d=1;
}
else if(a<500){
d=0.95;
}
else if(a<1000){
d=0.9;
}
else if(a<5000){
d=0.8;
}
else{
d=0.75;
}
//第四步计算并输出结果
price=a*d;
printf("实际需要⽀付:%.2f",price);
return0;
}
结果:输⼊128得到值:121.60
嵌套
switch语句表示范围在某个判断语句中存在其他的判断语句。
注意事项:分清楚那个语句块属于哪个判断,在实际过程中把没有必要的内容进⾏筛选,直接忽略即可。特别要注意没有添加{}的语句。条件运算符(?:语句)
语法
表达式?真:假;
先判断表达式的逻辑值如果逻辑值为1(结果是真)则输出冒号前⾯的真值,如果值为0(结果假)则输出冒号后⾯的假值
相对应代码:
if(表达式){
真;
}
else{
假;
}
注意事项:要分清楚?所对应的:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论