版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、,第二章 C+简单程序设计,本章内容, 程序的三种基本控制结构 C+语句概述 条件语句 (重点) 循环语句 (重点) 跳转语句 (重点),2.1 程序的三种基本结构,顺序结构 按照语句的书写顺序依次执行 选择结构 根据条件选择某些语句执行 循环结构 按照条件反复执行某些语句,2.2 C+语句,说明语句: 如:int a,b,c,d; 表达式语句:如:d=a+b*c; 空语句: ; 复合语句:由括起来的若干条语句,语法上等价于一条语句。如: if(ab) int t; t=a; a=b; b=t; 流对象调用和函数调用语句:如: cina; 控制语句:选择语句、循环语句和转移语句 。,2.3选择
2、结构语句:, if 语句(条件语句) switch语句(开关语句),if 语句-形式:单分支,if(表达式) 语句,执行流程,语句格式:,例:输入一个数,输出该数的绝对值。,#include void main( ) int a; couta; if(a0) a=-a; cout”|a|=”aendl; ,语句格式: if(表达式) 语句1 else 语句2,执行流程,if 语句-形式2:两分支,例题2.2:,#include void main() int a,value; couta; if(a%2=0) value=a*a*a; else value=a*a; coutvalue=val
3、ueendl; ,输入一个正整数。若该数为偶数,求立方值后输出;若为奇数,求平方值后输出。,语句格式:,if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式3) 语句3 else if (表达式n) 语句n else 语句n+1 ,else if 不能单独使用。 else 语句n+1 为可选项。 每个分支中的语句为多条语句时要用复合语句的形式。,注意:,if 语句-形式3 : 多分支,例题2.3:,输入一个成绩,0100为有效成绩,给出该成绩 的等级: 成绩90 输出优; 80成绩90输出良; 70成绩60输出中; 60成绩70输出及格; 成绩60输出不及
4、格 。,#include void main( ) float score; coutscore; if(score100) cout=90) cout=80) cout=70) cout=60) cout及格n; else cout不及格n; ,if语句的嵌套: if语句中又包含一个if语句,例题2.4:求三个数中的最大数。,#include void main() float a,b,c,amax; coutabc; amax=a; if (bc) if (ba) amax=b; /大括号不可少 else if (ca) amax=c; coutmax=amaxendl; ,程序运行结果:
5、,请输入3个数: 1.1 2.1 3.1,max=3.1,#include void main() float a,b,c,amax; coutabc; amax=a; if (bc) if (ba) amax=b; /不加大括号 else if (ca) amax=c; coutmax=amaxendl; ,例题2.4改为如下程序的问题,请输入3个数: 1.1 2.1 3.1,程序运行结果:,max=1.1,注意:,嵌套if语句中若有多个if和else,else总是和它上面离它最近的、并且没有和其它else配对的if 配对。 加括号可以改变匹配关系。,switch语句,switch(表达式)
6、 case 常量值: 语句break; case 常量值 : 语句break; case 常量值: 语句break; default : 语句+1 break; ,说 明:,表达式的类型应是整型、字符型或枚举型。 每个常量值都不能相同,类型应与表达式的类型一致。 default语句至多只能有一个 每个case和 default的次序可以任意。,switch语句执行流程,No,计算表达式值,=常量1?,=常量2?,=常量n?,选default,语句1,语句2,语句n,语句n+1,选break,选break,选break,选break,=,=,=,Yes,Yes,No,No,No,Yes,Yes,
7、Yes,No,例题2.5:,分析程序运行结果 。,#include void main() int x,a,b,c,d; a=b=c=d=0; cinx; switch(x) case 1: a+; break; default : d=1; case 2 : b+; break; case 3 : c+; break; coutabcdendl; ,输入 结果为 输入 结果为 输入 结果为 1,执行程序:,例题2.5:,分析程序运行结果 。,#include void main() int x,a,b,c,d; a=b=c=d=0; cinx; switch(x) case 1: a+; b
8、reak; case 2 : b+; break; case 3 : c+; break; default : d=1; coutabcdendl; ,输入 结果为 输入 结果为 输入 结果为 1,执行程序:,例2.14 分析以下switch语句执行后的输出结果。,#include void main() int a=1,b=2,c=0,d=0; switch (a) case 1: switch(b) case 1: c+; break; case 2: d+; break; case 2: c+; d+; break; coutc=cendl; coutd=dendl; ,程序执行结果:,
9、 ,2.4循环结构,循环结构: 程序中反复地执行某些操作 循环语句: 实现循环结构的语句。 C+提供了3种循环语句: while语句 do-while语句 for语句,循环结构的基本要素,1.设置循环初始数据 2.确定循环条件 3.构造循环体 1)确定需要重复的操作 2)循环体中应该有控制循环结束的操作,while语句,while(表达式) 循环体,形式:,执行流程:,例题2.6:,# include void main() int i(0), sum(0); while(i101) sum+=i; i+; /循环体 coutsum=sumendl; ,求自然数100的累加和。,注意:循环体内
10、有多条语句时,必须把它们放到复合语句内。,例: 统计输入的一串字符中字母a、b、c的出现次数及总字符数,输入“#”程序结束。,运行,do-while语句,do 循环体 while(表达式);,形式:,执行流程:,与while循环的区别 do-while的循环体至少被执行一次,而while的循环体可能一次都不执行,例: 统计输入的一串字符中字母a、b、c的出现次数及总字符数,输入“#”程序结束。,运行,例:输入一个正整数,求这个数的反序数并输出。,#include void main( ) int x; do coutx; while(x=0); int y=0,z=x; do y=y*10+z
11、%10; z/=10; while(z!=0); coutx“的反序数是:”yendl; ,例2.15: 利用公式 求的近似 值,直到 为止。输出及的值。,/利用级数计算e的近似值 #include void main() int n; double e,u; n=1; e=u=1.0; /置初值 do e+=u; /计算累加和 n+; /处理下一项 u/=n; /计算通项 while(u 1.0e-7); coutn=n ; coute=eendl; ,for 语句,形式:,for(e1 ;e2 ;e3) 循环体,执行过程:,例:求1+1/2+1/3+ . +1/n,n由键盘输入。,#inc
12、lude void main( ) int i,n; double s=0; cinn; s=0; for(i=1;i=n;i+) s+=1.0/i; couts=sn; ,例题2.9计算10!,#include void main() for( int i=1, long p=1; i=10; i+) p*=i; cout10!=pendl; ,这样写编译时会有警告错误!,例题2.9计算10!(规范的程序),#include void main() int i, long p; for(i=1,p=1; i=10; i+) p*=i; cout 10!= pendl; ,例题2.9计算10!
13、(for语句的变形),#include void main() int i, long p; i=1;p=1; /循环初值 for(; i=10; ) /进入循环 p*=i; i+; /循环体 cout 10!= pendl; ,思考:如何计算任意整数的阶乘?,例题:计算任意整数的阶乘,#include void main() int i, n, long p; coutn; i=1;p=1; for(; i=n; ) p*=i; i+; coutn != “ pendl; ,二重循环,. for( ) while( ) . . .,三重循环,. for( ) . for( ) . for(
14、) . . .,多重循环(循环的嵌套):循环体中又包含循环语句,例题2.10:,分析以下程序运行结果。,#include #include void main() int i,j; for(i=1; i10; i+) j=0; while (+j=10-i) coutsetw (4) i*j; coutendl; ,1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 3 6 9 12 15 18 21 4 8 12 16 20 24 5 10 15 20 25 6 12 18 24 7 14 21 8 16 9,程序运行结果:,. 跳转语句,作用:实现程序的无条件转移控
15、制 跳转语句包括: break语句 continue语句 goto语句 (最好不用),break语句,break;,形式:,用于switch语句 用于循环语句,用途:,当在循环体中遇到break语句时,终止循环的执行,跳出本层循环,转去执行循环体后面的语句。,功能:,例题2.11:,判断输入的某正整数是否为素数。,#include void main() int m; do coutm; while(m=0); /m为0或负数则重新输入 for (int i=2; im; i+) if (m%i=0) break; if ( i=m) coutm是一个素数n; else coutm不是一个素数
16、n; ,练习:求100以内的所有素数。,#include #include void main( ) int m,i; for(m=2;m=100;m+) for (i=2; im; i+) if (m%i=0) break; if(m = i) coutsetw(5)m; ,continue语句,continue;,形式:,中断本次循环体的执行,不跳出循环,立即执行下一次循环。,用途:,只用于循环语句中。,功能:,例题12:,将100以内能被3整除的数输出,每行输出10个数。,#include void main() int k=0; /用k记能被3整除的数的个数 for(int i=1;
17、i100; i+) if ( i%3 !=0) continue; /不能被3整除,处理下一个数 couti ; if(+k%10=0) coutendl; /控制每行输出10个数 coutendl; ,练习:不用continue语句实现例12,#include void main() int k=0; /用k记能被3整除的数的个数 for(int i=1; i100; i+) if ( i%3 =0) couti ; if(+k%10=0) coutendl; /控制每行输出10个数 coutendl; ,程序设计风格,1)变量命名能够“见名知意” 例如,sum(求和)、count(计数)、
18、max(最大) 2)输入/输出数据给出必要的提示信息,输出完最后一项内容后,最好再输出一个换行符。 例如:coutnumber; couta出现的次数:naendl; 3)采用缩排格式书写语句,尽量一句一行 4)对整个程序和关键语句加注释说明,程序设计风格,例2.17: 编程输出以下图案:,1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9,#include void main( ) for (int i=1; i10; i+) for(int j=1; j=12-i; j+) /输出每行前的空格 cout“ ; for (j=1; j=i; j+) /输出各行值 couti“ ; coutendl; /换行 ,第2章小结,教学进程,重点掌握: 选择结构及语句(if、switch)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中化学选择性必修一第一章 综合检测
- 传承环境设计
- 金融理财投资科普
- 《跨学科实践:为节约能源设计方案》课件
- 门票设计模板应用规范
- 课桌教学设计模板
- 手工设计汇报
- 班干部竞选自我介绍
- 郫县商业计划书
- 服装品牌设计策划
- 2026云南高创人才服务有限公司招聘6人笔试备考试题及答案解析
- 第六章-初始适航管理-民用航空器适航管理教学课件
- DB44∕T 2830-2026 艾滋病病毒感染者及艾滋病患者手术室管理规范
- 黑龙江省哈尔滨市2025届中考物理试卷(含答案)
- 2026年中国中车集团软件岗面试常见问题及嵌入式系统考点
- 储能行业压缩空气储能电站经济性调研报告
- 长租公寓盈利模式与成本结构优化
- 2026年自贡市自流井区社区工作者招聘笔试参考试题及答案解析
- 2026年初级经济师之初级经济师工商管理从业资格考试真题及参考答案详解AB卷
- 雨课堂学堂在线学堂云审计法律研究与案例(西南政法大学)单元测试考核答案
- 2026安徽合肥市发展和改革委员会上半年招聘事业单位工作人员20人考试备考试题及答案解析
评论
0/150
提交评论