第5章 选择结构程序设计(1-第8次课)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课后作业2:
从键盘上输入一个字符,如果它是大写 字母,则把它转换成小写字母输出;否则, 直接输出。(参考P51例3.7)
课后作业1:
#include<stdio.h> void main() { int a,b; printf("Input a,b: "); scanf("%d,%d",&a,&b);
其中:
操作数a和b可以是 常量 、 变量 或 表达式 。
可以是 字符型 、 整型 或 浮点型 但是:运算结果只能是 0 或 1 。 。
优先级:
逻辑非 !
关系运算符 算术运算符
算术运算符 关系运算符
逻辑与 && 赋值运算符 逻辑或||
高
赋值运算符 逻辑运算符
低
赋值运算符
举例 5||0 结果是:1 1.5&&'a' 1 结果是:
课堂练习2:
#include <stdio.h> void main() { int a,b; printf("Input a,b: "); scanf("%d,%d",&a,&b);
if(b!=0) printf("a/b=%.2f\n",a*1.0/b);
}
课后作业1: 输入两个任意整数a和b,若b不等 于0,则输出a/b的值(结果保留两位小 数)。
课堂练习1: 输入两个任意不等实数a和b,若a大 于b,则输出a-b的值;否则输出b-a的值。 (要求:结果保留两位小数)
课堂练习1:
#include <stdio.h> void main() { float a,b,c; printf("Input a,b: "); scanf("%f,%f",&a,&b);
5.3 if语句
一般结构流程图
双分支结构
入口 N(不成立)
表达式 Y(成立) { 语句组1 }
{ 语句组2 }
出口
if语句的四种应用形式:
① 简单的if语句
② if...else语句
③ 阶梯式else if 语句
④ 嵌套的if语句
简单的if语句的一般形式:
if(表达式) { 语句组; } …………; //其他语句 if(表达式) 一条语句; …………; //其他语句
前言
选择结构的作用是(P91):
根据所指定的条件是否满足,决定从
给定的两组或多组语句中选择一组执行。
如:求两个数中的最大值
if(a>b) c=a;
else c=b;
if(条件表达式) 语句1;
else 语句2;
本章主要内容:
准备知识——如何写出正确的条件表达式 关系运算符和关系表达式 逻辑运算符和逻辑表达式 两种选择结构语句: if语句 switch语句
}
课堂练习1:
#include <stdio.h> void main() { float a,b,c; printf("Input a,b: "); scanf("%f,%f",&a,&b);
if(a>b) c=a-b; else c=b-a; printf("%.2f\n",c);
}
课堂练习1:
简单应用2: 分析下面程序的功能。
#include <stdio.h> 功能: 输入两个整数并 void main() 判断两数是否相等。 { int a,b; printf("Enter integer a:"); scanf("%d",&a); printf("Enter integer b:"); scanf("%d",&b); if(a!=b) printf("a!=b\n"); else printf("a==b\n"); }
if(ch>='A' && ch<='Z')
ch=ch+32;
printf("ch=%c\n",ch); }
题目: 例 5.1 输入两个任意不等实数a和b,按a大b小的顺 序输出这两个数。指出下列程序中的两处错误。
#include<stdio.h> void main() { float a,b,t; printf("input a,b:" ); scanf("%f,%f",&a,&b); //输入两个实数
3.写出year年闰年的判定式。已知闰年的条件 是符合下面的二者之一: ①能被4整除,但不能被100整除。 或: ②能被400整除。
((year%4=0)&&(year%100!=0))
||(year%400=0)
((year%4==0)&&(year%100!=0)) ||(year%400==0)
if…else…语句的一般形式:
if(表达式) { 语句组1; } else { 语句组2; }
………………; //其他语句
if(表达式) 语句1; else 语句2;
………………; //其他语句
if(表达式) 语句1; else 语句2;
………………; //其他语句
if(x=10)
if(x==10)
假设x=10 y=15 z=20,以下表达式结果:
x<y&&x<z
1 结果是: 结果是:0
x%2==0&&y%2==0
应用:利用条件表达式和逻辑表达式写判定式
——即:条件表达式
1.写出x是x,y,z中的最大数的判定式 x>y&&x>z 2.写出x是大于10的偶数的判定式 x%2==0&&x>10 (x%2==0)&&(x>10) 或:(x>10)&&(x%2==0) x>10&&x%2==0
入口 N(不成立)
表达式 Y(成立) { 语句组 }
出口
简单应用1:请判断下面程序的结果和功能。
#include <stdio.h> 功能:求任意整数的绝对值。 void main() { int x,y; printf("Enter an integer:"); scanf("%d",&x); y=x; if(y<0) y= -y; { y= -y; } printf("\ninteger:%d--->absolute value:%d\n",x,y); } 运行时: an integer:-12 value :12 结果为:Enter integer:-12--->absolute
入口 N(不成立)
表达式 Y(成立) {语句组1}
{语句组2}
出口
简单应用2: 分析下面程序的功能。
#include <stdio.h> 功能: 输入两个整数并 void main() 判断两数是否相等。 { int a,b; printf("Enter integer a:"); scanf("%d",&a); printf("Enter integer b:"); scanf("%d",&b); if(a==b) printf("a==b\n"); else printf("a!=b\n"); }
if(b!=0) printf("a/b=%.2f\n",a*1.0/b);
}
课后作业2:
#include<stdio.h>
void main() { char ch; printf("Input a character: "); fflush(stdin);
scanf("%c",&ch); ch=getchar();
printf("a=%5.2f,b=%5.2f,c=5.2%f\n",a,b,c );
}
例 5.2 题目: 输入3个数a,b,c,要求按照由小到大的 顺序输出。——将程序补充完整
#include <stdio.h> void main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) { t=a; a=b; b=t; } /*交换a,b,使得a小于b*/ if(a>c) { t=a; a=c; c=t; } /*交换a,c,使得a小于c*/ if(b>c) { t=b; b=c; c=t; } /*交换b,c,使得b小于c*/ printf("a=%5.2f,b=%5.2f,c=5.2%f\n",a,b,c ); }
}
课堂练习2: 输入两个任意整数a和b,若b不等 于0,则输出a/b的值(结果保留两位小 数)。
课堂练习2:
#include <stdio.h> void main() { int a,b; printf("Input a,b: "); scanf("%d,%d",&a,&b);
}
课堂练习2:
; a=b, if(a<b) { t=a, ; b=t; }
printf("a=%f,b=%f\n",a,b ); }
题目: 输入3个数a,b,c,要求按照由小到大的 顺序输出。——将程序补充完整
#include <stdio.h> void main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c);
#include <stdio.h> void main() { int a,b; float c; printf("Input a,b: "); scanf("%d,%d",&a,&b);
if(b!=0) c=1.0*a/b; //c=(float)a/b printf("%.2f\n",c);
}
5.1 关系运算符和关系表达式
5.1.1 关系运算符及其优先级
关系运算符
< <= > >= == !=
含义
小于
小于等于
大于 大于等于 等于 不等于
优先级相同(高)
优先级相同(低)
思考:if(x=10) x=10 x==10 if(x==10)
的区别?
5.1.2 关系表达式P92
如:简单的关系运算
注: 非0代表“真” 如:12&&5、'a' && 'b' !1.2、!0、21|| 'a' 0代表“假”
逻辑表达式的值(2种):
假
0
或
1 。
真
下面我们小结一下:
a&&b a||b !a
a和b 都为真(非0) 时,结果为1; a和b 有一个为真(非0) 时,结果为1; a为 真(非0) 时,结果为0;
(1)4.5<=10 (2) 'A'> 'a'
混合 运算
表达式的值=?
1
0
(3)(7-1)*2!=10
(4)x=4.5==10-5.5;
1
1
关系表达式的值(2种):
0
或
1 。
成立(真)
不成立 (假)
下一页
Leabharlann Baidu
优先级:
关系运算符 算术运算符
算术运算符
关系运算符 赋值运算符
高
低
赋值运算符
上一页
5.2 逻辑运算符和逻辑表达式
#include <stdio.h> void main() { float a,b,c; printf("Input a,b: "); scanf("%f,%f",&a,&b);
if(a>b) { c=a-b; printf("a-b=%.2f\n",c); } else { c=b-a; printf("b-a=%.2f\n",c); }
特殊情况 (理解内容)
假设:int a=1,b=2,c=3,d=4;
int m=1,n=1;
见教材P94
如果有如下表达式语句运行后,则m,n的值分别变为? (m=a>b)&&(n=c>d);
m= 0 , n= 1
同理:如果有如下表达式语句运行后,则m,n的值分 别变为? (m=a>b)||(n=c>d); m= 0 , n= 0
5.2.1 逻辑运算符及其优先级
逻辑与(AND) && ||
高
低
逻辑或(OR)
逻辑非(NOT)
! 优先级最高(单目运算符)
逻辑运算规则(P94,表5-2): a的初始值 b的初始值
非0 非0 0 0 非0 0 非0 0
!a 0
0 1 1
!b 0
1 0 1
a&&b 1 0 0 0
a||b 1 1 1 0