第4章 选择结构程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、定义两个实型变量; 2、输入顾客购买商品的消费总额; 3、利用多分支结构判断条件,执行相应语句; 4、输出顾客实际付款金额;
3.多分支结构
流程图:
A≥100 00


A≥80 00 真

A≥50 00 真

A≥30 00 真

A≥10 00


打5折
打6折
打7折
打8折
打9折
不打 折
3.多分支结构
1、定义三个变量,其中一个 用于交换; 2、输入两个整数; 3、如果第一个数大于第二个
a>b 真 交换a和b

数,则交换;
4、输出两个整数;
输出a和b
1. 单分支结构
实例2:输入两个整数,将这两个数按照从小到大的 顺序输出。 语句编写 算法设计:
1、定义三个变量,其中 一个用于交换; 2、输入两个整数; 3、如果第一个数大于第
2、输入一个密码;
3、如果该密码等于设定密码, 则输出“密码确定,登录成 功!”,否则输出“密码错误, 无法登录!”;
运行结果
123456 ↙ 密码正确,登录成 功!
任务六
【任务描述】
制作登陆功能的验证,如果在键盘输入
“Y”或“y”说明用户输入信息正确,就提示 用户“Welcome to here”否则说明输入信息
1、定义一个成绩变量; 2、输入成绩; 3、如果成绩大于等于60分, 则输出“成绩及格”;
score
假 score≥ 60

输出“及格”
1. 单分支结构
实例1:输入C语言课程的成绩,如果大于等于60分,则输出 “成绩及格”。 语句编写 算法设计:
1、定义一个成绩变量; 2、输入成绩; 3、如果成绩大于等于60分, 则输出“成绩及格”;
main() { int a,b,t; scanf("%d%d",&a,&b); if(a>b) { t=a;a=b;b=t; } printf("a=%d,b=%d\n",a,b); }
运行结果
二个数,则交换;
4、输出两个整数;
3 2↙ a=2,b=3
2. 双分支结构
if…else…语句格式 : 流程图:
2、输入一个整数;
3、如果该整数除2取余等于0, 则输出该数是偶数, 否则输出该数是奇数;
真 n%2 ==0 输出偶 数

输出奇 数
2.双分支结构
实例1:输入一个整数,判断是奇数还是偶数。
语句编写
算法设计:
1、定义一个整型变量;
main() { int n; scanf("%d",&n); if(n%2==0) printf("该数是偶数!\n"); else printf("该数是奇数!\n"); }

输出正确
输出错误
2.双分支结构
实例2:输入一个密码,判断密码是否正 语句编写 确。 main() 算法设计:
{
1、定义一个整型变量;
int pwd; scanf("%d",&pwd); if(pwd==123456 ) printf(“密码正确,登录成功!\n"); else printf("密码错误,无法登录!\n"); }
main() { int score; scanf("%d",&score); if(score>=60){ printf("C语言成绩及格!\n"); } }
运行结果
90↙ C语言成绩及格!
1. 单分支结构
实例2:输入两个整数,将这两个数按照从小到大的 顺序输出。 算法设计: 流程图: 输入
a,b,t
表达式的值与每一个case中的常量表达式的值进行比较,若有相等的, 则从该case开始依次往下执行,若没有相等的,则从default开始往下 执行。 执行过程中遇到break语句就跳出该swtich语句,否则一直按顺序继 续执行下去, 直到遇到“}”符号才停止。
3.多分支结构
流程图:
switch(值) 是 case1
有误,显示“Sorry”。
2
任务六
【任务描述】
制作登陆功能的验证,如果在键盘输入
“Y”或“y”说明用户输入信息正确,就提示 用户“Welcome to here”否则说明输入信息
有误,显示“Sorry”。
2
任务六
#include<stdio.h> main(){ char ch; ch=getchar(); if(ch=='Y'||ch=='y'){ printf("Welcome to here."); } }
1、定义两个整型变量和一个字符型变 量; 2、输入考试成绩; 3、成绩整除10,将范围最小; 4、利用switch语句对成绩进行五级 制级别转化; 5、输出级别;
语句编写
#include<stdio.h> main(){ int score,temp; char grade; scanf("%d",&score); temp=score/10; switch(temp){ case 10: case 9:grade='A';break; case 8:grade='B';break; case 7:grade='C';break; case 6:grade='D';break; case 5: case 4: case 3: case 2: case 1: case 0:grade='E'; break; } printf("五级制级别为:%c\n",grade); }
第11讲
第二节 选择结构程序设计
主要内容:
1.单分支结构
2.双分支结构
1. 单分支结构
if语句格式: if(表达式) {
执行描述:
语句 }
先判断表达式是否为真,如果为真,那么执行语句, 如果为假,那么跳过语句执行后面的程序。
流程图:
表达式 真 语句 假
1. 单分支结构
实例1:输入C语言课程的成绩,如果大于等于60分,则输出 “成绩及格”。 算法设计: 流程图: 输入
main() { int a,b,c,max; printf("请输入三个数字:\n"); scanf("%d,%d,%d",&a,&b,&c); if (a>=b) max=a; else max=b; if (max<c) max=c;
2
printf("a=%d,b=%d,c=%d,max=%d\n",a,b,c,max); }
语句编写
算法设计:
1、定义两个实型变量;
main() { float x,sum; scanf("%f",&x); if(x>=10000) sum=x*0.5; else if(x>=8000) sum=x*0.6; else if(x>=5000) sum=x*0.7; else if(x>=3000) sum=x*0.8; else if(x>=1000) sum=x*0.9; else sum=x; printf("付款:%f元\n",sum); }
运行结果
85↙ B
常见编译错误与调试
1. 赋值符号问题
2. 书写格式问题
3. 类型匹配问题
1. 赋值符号问题
语句编写
问题描述:
将条件中的等于号“= =” 写成赋值号“=”。
解决办法:
将n%2=0改为n%2==0。
编译错误
main() { int n; scanf("%d",&n); if(n%2==0) if(n%2=0) printf("该数是偶 数!\n"); else printf("该数是奇 } 数!\n");
运行结果
8↙
该数是偶数!
2. 书写格式问题
语句编写
问题描述1:
else缺少对应的if语句, 应该是成对出现。
解决办法:
将else (x<20)改为else if (x<20),与下一个else对应。
main() { int x,y; scanf("%d",&x); if(x<0) y=0; else if(x<10) y=2+x; else if(x<20) (x<20) y=3*x; else y=x; printf("%d\n",y); }

表达式

if(表达式){ 语句1 }
语句1
语句2
else {
执行描述:
语句2 }
先判断表达式是否为真,如果为真,那么执行语句1, 如果为假,那么执行语句2,语句1和语句2 只能执行其 中一个。
2.双分支结构
实例1:输入一个整数,判断Байду номын сангаас奇数还是偶数。 算法设计: 流程图:
输入n
1、定义一个整型变量;
执行描述:
先判断表达式1如果为真,那么执行语句1;否则判断表达式2如果为真, 那么执行语句2;…否则判断表达式n如果为真,那么执行语句n;否则 执行语句n+1。语句1、语句2…语句n和语句n+1 只能执行其中一个。
3.多分支结构
流程图:
表达 式1 N
Y
表达 式2 Y
N

表达 式n Y
N

语句1 语句2 语句n 语句 n+1
课后作业
作业集:作业四
2
第12讲
第二节 选择结构程序设计
主要内容:
多分支结构语句 1、if else if 2、if else 嵌套 3、switch语句
3.多分支结构
if...else if语句的格式 :
if(表达式1) 语句1 else if(表达式2) 语句2 … else if(表达式n) 语句n else 语句n+1
执行描述: 如果表达式1为真,继续判断表达式2如果为真,那么执行语句1; 如果表达式1为真,表达式2为假,那么执行语句2;如果表达式 1为假,继续判断表达式3如果为真,那么执行语句3;如果表达 式1为假,表达式3为假,那么执行语句4。
3.多分支结构
语句编写
编程实现,输入一个点的x和y坐标,输出该 点属于哪个象限。 算法设计:
2
任务七 排列大小问题
【任务描述】
从键盘获取三个整数,编写一段程序能将三个
整数中最大的数字输出。
任务七 排列大小问题
【任务分析】
1 、声明 4 个变量 a,b,c , max ,其中 a,b,c 分别存放 三个数;
2、比较a和b的大小,大的数存到max中;
3、比较max和c的大小,输出大的数。
任务七 排列大小问题
1、定义两个整型变量;
2、输入两个整数;
3、利用嵌套语句判断横坐 标和纵坐标的大小; 4、输出象限;
main() { int x,y; scanf("%d%d",&x,&y); if(x>0) if(y>0) printf("该点属于第一象限!\n") else printf("该点属于第四象限!\n"); else if(y>0) printf("该点属于第二象限!\n"); else printf("该点属于第三象限!\n"); }
2、输入顾客购买商品的消费总额;
3、利用多分支结构判断条件,执 行相应语句; 4、输出顾客实际付款金额;
运行结果
5000↙ 付款:3500.00元
3.多分支结构
if…else嵌套语句的格式:
if(表达式1) if(表达式2) 语句1 else 语句2 else if(表达式3) 语句3 else 语句4
2、输入一个整数;
3、如果该整数除2取余等于0, 则输出该数是偶数, 否则输出该数是奇数;
运行结果
315 ↙ 该数是奇数!
2.双分支结构
实例2:输入一个密码,判断密码是否正确。 算法设计: 流程图:
输入 pwd 真 pwd==1 23456
1、定义一个整型变量;
2、输入一个密码;
3、如果该密码等于设定密码, 则输出“密码确定,登录成 功!”,否则输出“密码错误, 无法登录!”;
运行 结果
20 -30↙ 该点属于第四象限!
3.多分支结构
switch语句的格式:
switch(表达式) { case 常量表达式1:语句体1;break; case 常量表达式2:语句体2;break; … case 常量表达式n:语句体n;break; default: 语句体n+1; }
执行描述:
3.多分支结构
编程实现,输入顾客购买商品的消费总额,输出顾客实际付 款金额,某商场打折活动,具体细则如下: (1)购买商品总额超过10000元(含10000元),打5折。 (2)购买商品总额超过8000元(含8000元),打6折。 (3)购买商品总额超过5000元(含5000元),打7折。 (4)购买商品总额超过3000元(含3000元),打8折。 (5)购买商品总额超过1000元(含1000元),打9折。 (6)购买商品总额小于1000元不打折。 算法设计:
语句体1
break
否 否 case2
否… 是 是
语句体2
否 … 否 语句体n 否
break

case n 否
break

default
语句体 n+1
break
结束
3.多分支结构
编程实现,输入考试成绩,其中90-100 分属于A级别,80-89分属于B级别,7079分属于C级别,60-69分属于D级别, 低于60分属于E级别,将成绩转化为相应 五级制级别并输出。 算法设计:
相关文档
最新文档