版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
会计学1c语言4选择结构共
37页第2
页
4.1C语句概述第1页/共44页共
37页第3
页
4.1C语句概述一个c程序可以有若干个源程序文件组成一个源文件可以有若干个函数和预处理命令以及全局变量声明部分组成一个函数有函数首部和函数体组成函数体由数据声明和执行语句组成C语句分为5类控制语句函数调用语句表达式语句空语句复合语句第2页/共44页共
37页第4
页
4.1C语句概述(一)控制语句完成一定的控制功能
1if()~else条件语句6break间断语句
2for()~循环语句7switch()开关语句
3while()~循环语句8goto转向语句
4do~while();循环语句9return返回语句
5continue继续语句第3页/共44页共
37页第5
页4.1C语句概述(二)函数调用语句有一个函数调用加一个分号构成一个语句
Printf(“ThisisaCstatement.”);例:第4页/共44页共
37页第6
页4.1C语句概述(三)表达式语句有一个表达式加一个分号构成一个语句
a=3;例:分号赋值表达式表达式语句+=第5页/共44页共
37页第7
页
4.1C语句概述
(四)空语句只有一个分号的语句
(什么也不做)用来做流程的转向点用来作为循环语句中的循环体;第6页/共44页共
37页第8
页4.1C语句概述(五)复合语句用一对{}括起来的语句
{ z=x+y; t=z/100; printf(“%f”,t); }例:第7页/共44页共
37页第9
页4.2赋值语句赋值语句是由赋值表达式加上一个分号构成例:a=100赋值表达式
a=100;赋值语句条件中不能含有赋值符号,但是赋值表达式可以包含于条件表达式中例:if(a=b)t=a;错误
if((a=b)>0)t=a;正确第8页/共44页共
37页第10
页本章要点:正确使用关系表达式和逻辑表达式掌握用if语句和switch语句实现选择结构掌握条件运算符的使用第9页/共44页共
37页第11
页
选择语句是控制程序执行选择结构的语句是程序实现逻辑判断的唯一形式
根据学生分数判断是否及格根据学生分数如何进行分级一元二次方程求解自然语言:如果…那么…
否则…C语言:
分支语句如何解决?为什么要用选择结构?问题第10页/共44页共
37页第12
页5.1关系运算符和关系表达式5.1.1关系运算符
1.关系运算符关系运算是进行比较大小的运算,并产生运算结果1(真)或0(假)。C语言中的关系运算符有6种:
<、<=、>、>=、==、!=优先次序:前4种同级,高于后2种(后2种同级)关系运算符的结合性为从左到右;
算术运算符(高)关系运算符赋值运算符(低)如:3>2a<b注意!第11页/共44页共
37页第13
页5.1.2关系表达式定义:用关系运算符将两个表达式连接起来的式子。形式:表达式1关系运算符表达式2
如:(a>b)>(b<c)、‘a’<‘b’、x>y、s+f>d
关系表达式的值为逻辑值“真”或“假”.
注意:C语言没有逻辑型数据,关系表达式的真、假是以数值“1”代表“真”,以“0”代表“假”。
[例]:设a=3,b=2,c=1,求下列表达式的值?
c>b值为0(假)(a-b)==1值为1(真)(b+c)<a值为0(假)
a=5>3>4
a的值为0第12页/共44页共
37页第14
页练习
判断奇、偶数设有变量定义intz;
分析z%2==0的值?如果z为偶数,则z%2==0的值为1;否则z为奇数,则z%2==0的值为0;因此,z%2==0是断言“z是偶数”的c语言判断式。2.判断x与y的某位数字是否相同
x%10==y%10判断个位数上数字相同如:15%10==25%10为真,16%10==18%10为假第13页/共44页共
37页第15
页5.2.1逻辑运算符
C语言提供三种逻辑运算符:
&&(逻辑与)、||(逻辑或)、!(逻辑非)说明:(1)“&&”和“||”是“双目(元)运算符”,
它要求有两个操作数。(2)“!”是“单目(元)运算符”,只要求有一个运算量。(3)优先级次序:!&&||
5.2
逻辑运算符和逻辑表达式a&&ba、b均为真,则a&&b为1(真)。
a||ba、b之一为真,则a||b为1(真)。
!a若a为真,则!a为假。第14页/共44页共
37页第16
页运算符的优先级!(非)(高)算术运算符关系运算符&&和||赋值运算符(低)第15页/共44页共
37页第17
页5.2.2逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的式子.规定:判断一个逻辑量为“真、假”的方法:“非0”代表“真”,“0”代表“假”[例]:写出1<x<10的逻辑表达式?
x>1&&x<101<x<10[例]:a+b<c&&c==d[例]:(m=a<b)&&(n=c-d)[例]:a||b||c如果a为真,就不再判断b和c了
强调:在逻辑表达式的求解过程中,只要能确定表达式的值,就不继续向下求解其他的值了.((a+b)<c)&&(c==d)第16页/共44页共
37页第18
页xyx&&yx||y!x000010非0011非00010非0非0110逻辑运算真值表
第17页/共44页共
37页第19
页练习:控制条件的正确表示方法判断变量ch是否为数字字符
ch>=‘0’&&ch<=‘9’判断变量ch是否为英文字母
ch>=‘a’&&ch<=‘z’ch>=‘A’&&ch<=‘Z’(ch>=‘a’&&ch<=‘z’)||(ch>=‘A’&&ch<=‘Z’)判断变量ch是否为空格、回车
ch==‘‘ch==‘\n’判断变量year是否为闰年(year能被4整除但不能被100整除,或year能被400整除)(year%4==0&&year%100!=0)||(year%400==0)(year%4!=0)||(year%100==0&&year%400!=0)第18页/共44页共
37页第20
页根据给定表达式决定要执行的操作。执行过程:计算表达式的值,判断表达式值为真时执行语句组,否则跳过语句继续执行后续语句。单选择语句格式:if(表达式){语句组;}例:if(a>b)x=a;1.单选择if语句
语句零表达式非零表达式可以是关系式或逻辑式5.3选择语句5.3.1if语句第19页/共44页共
37页第21
页2.双选择if语句语句格式:if(表达式){语句组1;}else{语句组2;}双选择功能:计算表达式的值,当表达式值为非零时执行语句组1,否则执行语句组2。APB非零零第20页/共44页共
37页第22
页有关if语句的说明
表达式后面不加分号语句之后有分号
else不是语句,不能单独使用当if后有多个执行语句时,必须用{}将多个语句括起来,构成一个复合语句,{}之外不必有分号。第21页/共44页共
37页第23
页#include"stdio.h"main(){inta,b,s;scanf("%d%d",&a,&b);s=a;if(a<b)s=b;s*=s;printf("%d\n",s);}例1运行时输入:34输出:16第22页/共44页共
37页第24
页
指出下列程序的输出结果:#include"stdio.h"main(){inta;scanf("%d",&a);if(a>50)printf("%d",a);if(a>40)printf("%d",a);if(a>30)printf("%d",a);}程序运行:输入58输出:585858
输入30输出?例2第23页/共44页共
37页第25
页#include"stdio.h"main(){inta,b,max;printf("Inputaandb:");scanf("%d%d",&a,&b);if(a>b)max=a;elsemax=b;printf("Themaxofaandbis:%d\n",max);}a>b?max=bmax=a非00求a和b两数中较大的一个。例3第24页/共44页共
37页第26
页#include"stdio.h"main(){inta,b,c=25;a=10>c;b=a==a;printf("a=%d,b=%d,",a,b);if(c)printf("c=%d",c);}运行结果:a=0,b=1,c=25例4第25页/共44页共
37页第27
页#include"stdio.h"main(){inta,b,t;printf("Inputaandb:");scanf("%d%d",&a,&b);if(a>b){t=a;a=b;b=t;}printf("%d,%d\n",a,b);}按由小到大的顺序输出两个数。例5第26页/共44页共
37页第28
页5.3.2if语句的嵌套格式:if(表达式)
if(
表达式1)语句11;
else
语句12;
else
if(表达式2)语句21;
else
语句22;在if语句的“语句1”或“语句2”中又包含着if语句判断表达式的值,若为非0,再判断表达式1的值,非0执行语句11,否则执行语句12若表达式的值为0,再判断表达式2的值,非0执行语句21,否则执行语句22功能:外if内嵌if第27页/共44页共
37页第29
页if语句的常用格式:
if(表达式1)语句1elseif(表达式2)语句2
elseif(表达式3)语句3······elseif(表达式m)语句melse语句n仅执行表达式为真的elseif后的内嵌语句,若所有的表达式值都为0,则执行最后一个else后的内嵌语句.第28页/共44页共
37页第30
页下列程序段表示的数学式子?
y=-1;if(x!=0)if(x>0)y=2*sin(x);elsey=0;程序段表示的数学式1:0(x<0)y=-1(x=0)2sinx(x>0)讨论:给第二个if行加{}后表示的数学式?}{程序段表示的数学式2:-1(x<0)y=0(x=0)2sinx(x>0)数学式1程序可表示为:if(x<0)y=0;elseif(x==0)y=-1;elsey=2*sin(x);思考强调:if和else可成对出现,也可不成对出现,每个else都与距其最近的if配对。第29页/共44页共
37页第31
页
从键盘输入一个字符,当该字符是+、-、*或/时,显示其对应的英文单词:plus、minus、multiplication或division。若输入其他字符,则显示“Error!”。
#include<stdio.h>main(){charc;c=getchar();if(c=='+')printf("plus\n");elseif(c=='-')printf("minus\n");elseif(c=='*')printf("multiplication\n");elseif(c=='/')printf("division\n");elseprintf("Error!\n");}例6第30页/共44页共
37页第32
页switch语句该语句为开关语句,适合解决多分支的情况。格式:switch(表达式)
{case常量表达式1:语句序列1;
case常量表达式2:语句序列2;……
case常量表达式n:语句序列n; [default:语句序列n+1;]
}说明:执行顺序如下:5.3.3switch语句问题:为什么引出switch语句?可以是一条语句,也可以是多条语句。多条语句不必用括号括起来。在执行完某个case后的语句序列后,将自动转移到下一个case继续执行。起语句标号的作用,不进行条件判断,同一个switch语句中的各个常量表达式的值必须互不相等。可以是整型、字符型。第31页/共44页共
37页第33
页a.计算表达式的值;
b.找到与表达式的值相同的case常量表达式,执行该case后边的语句序列,之后依次往下执行语句块。表达式语句序列1语句序列2语句序列n语句序列n+1······第32页/共44页共
37页第34
页每个语句序列的最后一条语句后增加break语句,执行流程为:表达式语句序列1语句序列n······语句序列n+1语句序列2第33页/共44页共
37页第35
页
根据考试成绩的等级打印出百分制分数段。采用多分支情况程序段:
switch(grade){ case'A':printf("85~100\n");
case'B':printf("70~84\n");
case'C':printf("60~69\n");
case'D':printf("<60\n");
default:printf("error");}
若grade=‘A’时,输出结果为?
当grade=‘B’时,输出结果为?例7第34页/共44页共
37页第36
页流程图为:
grade输出“85-100”输出“<60”输出“60-69”输出“error”输出“70-84”第35页/共44页共
37页第37
页说明:case和default的次序可以交换。例:#include“stdio.h”main(){intc=3;switch(c){ case1:c++; default:c++;break; case2:c++; }printf("c=%d\n",c);}case3:c++;第36页/共44页共
37页第38
页
多个case可以执行同一个语句序列。switch(c=getchar()){case'y':case'Y':printf(“Youareright.\n”);}inta=10;switch(a){case10
:case9:a++;case8:case7:a+=2;break;}第37页/共44页共
37页第39
页条件运算符:唯一的三目操作符,要求有三个操作对象。格式:表达式1?表达式2:表达式3功能:判断表达式1的值,该值为“非0”,则取表达式2的值,为“0”时,取表达式3的值。如:max=a>b?a:b
若a=3,b=2,则max=?说明:(1)条件运算符优于赋值运算符。(2)条件运算符的结合方向为“自右向左”。
如:当a=1,b=2,c=3,d=4时,表达式a>b?a:c>d?c:d,值为:?
如:
若x=1,y=0,a=3,b=-3
表达式(y>x?a:b)&&a+b值为:?
405.4条件运算符第38页/共44页共
37页第40
页(3)条件表达式中的表达式1的类型可以与表达式2和表达式3的类型不同。条件表达式值的类型为二者中较高的类型。如:x>y?1.2:6,当x>y成立时条件表达式的值为1.2,否则为实型数据6.0。
c=x>y?1:‘s’,当x>y成立时c=1,否则c=‘s’。第39页/共44页共
37页第41
页if(y<0) x=-y;else x=y;(y<0)?x=-y:x=y;等价等价x
=
(y<0)
?
-y:y;说明:ifelse可以完成与条件 运算符(?:)完全相同的任务,并且可以进行相应的转换。第40页/共44页共
37页第42
页
将输入的大写字母转换为小写字母.#include"stdio.h"main(){c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年四平职业大学高职单招笔试英语试题库含答案解析3套试卷
- 2026年四川华新现代职业学院高职单招笔试职业技能测验试题库含答案解析3套试卷
- 新能源汽车仪表的常见符号名称及含义教学设计中职专业课-新能源汽车-汽车运用与维修-交通运输大类
- 任务二 园中蔬菜我来种教学设计小学劳动四年级下册浙教版《劳动》
- 通风与空调工程试题附答案
- 消防安全知识试题与答案
- 药剂科培训考试题含答案
- 广东省肇庆市高中数学 第十七课 2.1平面向量的实际背景及基本概念教学设计 新人教A版必修4
- 高中历史 第五单元 烽火连绵的局部战争 第3课 中东问题的由来与发展(1)教学教学设计 新人教版选修3
- 2026中国特色服装加工业市场前沿供需调研及投资集中规划分析研究报告
- 机械设计基础 课件 4.6渐开线齿轮啮合传动
- 钢材采购合同的范本
- 实验动物与动物实验
- 眼的胚胎发育课件
- 临床执业医师第四单元
- 工会职工运动会活动方案设计
- GB/T 18910.41-2024液晶显示器件第4-1部分:彩色矩阵液晶显示模块基本额定值和特性
- 医学统计学:第一章-医学统计学绪论
- 新媒体视觉设计介绍课件
- 介入手术室患者安全转运
- 第2章 CR400AF动车组司机室设备操作《复兴号动车组司机操作及整备》教学课件
评论
0/150
提交评论