chap3分支结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§3分支结构
一、引入:
1、输入两个时间,每个时间分别输入小时和分钟的值,然后输出两个时间之间的差,也用几小时几分表示。(提示:转化为分钟,做整数除法和取余运算)
int hour1,minute1;
int hour2,minute2;
scanf(“%d%d”,&hour1,&minute1);
scanf(“%d%d”,&hour2,&minute2);
int t1=hour1*60+minute1;
int t2=hour2*60+minute1;
int t=t2-t1;
printf(“时间差是%d小时%d分钟”,t/60,t%60);如果不转化为分钟,而用直接减的算法,出现借位怎么办?——条件判断
int hour1,minute1;
int hour2,minute2;
scanf(“%d%d”,&hour1,&minute1);
scanf(“%d%d”,&hour2,&minute2);
int ih=hour2-hour1;
int im=minute2-minute1;
if(im<0)//出现了借位的情况
{
im=60+im;
ih--;
}
printf(“时间差是%d小时%d分钟\n”,ih,im);(dev c++调试,if(im<0)设断点查看运行机制)2、输入两个实数,按由小到大的顺序输出这两个数。
#include
int main()
{
float a,b,t;
scanf("%f,%f",&a,&b);
if(a>b)
{ //将a和b的值互换
t=a;
a=b;
b=t;
}
printf("%5.2f,%5.2f\n",a,b);
return 0;
}
二、判断的条件——关系运算,计算两个值之间
的关系
•用关系运算符将两个数值或数值表达式连接起来的式子,称为关系表达式。
•关系表达式的值是一个逻辑值,即“真”或“假”。
•在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”。
六种关系运算符:
<(小于)
<= (小于等于)
> (大于)
>= (大于等于)
== (等于)
!= (不等于)
•前4种关系运算符的优先级别相同,判断是否相等的==和!=比其他的低!
•关系运算符的优先级低于算术运算符。
•关系运算符的优先级高于赋值运算符。
•连续的关系运算是从左到右进行的!
例:printf(“%d\n”,5==3);
printf(“%d\n”,5>3);
printf(“%d\n”,5<=3);
printf(“%d\n”,7>=3+4);
int r=a>0;
三、if语句的一般形式
if (表达式) 语句1
[ else 语句2 ]
说明:“表达式”可以是关系表达式、逻辑表达式,甚至是数值表达式;方括号内的部分(即else子句)为可选的,既可以有,也可以没有
语句1和语句2可以是一个简单的语句,也可以是一个复合语句,还可以是另一个if语句
1、形式1 没有else子句部分
if(表达式) 语句1;
例:完善第一章中的找零计算器,票面不够怎么办?
自行画出流程图。
int amout;
int price=0,change;
printf(“请输入商品金额(元):”);//输入提示
scanf(“%d“,&price);
printf(“请输入收款票面(元):”);//输入提示
scanf(“%d“,&amount);
if (amount >=price)
{
change=amount-price;
1
printf(“找您%d元\n”,change);
}
2、形式2 有else子句部分
if (表达式)
语句1 ;
else
语句2;
a、上例中,票面不够怎么办?
if (amount >=price)
{
change=amount-price;
printf(“找您%d元\n”,change);
}
else
{
printf(“你的钱不够!!!”);
}
b、改正程序:比较两个数的大小
printf(“请输入两个整数”);
scanf(“%d%d”,&a,&b );
int max=0;
if (a>b)
{max=a;}
printf(“大的那个是%d\n”,max);
c、对比程序,哪个逻辑性更强?
max =b; int max=0;
if(a>b) if (a>b)
{max=a; {max=a;
} }
else
{max=b;
}
d、思考:若if()语句后不加{},其后有多句语句,在执行的时候,执行哪一句?
e、思考:若写成if(条件);{语句;},则在条件为真时花括号内的语句还能执行吗?
f、补全程序:每周工作标准时间为40小时,每小时工资为22.50元,超过40小时之外的时间按1.5倍工资支付。现在通过键盘输入工作时间,程序计算应支付的周薪水。
#include
int main()
{
double rate=22.5;//小时工资常量
int standard=40;//定义周标准时间 pay=0;//声明周薪水变量
int hours;
print(“请输入你的周工作时间”);
scanf(“%”,&hours);
if (hours>standard)
{
pay= ;
}
else
pay=hours*rate;
printf(“应支付的周工资为%f\n”,pay);
return 0;
}
g、输出三个整数中的最大者,分析if else的配对
关系。
int a,b,c;
scanf(“%d %d %d”,&a,&b,&c);
int max=0;
if (a>b)
{
if (a>c)
{
max=a;
}
else
{
max=c;
}
}
else
{
if (b>c)
{
max=b;
}
else
{
max=c;
}
}
printf(“The max is %d\n”,max);
●一般情况下,else总是和最近的那个if匹配,
但是有时候会受{}的影响,结论有不同。
●缩进格式不能暗示else的匹配。
h、如果a的值是7,b的值是6,则程序的输出是?
int a=7,b=6;
if ( a == 6 )
if ( b == 7 )
printf("A");
else
printf("B");
答案:
若程序修改为:
2