第三章C程序的流程设计
第三章 C程序的流程设计
算法 算法的性质与组成要素 >算法是进行操作的方法和步骤。 算法的性质: 解题算法是一有穷动作序列。 序列中只有一个初始动作。 >序列中每一个动作仅有一个后继动作 序列终止,表示问题得到解答,或问题没有解答。 算法的要素: 操作:各种运算、U读写均称为操作。计算机算法是由操作 组成的。 控制结构: >顺序结构 选择结构 循环结构
一、算法 ➢ 算法的性质与组成要素 ➢算法是进行操作的方法和步骤。 ➢算法的性质: ➢解题算法是一有穷动作序列。 ➢序列中只有一个初始动作。 ➢序列中每一个动作仅有一个后继动作。 ➢序列终止,表示问题得到解答,或问题没有解答。 ➢算法的要素: ➢操作:各种运算、I/O读写均称为操作。计算机算法是由操作 组成的。 ➢控制结构: ➢ 顺序结构 ➢ 选择结构 ➢ 循环结构
算法的描述 >自然语言 >流程图 伪代码 计算机语言 以求两个数的最大数为例说明几种算法
➢ 算法的描述 ➢自然语言 ➢流程图 ➢伪代码 ➢计算机语言 以求两个数的最大数为例说明几种算法
>自然语言: s输入两个数a,h S21如果a大于b, s2找出最大数赋给Ⅲ 则将a赋给m,否则将 s3:输出最大数m b赋给m NS流程图: 输入ab a>b n 输出a输出b
➢ 自然语言: s1: 输入两个数a,b s2:找出最大数赋给m s3:输出最大数m S2.1:如果a大于b, 则将a赋给m,否则将 b赋给m。 输入a,b y a>b n 输出a 输出b ➢N-S流程图:
伪代码: >G代码: input a, b maino fasb then tint a, b, m lEd scanf%d%山,ah] e se if la>b mb lEd enlil else print m mab printf[a= d, a
➢ 伪代码: input a ,b if a>b then m=a else m=b end if print m ➢ C代码: main() { int a,b,m; scanf(“%d %d”,&a,&b); if (a>b) m=a; else m=b; printf(“a=%d”,a); }
上机问题: 逻辑运算的注意事项。E2-15
上机问题: 逻辑运算的注意事项。E2-15
用语句描述算法 >表达式语句 语言是一种表达式语言,所有操作都通过表达式来实 现 >由表达式组成的语句叫表达式语句,它由表达式后加 分号组成。 >表达式语句的三种基本类型: 赋值语句:X=siny >函数语句rnu"a=%h=%a山; 空语句:; >复合表达式语句逗号表达式]:几个表达式语句用 “,”分隔组合而成,如1,=2。逗号表达式的值 为最后一个表达式的值,如a[a=623a+3】结果a=9
二、用C语句描述算法 ➢ 表达式语句 ➢C语言是一种表达式语言,所有操作都通过表达式来实 现。 ➢由表达式组成的语句叫表达式语句,它由表达式后加 一分号组成。 ➢表达式语句的三种基本类型: ➢赋值语句:x=sin(y); ➢函数语句:printf(“a=%d b=%d”,a,b); ➢空语句: ; ➢复合表达式语句(逗号表达式):几个表达式语句用 “ ,”分隔组合而成,如i=1 , j=2; 。逗号表达式的值 为最后一个表达式的值,如 a=(a=6,a*3,a+3) 结果a=9
>复合语句分程序 >c语言允许将一组语句括在一对花括号内,称为复合语句。如: IC=getchar[] putcharCk 在分程序中可定义变量,但只在分程序中有效,且上级分程序中的 变量对下级分程序有效,反之无效。如: maind fint a=L: int 1=3 printfitr'a=%h=%d,a劬/正确,可使用上级分程序中定义的变量a prints"a=%h=%u;,am;/出错,下级分程序定义的变量对上级无效
➢ 复合语句(分程序) ➢ C语言允许将一组语句括在一对花括号内,称为复合语句。如: {c=getchar( ); putchar(c); } ➢ 在分程序中可定义变量,但只在分程序中有效,且上级分程序中的 变量对下级分程序有效,反之无效。如: main( ) { int a=2; {int b=3; printf(“a=%d b=%d ”,a,b); /*正确,可使用上级分程序中定义的变量a*/ } printf(“a=%d b=%d ”,a,b); /*出错,下级分程序定义的变量对上级无效*/ }
选择结构程序设计 >…sB结构 L33求一个数的绝对值。 maino fintXy scanf[ od,&x: if [XP=O] y=X else y-X printi‰山=%山xy
三、选择结构程序设计 ➢ if … else 结构 例L3-3求一个数的绝对值。 main() { int x,y; scanf(“%d”,&x); if (x>=0) y=x; else y=-x; printf(“|%d|=%d”,x,y); }
例13-4求三个数中的最大值。 main int a=12. b=2.c=24. max clrscro max-a if(b>max)max=b if(c>max )max-c printf("max-=%/od", max) getcho
例L3-4 求三个数中的最大值。 main() { int a=12,b=2,c=24,max; clrscr(); max=a; if(b>max)max=b; if(c>max)max=c; printf("max=%d",max); getch(); }