




已阅读5页,还剩95页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主讲:魏英,第三章 程序设计初步,2,目录,面向过程的程序设计和算法 C+程序和语句 赋值语句 C+的输入与输出 编写顺序结构的程序 关系运算和逻辑运算 选择结构和if语句 条件运算符和条件表达式 多分支选择结构和switch语句,3,目录,编写选择结构的程序 循环结构和循环语句 循环的嵌套 break语句与continue语句 编写多循环结构的程序,4,面向过程的程序设计和算法,算法的概念程序=算法+数据结构+程序设计方法+语言工具 一个程序应包括四个要素:算法、数据结构、程序设计方法、语言工具。算法 求解问题的方法和步骤(做什么,如何做);算法设计算法不唯一,要考虑到是否正确、质量优劣;算法类别数值运算算法、非数值运算算法;,5,面向过程的程序设计和算法,简单算法举例, t=1 i=2 tit i+1i 若i5,则返 回,否则 输出t,例1:计算5!,计算1357911 t=1 i=3 tit i+2i 若i11,则返 回,否则 输出t,6,算法的表示,自然语言 流程图,面向过程的程序设计和算法,7,自然语言 t=1 i=2 tit i+1i 若i5,则返 回,否则 输出t,例:计算5!,传统流程图,F,t = 1,i = 2,tit,i+1i,i5?,输出t,T,开始,面向过程的程序设计和算法,8,C+程序和语句,C+程序的结构,9,一个程序由以下几部分构成:1)预处理命令。2)声明部分。3)函数。,#include using namespace std; int a=3; 分int main( ) int a , b , c ; cinab; c = a+b ; cout“max=”cendl; return 0;,C+程序和语句,10,C+语句的分类:可以分为四大类:声明语句、执行语句、空语句、复合语句1)声明语句 如:int a,b;2)执行语句 表达式语句:由一个表达式后跟“;”组成 赋值语句:赋值表达式加一个;号 如:s=3.14159*r*r; i+; 函数和流对象调用语句: 如:s=max(a,b); coutxendl; 结构控制语句:控制程序流程 选择语句:if()else switch 循环语句:for() while() dowhile() 转向语句:continue break return goto,C+程序和语句,11,2)复合语句:将一组语句括在一对 中 如:while(i100) sum+=i; i+; 3) 空语句:; 空语句用做转向点,或者为循环语句提供空体。 如:for(i=0;i0) t=a; 表达式 语句 注意: 赋值表达式可以包含在其他表达式中,而赋值语句不行。 赋值语句只能作为一条单独的语句,或放在复合语句中。 赋值语句用途很广,13,C+的输入与输出,#include using namespace std;int main( ) int a , b , c ; cinab; c = a+b ; cout“max=”c”是流提取运算符,作用是从默认的输入设备的输入流中提取若干字节送到计算机内存区中指定的变量。,14,注意:不能用一个插入运算符“”输入多个变量的值。 如:couta,b,c; 错误! coutabc; 在用cout输出时,系统会自动将数据以所定义的类型输出。在用cin输入时,系统会根据变量的类型从输入流中提取相应 长度的字节。 如:int i1,i2,i3; char c1,c2,c3; double d; cini1i2i3; cinc1c2c3; cinc1c2i1d; 输入:1234 56.78,C+的输入与输出,15,在输入输出流中使用控制符在程序开头要有 # include ,C+的输入与输出,16,例:,double a=123.456789012345couta; 123.456coutsetprecision(9)a; 123.456789coutsetprecision(6); 恢复默认格式coutsetiosflags(ios:fixed); 123.456789coutsetiosflags(ios:fixed)setprecision(8)a; 123.45678901coutsetiosflags(ios:scientific)a; 1.2345678e+02coutsetiosflags(ios:scientific)setprecision(4)a; 1.2346e02,int b=123456;coutb; 123456couthexb; 1e240coutsetiosflags(ios:uppercase)b; 1E240coutsew(10)b,b; 123456,123456coutsetfill(*)setw(10)b; *123456coutsetiosflags(ios:showpos)b; +123456,C+的输入与输出,17,用getchar和putchar函数进行字符的输入和输出在程序开头要有 # include 默认的输入设备键盘,默认的输出设备显示器。1. putchar字符输出函数功能:向系统隐含的输出设备(显示器)输出一个字符。调用格式: putchar( 参数) 如:putchar(c)参数形式:字符常量 / 变量、整型常量 / 变量、表达式;,C+的输入与输出,18,例: putchar(a); 输出变量a的内容 putchar(a); 输出字符a putchar(141 ); 输出字符a putchar( n); 输出换行符 putchar(); 输出单引号字符putchar函数一般不放在表达式中,而是单独加上;成为一个语句。例:#include viod main() char c1,c2; c1=b; c2=98; putchar(c1); putchar(c2); putchar(b); putchar(98); ,C+的输入与输出,19,2. getchar字符输入函数 调用格式: getchar( ) 功能:从系统隐含的输入设备(键盘)输入一个 字符。 说明:无参,返回值为输入字符的ASIIC码; 是从键盘缓冲区读入字符的函数; 要求:使用文件包含预编译命令 # include ,C+的输入与输出,20,注意: 当输入多个字符时,多余字符做废。例1:输入一个字符并输出 #include ”stdio.h” int main( ) char c; c=getchar( ); putchar(c); return 0; ,abcde 输入 a a 输出 a,C+的输入与输出,21, 用getchar()得到的字符可以赋给字符型变量、整型变量,或作为表达式的一部分。例2:把大写字母转换成小写字母。 #include ”stdio.h” int main( ) char c; c=getchar( )+32; putchar(c); return 0; A 输入 a 输出,C+的输入与输出,22,利用getchar函数可达到暂停效果;例3:#include ”stdio.h” int main( ) cout“15*4=”15*4endl; cout 0 (其中a、b、c的值由键盘输入),#include #include using namespace std;int main( ) double a,b,c,x1,x2; cinabc; x1=(-b+sqrt(b*b-4*a*c)/(2*a); x2=(-b-sqrt(b*b-4*a*c)/(2*a); cout“x1=”x1endl; cout“x2=”x2 = 大于或等于 = = 等于 ! = 不等于,7级、双目、自左而右,8级、双目、自左而右,关系运算和逻辑运算,25,例如: ca+b 等价于 c(a+b) ab=c 等价于 (ab)=c a=bc 等价于 a=(bc),关系运算和逻辑运算,26,2. 关系表达式一般形式: 表达式1、2的形式:算术、赋值、逗号、关系等任 何C合法表达式。 例如:a+bc-b ab= c abc关系表达式的值: 真对应关系式成立,用整型量1代表; 假对应关系式不成立,用整型量0代表; 上述表达式中,若a=3,b=2,c=1,则结果分别为1,1,0,关系运算和逻辑运算,27,举例:写出下列表达式的值若有定义:int a=3, b=2, c=1; char ch1=a;1) ab 2) ch1b)(bbbb=c7) f=abc, 1, 1, 0, 1, 1, 1, 0,关系运算和逻辑运算,28,逻辑运算符和逻辑表达式1. 逻辑运算符三个: ! 逻辑非3级、单目、自右而左; 如:!a & 逻辑与12级、双目、自左而右;如:a&b | | 逻辑或13级、双目、自左而右;如:a|b,关系运算和逻辑运算,29,2. 逻辑表达式一般形式: 双目: 单目:! 例:(ab)&(xy) (ab)|(xy) !(ab)表达式1、2:任何C合法的表达式。逻辑表达式的值: 真条件成立,用整型量1代表; 假条件不成立,用整型量0代表;逻辑运算对象:0被视为逻辑量“假”; 非0被视为逻辑量“真”。 例:若a=4,b=5,则a&b的值为1,关系运算和逻辑运算,30,逻辑运算真值表:,例:数学英语均大于80 a:数学80 b:英语80 条件:a&b 数学英语中有不及格的课程 a: 数学60 b:英语=1&a=1&b=10) 注意:不要写成(1=a=8)&(1=b0&b0)|(a0,(a*b=0)&(a+b!=0),(a%5=0)|(a%7=0),关系运算和逻辑运算,32,运算符优先次序:!(非)算术运算符关系运算符&和|赋值运算符,注意: 在给出一个逻辑运算或关系运算结果时,以“0”代表“假”,以“1”代表“真”,在判断一个量为真假时,以“0”代表“假”,以“非0”代表“真”。,例:求解表达式 ! a & b | x+y c 设 a=0,b=0,c=5,x=3,y=1,,=1 =0 =4 =0 =0,关系运算和逻辑运算,33,C在逻辑表达式求解时,并不一定是所有的运算都被执行,当刚开始求解或求解的中途就可以确定整个逻辑表达式的值时,其余的运算将不再进行。 对 (m=ab) & (n=cd),关系运算和逻辑运算,34,选择结构和if语句,if 语句 (分支控制语句)一、 if 语句的 三种形式单路分支:条件成立执行操作,不成立什么也不做; 如:if(xy) printf(“%d”,x);双路分支:条件成立执行A操作,不成立执行B操作; 如:if(xy) printf(“%d”,x); else printf(“%d”,y);嵌套分支:条件成立执行A操作,不成立时还需要进 一步进行分支判断。,35,第一种形式单路分支 if (表达式)语句 例:if (xab; if (a=b) couta“,”bendl; else cout b “,”aendl; return 0; 注意: 在每个else前面有一个分号,整个语句结束处有一个分号,且else必须和if 配套使用。 if (a=b) couta“,”bendl; else 各有一个分号 cout b “,”ax; if (x=0) y=x; else y=x*x+1.0; cout“y=”yendl; return 0; ,x x0x2 + 1 x=0) y=x; cout“y=”yendl;else y=x*x+1.0; cout“y=”yg; if (g100) cout=80) cout=70) cout=60) cout”C”; else coutg; if (g100) cout=60) cout=70) cout=80) coutx; if(x= -3.0 ,input x : 1x=1.0 y=2.8,if (e1) if(e2) s1 else s2else if(e3) s3 else s4,选择结构和if语句,44,if ( e1) if (e2) A else Belse if (e3) C else D,嵌套if语句的多种形式:,比较: if (x) if (y) cout“1”; else cout“2”;,与 if (x) if (y) cout“1”; else coutyear; if(year%400 = 0) leap=1; else if(year%4 = 0) if(year%100 = 0) leap=0; else leap=1 else leap=0; if (leap=1) coutyear“年是闰年”endl; else coutyear“年不是闰年”b) max=a; max=(ab)?a:b else max=b;,48,注意: 条件运算符的结合方向为“自右至左”。 例:ab?a:cd?c:d 相当于 条件表达式还可以写成以下形式: ab?(a=100):(a=100) 或 ab? max1(a,b):max2(a,b) 表达式1的类型可以与表达式2和表达式3的类型 不同; 表达式2、3的类型也可以不同,此时整个条件 表达式的值的类型与两者中较高者一致。,ab?a:(cd?c:d),例:int x; x?a:b;,例: float x, y; int a=2; cinx; y=x40 ? a : a*0.9;,条件运算符和条件表达式,49,例:读程序,写出程序完成的功能。,int main( ) int a,b,max; coutab; max=ab?a:b; cout“the max is ”maxendl; return 0;,coutb?a:b endl;,coutb?a:b g; switch( g ) caseA:cout“85100”endl; caseB: cout“ 7084”endl; caseC: cout“ 6069 ”endl; caseD: cout“ 60 ”endl; default: cout“ error ”endl; return 0;,B7084606960error,多分支选择结构和switch语句,53,3. 使用说明1) 在switch中可以使用break语句跳出switch结构;,switch (表达式) case c1: s1 break; case c2: s2 break; case cn: sn break; default : sn+1 ,多分支选择结构和switch语句,54,例:switch(x) case 1: cout“statement 1”; break; case 2: cout“statement 2”; break; default: coutg; switch( g ) caseA:cout“85100”endl; break; caseB: cout“ 7084 ”endl; break; caseC: cout“ 6069 ”endl; break; caseD: cout“ 60 ”endl; break; default: cout“ error ”endl; return 0;,B7084,多分支选择结构和switch语句,56,2)default为可选项,它提供了表达式的值与任何常量都不相同时的执行方案;若表达式的值与任何常量都不相同时什么也不需要做,则省略关键字default;3)并不是所有的多路选择都能用switch语句来描述的。注意switch语句是根据同一个表达式的不同值形成分支,而不能根据不同的表达式进行分支,这一点与ifelse 语句是不同的。,多分支选择结构和switch语句,57,例1:运输公司对用户计算运费。收费标准随距离s变化如下: s250km 不折扣 250 s500km 2% 500 s1000km 5% 1000s2000km 8% 2000spsw; switch( (int)(s/250) ) case 0: d=0; break; case 1: d=0.02; break; case 2: case 3: d=0.05; break; case 4: case 5: case 6: case 7: d=0.08; break; case 8: case 9: case 10: case 11: d=0.1; break; default: d=0.15; f=p*s*w*(1-d); cout“总运费为:”fendl; return 0; ,多分支选择结构和switch语句,60,循环结构和循环语句,一、用while语句构成循环用while语句实现当型循环一般形式:while (表达式) 语句;执行过程:当表达式的值为真(非0)时,执行其中的内嵌语句(循环体),然后回过头来再判 断表达式的值,如此重复;当表 达式为假(0)时结束循环。循环类型:当型,先判断后执 行,循环体有可能一 次也不被执行。,61,例:求,注意:若循环体包含一条以上的语句,应以复合语句形式出现。循环前,必须给循环控制变量赋初值。在循环体里面,必须有改变循环控制变量值的语句。循环体可以为空语句。,等价于:while(c=getchar()!=A);,如:c=getchar(); while(c!=A) c=getchar();,int main( ) int k=1, sum=0; while(k=100) sum=sum+k; k+ ; coutsumendl; return 0; ,循环结构和循环语句,62,int main( ) int k=1,s=0; while(k=3) s=s+k; k+; cout“s=”sn; s=0;k=1; while(k=n) s=s+k; k+; cout“”n“=”n; t=1;k=1; while(k=n) t=t*k; k+; coutn“!=”t; return 0; ,enter n: 55!=120,循环结构和循环语句,64,二、用do - while语句构成循环do-while语句用来实现“直到”型循环。一般形式: do 语句 while (表达式) ;其中:表达式表示了循环条件; 形式:任何表达式。内嵌语句为循环体;形式:单条、复合、空语句。注意:与while循环相同,循环体语句,表达式,非0(真),0(假),下一条语句,循环结构和循环语句,65,循环类型:直到型,先执行后判断,循环体至少执行一次。,int main( ) int k=1, s=0; do s=s+k; k+ ; while(k=3) ; cout“s=”s; return 0;,int main( ) int k=1,s=0; while(k=3) s=s+k; k+; cout“s=”s; return 0;,循环结构和循环语句,66,三、用for语句构成循环一般形式:for (表达式1; 表达式2; 表达式3) 语句其中:内嵌语句为循环体;形式:单条、复合、空语句;各表达式可是任何形式的表达式;通常: 表达式1用于对循环控制变量赋初值 表达式2给出循环控制条件 表达式3使循环控制变量增值,int main( ) int k=1,s=0; while(k=3) s=s+k; k+; cout“s=”s; return 0; ,for(k=1;k=3;k+) s=s+k;,循环结构和循环语句,67,for语句执行流程:,整个循环过程中表达式1只求解一次;,内嵌语句和表达式3是重复执行的内容;,表达式2相当于是for的循环条件;,循环结构和循环语句,for (表达式1; 表达式2; 表达式3) 语句,68,for循环的其他形式:,for ( 表达式1 ;表达式2 ;表达式3 ) 语句,可以移到for语句的前面,可以移到内嵌语句的后面,表达式1;for ( ;表达式2 ;表达式3 ) 语句,for ( 表达式1;表达式2 ;) 语句 表达式3; ,不能为空值,循环结构和循环语句,69,说明: 1. 表达式1省略时,应该在for前给循环变量赋初值。 如:k=1; for (;k=3;k+) s=s+k 2. 表达式2省略时,不判断循环条件,将成为“死循 环”,需要在循环体中引入break语句以退出循环。 3. 表达式3省略时,循环体内应有使循环条件改变的 语句。 如:for (k=1;k=3;) s=s+k; k+; 4. 同时省略表达式1和表达式3,只有表达式2,此时 相当于while语句。如: k=1; k=1; for (;k=3;) while (k=3) s=s+k; s=s+k; k+; k+;,循环结构和循环语句,70,5. 表达式2一般是关系表达式或逻辑表达式,但也可以是 数值表达式和字符表达式,只要其值不等于0就执行循 环体。 如:for (k=1;k-4;k+) s=s+k;6. 表达式1可以是与循环控制变量无关的其他表达式。 如:for(sum=0;i=100;i+) sum=sum+i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025智能制造合作合同
- 2025短期合同工聘用合同范本
- 幼儿园常见传染病预防
- 传染病防治工作培训会
- 脊柱围手术期护理
- 2025年植物遗传综合试题
- 审计处工作总结模版
- 僵人综合征的临床护理
- 船厂班组年终总结模版
- 电力设备行业深度报告:欧洲电车趋势已起-从欧洲车企2025Q1财报看电动化趋势151mb
- 树木移栽施工协议书
- 手术前抗凝药停用时间
- 2025湖北水发集团园招聘40人笔试参考题库附带答案详解
- 《结直肠癌精准治疗策略与实践课件》
- 水务公司笔试题目及答案
- 延安通和电业有限责任公司招聘真题2024
- 2025年离婚协议范文下载8篇
- 病媒生物防治试题及答案
- 正定古城介绍课件
- 超声技术在麻醉监测中的新兴应用-全面剖析
- 2024年陕西省城固县事业单位公开招聘医疗卫生岗笔试题带答案
评论
0/150
提交评论