chap3分支结构

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档