程序设计的基本结构_第1页
程序设计的基本结构_第2页
程序设计的基本结构_第3页
程序设计的基本结构_第4页
程序设计的基本结构_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用三种程序结构解决简单问题【单元导读】

在现实生活中,经常遇到顺序执行、选择执行和循环执行的问题,这些问题可通过程序来解决。单元学习目标:能利用C++语言中的顺序结构、选择结构、循环结构解决实际问题,并在此基础上,能利用预处理命令提高编程效率。

计算机程序

=数据结构

+算法

+程序代码2.1.2程序的三种基本结构1、顺序结构

按照程序语句书写的顺序一步一步依次执行。

根据条件判断的结果,从多种路径中选择其中的一种路径执行。

2、选择结构任务2.1知识储备

将一组操作重复执行多次。有“当型”和“直到型”两种循环结构。

2.1.2程序的三种基本结构3、循环结构当型循环结构

先判断后执行直到型循环结构

先执行后判断任务2.1知识储备1、声明语句:对变量、函数、类型(如结构体等类型)等进行声明例如:

变量声明语句:inta,b,s;

变量声明语句:inti=3,j=3,k=3,x=3;函数声明语句:intadd(intx,inty);在语言中,分号是语句的结束标志。C语句分为6类。2.1.3语句分类2、表达式语句例如:

a=3(赋值表达式)

a=3;

(赋值语句)i++(自增1表达式)i++;

(自增1语句)任务2.1知识储备3、函数调用语句:函数调用表达式加分号例如:

printf("ThisisamyfirstProgram.\n");

add(a,b);

2.1.3语句分类4、控制语句:控制程序的流程(1)条件语句:if语句、switch语句(3)转向语句:break语句、continue语句、return语句、goto语句(2)循环语句:while语句、do…while语句、for语句任务2.1知识储备

把多条语句用花括号括起来组成的一个语句,称为复合语句。例如:5、复合语句2.1.3语句分类

例如:下面的for循环体是空语句,在嵌入式软件设计中常用作软件延时。

for(i=10000;i>0;i--) {

;

//空语句

}6、空语句:只有一个分号,什么也不执行任务2.1知识储备2、字符输出函数——putchar()

一般形式:putchar(c)

●向显示器输出字符变量c对应的字符。2.2.1数据输入输出函数【例2.1】输出一个字符。#include

<iostream>//包含输入输出库函数头文件usingnamespacestd;intmain(void){chara,b,c;a='H';b='X';c='Y';

putchar(a);putchar(b);putchar(c);putchar('\n');

//在屏幕上显示字符

}任务2.2利用顺序结构程序解决实际问题3、字符输入函数——getchar()

通常将键盘上输入的字符赋给一个字符变量,构成赋值语句。如:

charc; c=getchar();2.2.1数据输入输出函数【例2.2】从键盘输入一个字符,并在显示屏显示

。任务2.2利用顺序结构程序解决实际问题#include

<iostream>//包含输入输出库函数头文件usingnamespacestd;intmain(void){

charc; cout<<"请输入一个字符:\n";//原样输出一串字符,增加人机互动性

c=getchar();

//从键盘输入一个字符

putchar(c);

//在屏幕上显示输入的字符

putchar('\n');//换行

}

注意:getchar函数只能接收一个字符,输入数字也按字符处理。输入多个字符时,计算机只接收第一个字符。【例2.9】将输入的两个整数交换,然后再输出这两个整数。2.2.2顺序结构程序设计应用

两名同学互换位置,如何实现?

需要借助一个临时变量实现两数的交换。任务2.2利用顺序结构程序解决实际问题【例2.10】计算1+2+3+4+5的和。intmain(void){inti=1,s=0;s=s+i;i++;s=s+i;i++;s=s+i;i++;s=s+i;i++;s=s+i;

cout<<"sum="<<s<<endl;}2.2.2顺序结构程序设计应用重复执行多次循环结构任务2.2利用顺序结构程序解决实际问题任务3.3掌握选择结构

选择结构程序:根据不同的条件,执行不同的语句(根据不同的条件选择不同的道路)。两种选择语句:if语句和switch语句。if语句if语句判断if语句if语句的基本形式if语句形式(单分支)if(表达式){

语句块}if(iSignal==1){cout<<"theSignalLightis%d:\n"<<iSignal);cout<<"Carscanrun";}if语句中的易错点if(value=0){…}if(value==0){…}赋值等于例3-9if…else语句形式(双分支)if(表达式){

语句块1;}else{

语句块2;}if(value){cout<<"thevalueistrue";}else{cout<<"thevalueisfalse";}例3-10intmain(void){ intscore; cout<<"请输入成绩:\n"; cin>>score;

if(score>=60)cout<<"恭喜,通过!\n";

else

cout<<"未通过,继续努力!\n";}练习:1.用if语句判断考试结果。2.用if…else语句判断考试结果。任务2.3利用选择结构程序解决实际问题if的嵌套形式说明:注意if与else的配对关系。else总是与它上面最近的未配对的if配对。1、if语句的3种形式

2.3.1if语句及应用(3)if…else嵌套形式——用于解决多分支问题任务2.3利用选择结构程序解决实际问题

虚线左侧的嵌套结构,还可写成虚线右侧的更加紧凑的形式。1、if语句的3种形式

2.3.1if语句及应用(3)if…else嵌套形式——用于解决多分支问题任务2.3利用选择结构程序解决实际问题【例2.15】根据符号函数,编程实现输入一个x值,输出y值。{ intx,y; cout<<"请输入x的值:"; cin>>x;

cout<<"x=”<<x<<”y=”<<y<<endl);}if(x<0) y=-1;else

if(x==0)y=0;

elsey=1;if(x<0) y=-1;else

if(x==0)y=0;elsey=1;1、if语句的3种形式

2.3.1if语句及应用(3)if…else嵌套形式——用于解决多分支问题任务2.3利用选择结构程序解决实际问题条件运算符条件运算符if(a>b){max=a;}else{max=b;}?:max=(a>b)?a:b;表达式1?表达式2:表达式3;条件表达式可用于替代简单的双分支if语句结构,提高程序的执行效率switch语句switch语句的基本形式switch(表达式){case情况1:

语句块1;case情况2:

语句块2;…case情况n:

语句块n;default:

默认情况语句块;}表达式语句块1语句块2语句块n默认语句...情况1情况2情况n默认情况

处理多分支选择问题时,可采用if…else嵌套形式,还可采用switch语句

2.3.2switch语句及应用

当switch括号内“表达式”的值与某个case后面“常量表达式”的值相等时,即执行该行对应的语句,后面的break语句可用来终止switch语句的执行。若switch括号内“表达式”的值与所有case后面的“常量表达式”均不相等时,则执行default后面的语句。switch语句的一般形式: 值的类型应为整型或字符型

不能是变量,必须是常量表达式,且必须互不相同

多个case可以共用一组执行语句。

每一组允许有多个语句,可以不用{}括起来。带有[]的部分为可选部分switch语句注意事项注意:作为条件的表达式的值必须是有序型的,只能是整型、字符型、枚举型三者之一。语句段可以是单条语句,也可以是多条语句(多条语句并不是复合语句,不需要使用花括号{})。结构中的常数值应与表示条件的表达式值对应一致,且各常数的值不能相同。switch结构中的break语句和default项可根据需要确定是否选用。switch结构允许嵌套。例3-162023/4/21知识回顾:写出两种选择语句:1.if语句的一般表达形式;2.switch语句的一般表达形式【例2.20】用switch语句实现:根据输入的课程成绩(整数),判断并输出对应的等级。

输入成绩与输出结果:90~100,优秀80~89,良好70~79,中等60~69,及格0~59,不及格其他值,输入有误!2.3.2switch语句及应用思考:(1)能否用swtich解决多分支选择结构问题,关键问题是什么?(2)if语句和switch语句有何区别?任务2.3利用选择结构程序解决实际问题

实验:将某个break语句去掉,观察运行结果,体会其作用。switch语句嵌套结构switch(a) //外层switch结构{case2:

switch(b) //内层switch结构

{

case1:

sum+=2;

break;

//退出内层switch

case2:

sum+=3;

break;

//退出内层switch

}

sum+=5; //从内层switch中退出到此继续执行

break;

//退出外层switchcase3:

sum+=10;

break;

//退出外层switch}多路开关模式的switch语句switch(表达式){case1:

语句1 break;case2:case3:

语句2 break;…default:

默认语句 break;}例3-17,3-18if…else语句和switch语句的区别if…else语句和switch语句的区别语法效率可以使用switch语句解决的问题,一定也可以用if语句的嵌套来解决使用switch语句结构时必须满足:作为条件的表达式值是一系列离散的常量值(即表示的是若干相等关系);条件通过适当变换可用离散常量值表示为相等关系;选择结构程序应用选择结构程序实例例使用

路程(km)运

费s<250没有折扣250≤s<5002%折扣500≤s<10005%折扣1000≤s<20008%折扣2000≤s<300010%折扣3000≤s15%折扣练习:从键盘上输入一个表示年份的整数,判断该年是否为闰年,如果为闰年则输出。(闰年判断方式:能被4整除但不能被100整除,或者能被400整除) switch语句计算运输公司的计费。设每吨每千米货物

的运费为x,货物重为y,路程为s,折扣为d总运费f的计

算公式为??任务3.4掌握循环结构循环语句循环语句循环的特点是,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。whiledo-whileforwhile语句任务2.4利用循环结构程序解决实际问题while语句的一般形式:while(循环条件表达式)循环体语句2.4.1while循环结构程序设计【例2.22】用while语句实现1+2+3+

+100的和。{

while(i<=100){ sum=sum+i; i++;}}思考与实验:1)1+3+5+…+992)2+4+6+…+1003)1+2+3+…+nwhile语句注意:循环体有可能一次都不执行。如果循环条件表达式是非0值常量,则构成了死循环。如果不是有意造成死循环,则循环体内必须有使得条件为假的操作。while(1){

语句}例3-19,3-20do-while语句2.4.2do…while循环结构程序设计do…while语句的一般形式:

do

循环体语句

while(表达式);【例2.24】用do…while语句实现1+2+3+…

+100的和。

do { sum=sum+i; i++; }while(i<=100);

任务2.4利用循环结构程序解决实际问题do-while语句do{

循环体语句}while(表达式);do{iNumber++;}while(iNumber<100);先执行,再判断do-while语句注意:循环体至少被执行一次。循环条件表达式是一个非0值常量值时,构成死循环。如果不是有意造成死循环,则循环体内必须有使得条件为假的操作。在使用do-while时,条件放在while后面的括号中,最后必须加上分号。do{语句}while(1);例3-21,3-22【例2.25】while和do…while循环的比较。2.4.2do…while循环结构程序设计经测试,当输入i<3时,两者运行结果相同;但当输入i≥3时,运行结果则不同。练习:统计输入的非负整数的位数。任务2.4利用循环结构程序解决实际问题for语句for语句使用for(表达式1;

表达式2;

表达式3)for(i=1;i<100;i++){}循环变量赋初值或为循环体中其它变量赋初值循环条件修改循环变量for语句使用注意:循环体有可能一次都不执行。允许在循环体中存在改变循环控制条件的语句。循环控制部分的三个表达式可以缺省,但作为分隔符使用的分号不能缺省。循环控制部分的表达式可以是逗号表达式。例3-23for循环的变体for语句中省略表达式1for(;iNumber<10;iNumber++)for语句中省略表达式2for(iCount=1;;iCount++){sum=sum+iCount;}for语句中省略表达式3for(iCount=1;iCount<50;){sum=sum+iCount;iCount++;}无限循环for循环的变体3个表达式都省略for(;;){

语句}while(1){

语句}表达式1为循环体中其它变量赋值for(sum=0;iCount<50;iCount++){sum=sum+iCount;}for语句中的逗号应用for(iSum=0,iCount=1;iCount<100;iCount++){iSum=iSum+iCount;}for(表达式1;

表达式2;

表达式3)逗号表达式for(iCount=1;iCount<100;iCount++,iCount++){iSum=iSum+iCount;}for(iCount=1;iCount<100;iCount=iCount+2)例3-24,3-253种循环语句的比较3种循环语句的比较while和do-while循环在循环体中应包含使循环趋于结束的语句(如i++或者i=i+1等);for循环可以在表达式3中包含使循环趋于结束的操作,也可以设置将循环体中的操作全部放在表达式3中。

用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成;而for语句可以在表达式1中实现循环变量的初始化。

while循环、do-while循环和for循环都可以用break语句跳出循环,用continue语句结束本次循环。循环嵌套循环嵌套概念:循环结构的嵌套指的是在循环结构的循环体中包含了另外完整的循环结构,所以循环嵌套亦称为多重循环结构。注意:三种循环结构(while、do…while、for)可以相互嵌套;循环嵌套时应注意内层循环结构必须完整地被嵌套在外层循环结构的循环体内,不得出现交叉的现象;一般情况下,嵌套结构中的外层循环和内层循环的循环控制变量不得同名。循环嵌套的结构while(表达式){

语句

while(表达式){

语句}}do{

语句

do{

语句}while(表达式);}while(表达式);while结构中嵌套while结构do-while结构中嵌套do-while结构循环嵌套的结构for(表达式;表达式;表达式){

语句

for(表达式;表达式;表达式){

语句}}do{

语句

while(表达式);{

语句}}while(表达式);for结构中嵌套for结构do-while结构中嵌套while结构例3-26,3-272.4.4循环嵌套一个循环体内又包含另一个完整的循环结构,称为循环嵌套。

{ inti,j;//定义两个循环变量

intk=0;//存放循环次数

for(i=1;i<=3;i++)

{ for(j=1;j<=4;j++)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论