C第三章程序设计初步解析_第1页
C第三章程序设计初步解析_第2页
免费预览已结束,剩余13页可下载查看

下载本文档

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

文档简介

1、第三章程序设计初步算法:数据结构+ 算法=程序1、 算法:是对特定问题求解步骤的一种描述2、 数据结构:数据的组织形式及其相互关系算法的表示:1、自然语言 2、流程图 3、伪代码 4、计算机语言C+程序结构:组成:预处理命令,全局声明,函数/预处理命令/在函数之外的全局声明在函数之外的全局声明 函数首部 函数内部的声明执行语句 执行语句C+语句:分类:声明语句,执行语句,空语句,复合语句1.声明语句:如 int a,b;2. 执行语句:控制语句,函数与流对象调用语句,表达式语句1控制语句:(1) .分支语句:条件选择:if( )else ; 多分枝选择:switch(2) .循环语句:for(

2、 ) ,while( ) , dowhile()。(3).辅助控制语句:continue(结束本次循环语句)goto( 转向语句)break( 中止执行 switch 或循环语句)return(从函数返回语句)2.函数与流对象调用语句sort(x,y,z); /假设已定义了 sort 函数,他有三个参数coutvvxvve ndl;/流对象调用语句3.表达式语句:如 i=i+1:3. 空语句:(什么也不做)4. 复合语句:用把一些语句括起来。z=x+y;if( z100) z=z+100;coutz;注:1.每个语句最后必须加分号:2. “ ”后不加分号变量:例:#include using

3、n amespace std:int a=3;/Int mai n()/float b;/b=4.5;/coutvvavvb;/return 0;/全局变量,局部变量执行语句1.顺序结构1!AAB程序的三种基本结构:顺序结构,选择结构,循环结构B流程2.选择结构3.循环结构(1)二分支选择结构(2)多分枝选择结构(1).当型循环结构直到 P 为真(2).直到型循环结构顺序程序设计赋值操作:1.赋值语句格式:赋值表达式;2.赋值语句与赋值表达式的区别:赋值表达式可以包含在其它表达式中,而赋值语句不可。如如: if (a=b)0) t=a;不可写为:if (a=b;)0) t=a;C+ 的输入输出

4、:首加 #i nclude概念:cout- 输出流对象cin -输入流对象- 流提取运算符Cout 语句格式:coutvv 表达式 1表达式 2.变量1变量 2. 变量 n;一个 cout 语句可分成若干行(见书 P52)注:1.使用输入输出时,在程序的开头增加一行:#include ;2. 使用控制符:有时缺省输出格式不能满足要求,这时可以用控制符控制输出的格式,在程序的开头增加一行:#i ncludevioma nip.h例:#include#i ncludevioma nip.hvoid mai n()coutsetw(5)vvsetprecisi on( 3)v3.1415ve ndl

5、;3. 数学函数控制符:程序中使用了数学函数如 sqrt(),首#“clude.4.不能用一个插入运算符”插入多个输入项如口: couta,b,c; 错, coutvva+b+c; 对C 的输入输出:首加#include ,无 I/O 语句,I/O 操作由函数实现printf 禾口 scanf 函数printf 函数(1) pri ntf 函数的一般格式为:printf(格式控制字符串,输出项 1,输出项 2,)括号中的格式控制字符串和输出项都是函数参数。printf()函数的功能是将后面的参数按给定的格式输出。(2) .格式控制字符串中有格式说明,也有普通字符。格式说明由”%和格式字符组成,

6、如%d, %f 等。它的作用是将输出的数据转换成指定的格式输出。普通字符按原样输出,如:#i nclude stdio.hvoid mai n()int a = 10, b = 20;prin tf(%d, %d, a, b);格式符(1) %d 格式符用来输出 10 进制整数,可以有长度修饰。如:#i nclude stdio.hvoid mai n()int a = 28, b = 38;long c = 123456;prin tf(%5d, %5dn%ldn, a, b, c); prin tf(%3ldn%7ldn%dn, c, c, c);输出结果为:28,381234561234

7、56/n 表示换行123456%5d 表示输出宽度为 5,%ld 表示输出为长整型123456如果整数的位数多于指定宽度,则按实际位数输出(2) %o 和x 格式符用来输出 8 进制、16 进制整数。8 进制和 16 进制都是无符号整数,输出时 不带符号。如:#i nclude stdio.hvoid mai n()int a = 1200;prin tf(%d, %o, %x, %X, %6xn, a, a, a, a, a);输出结果为:1200, 2260, 4b0, 4B0, 4b0(3) %u 格式符:用来输出无符号 10 进制整数。(4) %c 格式符用来输出一个字符。如果一个整数

8、,其值在0255 之间,也可以字符方式输出。它们都可以指定格式宽度。例如:char ch = a;int a = 65;prin tf(%c, %d, %3cn, ch, ch, ch);prin tf(%c, %d, %3dn, a , a, a);输出结果为:a, 97, aA, 65, 65(5) %s 格式符用来输出字符串。可以指定格式宽度,如果字符串长小于指定的宽度时,可 以选择左对齐或右对齐。另外,还可以选择输出字符中的前n 个字符。例如:prin tf(%s, Hellon);prin tf(Hellon);prin tf(%3s, %-5.3s, %5.2sn, Hello,

9、Hello, Hello);输出结果为:HelloHelloHello, Hel , He注:(1).如果输出的只有一个字符串,可以省略格式参数,因为格式参数本身可 以是原样输出的普通字符串。(2). “ %-5.3s ”中的负号表示左对齐,如果没有负号,则默认为右对齐。5表示格式宽度,3 表示截取字符串中 3 个字符。(6) %f 格式符用来以小数方式输出。可指定格式宽度,也可以指定小数位数,还可以规定 左对齐或右对齐。如:float x = 123.456;double y = 321.654321;prin tf(%f, %-7.2f, %10.4fn, x, x, x);prin tf

10、(%lf, %-7.2lf, %10.4lfn, y, y, y);输出结果为:123.456001, 123.46 ,123.4560321.654321,321.65 ,321.6543注:以%f 格式输出时,默认的小数位数是 6 位。%-7.2f 表示左对齐,总长度为 7 位,小数位数为 2 位。1. 除 X 格式外,其他格式必须用小写字母,例如4 不能写成%D2. 可以在 printf 函数中的“格式控制”字符串内使用“转义字符”,如/n。3. 如果想输出字符%则应该在“格式控制”字符串中连续用两个表示,如:printf( “%f% , 1.0/3);scanf 函数1. scanf

11、的一般形式为:scanf(格式控制字符串,地址 1,地址 2,)2. 格式控制字符串:含义同 printf 函数,地址 n 是变量的地址。%d 用以输入整数,可以指定数据所占列数%c 用以输入字符,可以指定数据所占列数%o, %x 用以输入 8 进制和 16 进制整数%f 用以输入浮点数,不能规定精度%s 用以输入字符串,以非空字符开始,以空字符或回车结束。注:1.如果在后有一个*号,表示从此跳过指定的列数。例:int i, j;seanf(“3d%3” , &i, &j); / 输入 123456seanf(“ %2d_%*3d_%2d, &i, &j);/

12、输入 12_345_67scanf(“%d,%d , &i, &j);/ 输入 3,42.seanf 函数中的“格式控制”后面应当是变量地址,而不是变量名。3. 如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入 数据时在对应位置应输入与这些字符相同的字符。4.在使用e 格式输入字符时,空格字符和“转义字符”都作为有效字符输入5. 在输入数据时,遇以下情况时该数据认为结束(1) .遇空格,或按“回车”,或” Tab”键(2) .按指定的宽度结束,如%3d 只取 3 列(3) .遇非法输入。字符输入与输出字符输出函数 putchar格式:putehar( e )参数

13、:e 为字符常量、变量或表达式功能:把字符 e 输出到显示器上返值:正常,为显示的代码值;出错,为 E0F(-1)字符输入函数 getehar格式:getehar()功能:从键盘读一字符返值:正常,返回读取的代码值;出错,返回 E0F(-1) 例:从键盘输入大写字母,用小写字母输出#i nclude using n amespaee std;int mai n()ehar c1,c2;int a1,a2;e1=getehar(); e2=e1+32;putchar(c1);putchar(c2);putchar(n); a1=e1;a2=e2;eouta1n a2;return 0;关系运算和

14、逻辑运算关系运算符: =;=匸优先级相同(高)优先级相同(低)1. 优先级:算术运算符关系运算符赋值运算符。2. 结合性:从左到右。关系表达式:1.定义:关系表达式是一种最简单的逻辑表达式,其结果类型为 bool,值只 能为“ 1” (true)或“ 0” (false)。例如:已设定 a=3,b=2,c=1d=ab, 则 d=1;f=abc,则 f=0;2. 格式:表达式关系运算符表达式例如:ab,c 关系运算符&(与),|(或)赋值运算符。2.结合性:从左到右。逻辑表达式1. 格式:表达式 逻辑运算符 表达式。例如:(ab)&(xy)2. 结果类型:bool,值只能为“ 1

15、” (true)或“ 0” (false)。女口: a=4 则!a=0;a=4,b=5, 则 a&b=1;(非 0 为真)注:(1).比较运算符_- 与 if(x : 9)COUtVV“xisnoton ;if(x 9)COUtVV“xisnoton” ;(2) .不等于运算符if(x! 9)与if(x !:9)(3) 逻辑非例.若 CX-=15,ax5! C X ax 6(! cx)(ax-6)! (exax 6)(4).10 X5若写成5v XV10从左到右 (衡为 1)应写成 X5 &XV10(5).逻辑运算符两侧的表达式不到可以是关系表达式或整数,也可以是任何数值类型的

16、数据。如c& d例题:若 x,y,z 的初值均为 1,则执行表达式 w=+x|+y&+z后,x,y,z 的值分别为_ oA ) x=1,y=1,z=2B) x=2,y=2,z=2C ) x=2,y=1,z=2D) x=2,y=1,z=1(D)解:+x 后 x=2 为真,“| ”后面的部分不需要执行选择程序设计条件运算符与条件表达式般形式:表达式 1 ?表达式 2:表达式 3 (表达式 1 必须是 bool 类型)例: x=a条件运算符 赋值运算符例 max=(ab)?a:b+1结合性:“自右向左”例ab?a:cd?c:d 即 ab?a:(cd?c:d)注:1.条件表达式与一般

17、if 的语句可以相互替换2.表达式 2、3 的类型不同,条件表达式的最终类型为 2 和 3 中较高的类型if 语句1.形式:1.if (表达式)语句;。例:if (xy) coutx;2.if (表达式)语句 1 ;else 语句 2; 例: if (xy) coutx; else couty;3多分支 if 语句:if(表达式 1)语句 1 ;语句语句;3.if . else 语句if (条件表达式)语句 1;else 语句 2;例:判断年份是否为闰年#include using n amespace std;int mai n()int year;coutplease en ter the

18、 yearn; cin year;if(year%400=0) coutyearis leap year;else if(year%4=0&year%100!=0) coutyearis leap year;else coutyearis not leap year; return 0;4.嵌套 if 语句一般形式:if ()if ()语句 1else语句2elseif ()语句 3else语句 4注:1.语句 1-4 能是复合语句,每层的 if 与 else 配对,或用 来确定层次。- 2.If语句的嵌套二义性:因为 if 可以嵌套,所有在嵌套时有时会出歧义,例如上例中,else 是

19、与第一个 if 配对。例:(1) if (1%3=0)if (1%7=0)coutvvivvendl ; 输出能被 3整除,能被 7整除else coutvv iv vendl; /输出能被 3 整除,不能被 7整除(2) if (1%3=0) if (I%7=0) coutvv I vvendl ; 输出能被 3整除,能被 7 整除else coutvv ivvendl; 输出不能被 3整除不管是否被 7 整除3.if 与 else 的配对关系:else 总是与他上面最近的、且为配对的 if 配对5.多分支 if 语句:switch 语句一般形式:switch ( 表达式) case cas

20、e常量表达式 1 :语句 1 常量表达式 2 :语句 2casedefault :常量表达式 n :语句 n语句 n+1注:1.switch 后表达式可以是整型、字符型、枚举型;2. 每个常量表达式的值不能相同,次序不影响执行结果。3. 在执行 switch 语句时,根据 switch 表达式的值找到与之匹配的 case 子 句,并从此自居开始执行下去不再进行判断,因此,每个 case 分支最后应该加 break 语句,注,最后一个 default 语句可省略 break 语句。女口: switch(表达式)case 常量表达式 1:语句组 1 ; break ;case 常量表达式 2:语句

21、组 2; break;般形式:elseif (表达式 2) 语句 2;elseif (表达式 3) 语句 3;else语句 n ;F语句 1语句 2语句 3语句 4语句 5if (表达式 1) 语句 1;表达式 1T表达式 2T表达式3TF表达式4Tcase 常量表达式 N:语句组 N;break;default: 语句组 N+1;(break ; )k 可省略4.case 语句起标号作用:(1)标号不能重名case A:cout .;case 65:cout .;(2) 多个 case 可以共用一组执行语句case A:case B:case C :cout “60 upn ”;break;

22、但:case A ,B ,C :cout “60 upn ” ;break;( 错)5.switch 语句可以嵌套,可以与多分支 if 语句互换。循环结构设计循环控制与循环语句While 语句1. 形式:while (表达式)语句2. 执行顺序:先判断表达式的值,为 true 时,再执行语句假A注:循环体如果包含一个以上的语句需用花括号括起来,表示复合语句do-while 语句1. 一般形式:do 语句While (表达式)2. 执行顺序:先执行循环体语句,后判断条件。时,继续执行循环体假A表达式为 true3.与 while 语句的比较:While 语句执行顺序先判断表达式的值,为 true

23、 时,再执行语句4.while 语句与 do-while 语句对比:当 P 为真A当 P 为真A0for 语句1. 般形式:for(表达式 1;表达式 2;表达式 3)语句 for (循环变量赋初值;循环条件;循环变量增值)语句2. 执行过程:(1) .先求解表达式 1 ;(2) .求解表达式 2,如其值为 1,则执行 for 内嵌语句, 然后执行第三步,如其值为 0,则结束循环,执行 第步;.求解表达式 3;.转回第 步骤继续执行;(5).循环结束,执行 for 语句的下一个语句。例:输入一个整数,求出它的所有因子。#in elude using n amespace std;void ma

24、i n() int n ,i;coutE nter the nu mber:; cinn;coutNumber= n vn Factors=;for(i=1;i=n ;i+)if( n%i=0)coutvvivv,;3. 灵活性(1) .表达式 1 可省i=1;for ( ; i100)break;(3) .表达式 3 可省for (i=1;i=10;) sum+ =i+;表达式 1表达式2循环体表达式3(4) .表达式 1 与表达式 3 可同时省for (; i100)break;(6) .三个表达式可为任何表达式,表达式 1 和表达式 3 也可以是逗号表达式,既 包含一个以上的简单表达式。

25、A. for (sum=0; i=10 ; i+)sum + =i;B. for( sum=0, i=1; i=10; i+)sum +=i;C. for (i=0,j=100,k=0; i=j; i+,j-)k+= i*j;D. for( i=1; i=10; sum += i+);E. for (i=1; sum + =i +, i=100;);注:在逗号表达式内按自左至右的顺序求解,整个逗号表达式得知为其中最右 边的表达式的值。如:for(i=1;i=100;i+,i+)sum=sum+i;相当于for(i=1;i=100;i=i+2)sum=sum+i;三种循环的比较循环控制变量 的初值While 语句和 do-while 语句中一般在进入循环前赋值for 语句一般由语句本身的表达式 1 赋值循环控制变量 的变化While 语句和 do-while 语句中在循环体中变化 for 语句在本身表 达式 3中变化循环控制条件 的检测While语句和 for 语句,是在循环体前检测所以可能循环体一次都不 会执行 do-while 语句是在循环体后检测所以循环体至少执行一次1、可相互替代: whi

温馨提示

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

评论

0/150

提交评论