专业C4讲流程控制课件教学讲义_第1页
专业C4讲流程控制课件教学讲义_第2页
专业C4讲流程控制课件教学讲义_第3页
专业C4讲流程控制课件教学讲义_第4页
专业C4讲流程控制课件教学讲义_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

本讲知识点:三种循环结构的掌握开关语句的掌握跳转语句、返回语句的掌握重点:流程控制结构难点:for循环结构的执行顺序第四讲流程控制一、流程控制对于算法设计、算法描述中所出现的条件分支、循环等结构,C++语言需要有与之相应语句实现。已经证明:任何复杂的计算流程均可以被分解为以下3种结构及其嵌套。顺序结构分支结构(C++支持两路分支、多分支)循环结构(C++提供3种基本循环语句)C++还提供以下流程跳转语句(break,continue,return,goto等),以方便程序结构控制。条件分支(if)语句条件分支整个结构“单入口、单出口”

if(表达式)语句1;else

语句2;

if(表达式){语句串1;}else

{

语句串2;}表达式语句1语句2假(零)真(非零)while循环语句

表达式为是否继续循环的条件;先判断条件,循环体可能执行0次、1次或多次。

while(表达式)循环体语句;

while(表达式){循环体语句串;}表达式循环体语句假(零)真(非零)do…while循环先执行循环体,使循环体至少被执行一次;建议用一对花括号将循环体语句包围起来(即使循环体为单语句),并且将右花括号写在while前(见上面的第二种写法),以明显地区别于while循环。

do

循环体语句;

while(表达式);

do

{

循环体语句;

}while(表达式);表达式循环体语句假(零)真#include<iostream>//4-1.cppusingnamespacestd;intmain(){inti,sum;

i=1;

while(i<=100){ sum+=i;}cout<<"sum="<<sum<<endl;

return0;}程序改错请用do-while改写!sum=0;i++;#include<iostream>//4-2.cppusingnamespacestd;intmain(){inti,sum=0;

i=1;

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

return0;}用do-while改写实战练习输出正整数n的所有约数。#include<iostream>//4-3.cpp#include<cstdlib>usingnamespacestd;intmain(){ inti,n; cout<<"请输入一个正整数:"; cin>>n; if(n<1)exit(0); cout<<n<<"的所有约数为:"; i=0; while(i<n) { i++; if(n%i==0)cout<<i<<""; } cout<<endl;return0;}for循环表达式1被且仅被执行一次;3个表达式均可缺省,缺省表达式2表示true,但两个分号不能缺省;可以将循环体语句与表达式3合并。for(表达式1;表达式2;表达式3)循环体语句;for(表达式1;表达式2;表达式3){循环体语句串;}表达式2循环体语句假(零)真(非零)表达式3表达式1用公式:π/4≈1-1/3+1/5-1/7+…

求π的近似值,直到最后一项的绝对值小于10^-6为止实战练习#include<iostream>//4-4.cpp#include<cmath>usingnamespacestd;intmain(){ floatn,t,pi; ints; t=1; pi=0; s=1; for(n=1.0;fabs(t)>1e-6;n=n+2) { pi=pi+t; s=-s; t=s/n; } pi=pi*4; cout<<"pi="<<pi<<endl;return0;}开关语句switch(整型或枚举型表达式){case

常量表达式1:语句组1;case

常量表达式2:语句组2;…case

常量表达式n:语句组n;default:语句组n+1;}整型或枚举型表达式常量1语句组1常量2语句组2常量n语句组n其他语句组n+1break;break;break;实战练习输入一个十进制数,根据输入的数输出所对应的星期几,若所输入的数小于1或大于7,则输出“出错”。#include<iostream>//4-5.cppusingnamespacestd;intmain(){ intday; cout<<"请输入一个整数:"; cin>>day; switch(day) { case1:cout<<"星期一"<<endl; case2:cout<<"星期二"<<endl; case3:cout<<"星期三"<<endl; case4:cout<<"星期四"<<endl; case5:cout<<"星期五"<<endl; case6:cout<<"星期六"<<endl; case7:cout<<"星期天"<<endl; default:cout<<"超出范围!"<<endl; } return0;}#include<iostream>//改进后的程序4-6.cppusingnamespacestd;intmain(){ intday; cout<<"请输入一个整数:"; cin>>day; switch(day) { case1:cout<<"星期一"<<endl;break; case2:cout<<"星期二"<<endl;break; case3:cout<<"星期三"<<endl;break; case4:cout<<"星期四"<<endl;break; case5:cout<<"星期五"<<endl;break; case6:cout<<"星期六"<<endl;break; case7:cout<<"星期天"<<endl;break; default:cout<<"超出范围!"<<endl; } return0;}实战练习题目:将百分制的分数转换为5个等级90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。例如,输入75,则显示C。【分析】先判断输入的数据是否在合理的分数范围(0~100)内,然后再判断是哪个分数段:90分以上输出A,80~89分输出B,70~79分输出C,60~69分输出D,否则显示E。用if语句实现if(s<0||s>100) cout<<"Inputdataerror\n"; else if(s>=90) cout<<"A\n"; else if(s>=80) cout<<"B\n"; else if(s>=70) cout<<"C\n"; else if(s>=60) cout<<"D\n"; else cout<<"E\n";#include<iostream>//4-7.cppusingnamespacestd;intmain(){ ints; cout<<"Pleaseinputthescore:"; cin>>s; if(s<0||s>100)cout<<"error\n"; else {

用switch语句实现使用switch语句,当然最笨的办法是每一个分数一个case分支。有没有简化的办法呢?

switch(s/10)//根据转换值进行分支选择

{ case10: case9: cout<<"A\n"; break; case8: cout<<"B\n"; break; case7: cout<<"C\n"; break; case6: cout<<"D\n"; break; default: cout<<"E\n"; } } return0;}跳转语句

break仅结束其所在的一层循环语句或者开关语句

continue提前结束本轮循环,准备进入下一轮循环

return

返回语句,用于函数结束时return;对应与返回类型为

void

的函数return表达式;表达式的数据类型对应于函数的返回类型

goto不提倡使用。建议不要使用。for循环中的break及continue

C++支持大型软件开发显然,不宜将所有的语句都写入主函数其实,应该使主函数尽可能地简单。主要起调度作用,

控制其他功能模块(即其他函数的调用);函数逐个调用及返回,实现多种功能。启动程序执行时,将使主函数自动执行;在主函数中遇到return语句将引起程序结束。二、基本程序扩展主函数功能函数1功能函数2功能函数3功能函数4功能函数5功能函数6例如:改编“算术测验”程序之二设计“加法测验”功能函数首先将原来的主函数名改成

add_test;去掉输出成绩语句,将测验成绩作为该函数的返回值returnscore;

设计主函数,调用add_test函数今后可扩展主函数加法测验减法测验…………

//test3.cpp

#include<iostream>

usingnamespacestd;

intadd_test(); //①函数声明intmain() //主函数尽可能地简单

{

intscore;score=add_test(); //②函数调用(执行语句)

cout<<”成绩:”<<score<<”分”<<endl;return0;}

intadd_test() //③函数定义(函数实现)

{

intx,y,z;

inti,score;time_tt;srand(time(&t)); //为了获得更好的随机性

score=0;

i=0;

while(i<10){x=rand()%21;y=rand()%21;cout<<x<<”+”<<y<<”=”;cin>>z;

if(x+y==z)score+=10;i++;

}returnscore; //返回测试成绩}//test3.cpp 增加减法测验功能(请参见2.3.2小节)

#include<iostream>

usingnamespacestd;

intadd_test(),sub_test(); //①函数声明intmain() //主函数起调度作用

{

intscore,choice=1;

while(choice){cout<<”\n1----加法测试”

<<”\n2----减法测试”

<<”\n0----退出”<<endl;cin>>choice;

温馨提示

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

评论

0/150

提交评论