打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
4.1if选择结构

原创2021-10-28 21:55·金教员

选择结构是编程常用的基本结构之一。C语言用if语句表示两个分支的选择结构,用swich语句表示多分支选择结构。

一、if选择结构

(一)if单语句结构

案例一:计算时间差,求出两个时间之间的差,也几小时几分表示。

问题分析:计算时间差,以几小时几分来表示。运用数学知识,求时间差用小时减去小时,分钟减去分钟,得到结果。

当分钟为负,则从小时数借一位,相加得到分钟差,这时小时差要减一。

模式识别:定义hour1 hour2,min1 min2分别表示两个时间的小时和分钟。定义ih,im分别表示小时差和分钟差。于是ih=hour1-hour2; im=min1-min2;当im为负时,借位求和得到分钟差,小时差再减一。

算法形成:借位输入两个时间,每个事件分别输入小时和分钟的值,运用上面的公式计算,然后输出两个时间之间的差,也以几小时几分表示。

程序:

#include<stdint.h>

int main()

{

int hour1,hour2,min1,min2,ih,im;

scanf('%d %d',&hour1,&min1);

scanf('%d %d',&hour2,&min2);

ih=hour1-hour2;

im=min1-min2;

if(im<0){

im=60 im;

ih--;

}

printf('时间差时%d小时%d分。\n',ih,im);

return 0;

}

程序分析:

选择控制结构的if语句的一种形式为:

If(表达式){

语句

}

其含义即如果表达式成立,即逻辑判断值为真,则执行大括号里的语句。否则就跳过大括号语句,而继续执行大括号外其他语句。

注意:(1)当if结构中的语句不止一条时,大括号{}不可省略,只有一条语句时大括号可以省略,if语句以分号结束。如:

If(a<b) a=1;

(2)if(表达式)圆括号外不可加分号,if(a==1);这种写法是错误的,分号要去掉。

案例二:求找零计算算法。支付时超过商品价钱的部分要找零退给对方。如商品50元,支付了100元,则要给顾客50元。

问题分析:问题是找零,找零即顾客支付金额减去商品价格。

模式识别:假设商品价格为price,顾客支付为bill,找零金额为charge。则模式为charge=bill-price。

模式归纳:charge=bill-price,当charge为正数则输出charge

算法形成:

流程图如下

编程为:

例题:输入两个实数,按由小到大的顺序输出这两个数。

问题分析:输出两个数,问题不复杂,重点是要掌握两个变量的值的互换。

不能把两个变量直接互相赋值,如为了将a和b对换,不能用下面方法:

a=b;

b=a;

这是两条赋值语句,最终的结果是变量a和b的值相等。

为了实现交换,必须借助第3个变量。可以这样考虑:将A和B两个杯子中的水互换,用两个杯子的水倒来倒去的办法是无法实现的。必须借助于第三个杯子C,先把A杯的水倒在C杯中,再把B杯的水倒在A杯中,最后再把C杯的水倒在B杯中,这就实现了两个杯子的水互换。

程序:

#include <stdio.h>

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;

}

程序分析:输入两个数后,用if语句进行判断,如果a>b,则a和b的值互换,否则不互换。然后异地输出a和b,就实现了由小到大的顺序输出。两个变量的值互换方法在后面章节中经常用到,请熟练掌握。

(二)if(表达式)语句 else 语句

案例(二)中找零计算出现钱不够怎么办。当出现bill<price时,算法需更新,这就用到if的第二种形式,if else。

当钱不够,则提醒对方“你的钱不够”,所以找零计算程序更新为:

程序分析:

if语句第二种形式:

if(表达式)

语句1

Else

语句2

如图,其功能是:当表达式值为真的时候执行语句1,否则执行语句2.

注意:

(1)整个if语句可以写在多行上,也可以写在一行上,如:

if(a>b)a=1;else b=1;

但是为了程序的清晰,提倡写成锯齿形式。

(2)if语句形式中的每条语句以分号结束,有多条语句要用大括号括起来。

案例三:判断成绩,大于等于60分及格,否则不及格。

问题分析:如果大于等于则及格,否则不及格。

程序:

案例四:计算薪水。计算一周工作小时数的薪水。

问题分析:假设一周工作标准时40个小时,每小时收入为8.5美元,当工作时间超过40小时,多出的每小时则按1.5倍的时薪来算。

模式识别:按照pay=hour*rate,分别求出不同情况下的总时薪。

模式归纳:运用if else结构

程序:

程序分析:if else实现两条分支,二选一执行。

练一练:

两次运行下面的程序,如果从键盘上分别输入6和4,则输出的结果是()。

#include<stdio.h>

main()

{ int x;

scanf(“%d”,&x);

if(x >5) printf(“%d”,x);

else printf(“%d\n”,x--);

}

A、7和5 B、6和3 C、7和4 D、6和4

小结:if选择结构两种形式,if(表达式){语句}和if(表达式){语句1}else{语句2},能灵活用于两分支选择。接下来将讲解if语句第三种形式和swich多分支选择结构。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
零基础学C语言循环与控制结构
UC头条:你真的学懂if语句了嘛,看完这篇文章你一定会让你有所收获,彻底玩转if语句!
3-1 计算时间差
C语言的分支语句解析
C语言中的预处理基本知识
编程基础知识分享,非常简单的计算机IT编程点(二)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服