C语言课件 第4章基本结构程序设计_免费下载.ppt_第1页
C语言课件 第4章基本结构程序设计_免费下载.ppt_第2页
C语言课件 第4章基本结构程序设计_免费下载.ppt_第3页
C语言课件 第4章基本结构程序设计_免费下载.ppt_第4页
C语言课件 第4章基本结构程序设计_免费下载.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

C语言课件 第4章基本结构程序设计_免费下载.ppt.ppt 免费下载

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

文档简介

1、第4章C语言的3种基本结构,4.1 C语句概述,高级语言源程序的基本组成单位是语句。语句按功能可以分为两类: 描述计算机要执行的操作运算(如赋值语句) 控制上述操作运算的执行顺序(如选择语句)。,C语言的语句可以分为如下五类: (1)表达式语句: 表达式后面加一个分号就构成了一个表达式语句。 例如: sum=a+b; /*赋值语句*/ i+; /*自加运算表达式语句*/ x=1,y=2; /*逗号表达式语句*/ (2)函数调用语句: 函数调用语句由一个函数加一个分号构成。 例如: printf(“This is a C statement.”); (3)空语句: 只有一个分号(;)的语句称为空

2、语句。 在程序中空语句经常被用作循环体,比如常见的用于延时的一种循环语句。 例如: for(i=0;i=1000;i+) ;,4.1 C语句概述,(4)复合语句: 用花括号 将多个语句组合在一起称为复合语句,又称为语句块(block)。 例如: int x,y; z=x+y; printf(“%d”,z); ,(5)控制语句 控制程序执行顺序,实现基本结构的语句,有下面九种: if-else语句(条件语句) switch语句(多分支选择语句) for语句 (循环语句) while语句(循环语句) do-while语句(循环语句) continue语句(结束本次循环语句) break语句(终止执

3、行循环语句或switch语句) goto语句(转向语句) return语句(函数返回值语句),4.2 顺序结构程序设计,C语言是结构化程序设计语言,结构化程序设计的结构主要有:顺序结构、选择结构和循环结构三种。,1. 顺序结构 顺序结构是最基本、最简单的程序结构,它由若干语句块从上到下依次排列次序顺序执行。 顺序结构如图所示,先执行A块,再执行B块,两者是从上到下的顺序执行关系。,A,B,程序中的语句,按照它们出现的先后顺序逐条执行,这样的程序结构就是顺序结构。顺序结构是程序设计的最基本结构 。 #include int main(void) printf(1*n); printf(2*n);

4、 printf(3*n); printf(4*n); printf(5*n); printf(6*n); return 0; 语句从“printf(1*n);”开始依次按照顺序执行,并最终输出所要求的图形格式。,1* 2* 3* 4* 5* 6*,4.3 选择结构设计,if语句(三种基本形式) 1.if语句 (1)if (表达式) 语句; (复合语句) 例: if(xy) printf(“%d”,x); 构成方式,执行方式,例子,注意 事项。,例:输入两个整数,并以由小到大的顺序输出。,#includeint main(void )int a,b,t;scanf(%d,%d,return 0;

5、,4.3 if语句,(2)if(表达式) 语句1 else 语句2 例: if (xy) printf(“%d”,x); else printf(“%d”,y); 改写上面的例子,4.3 if语句,(3)if(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3 else if(表达式m)语句m else 语句n,else if 例子,/* print out the type of character */ #include main() char c; printf(Enter a character:); c=getchar(); if(c=0 ,运行:E

6、nter a character: The character is a control character,运行:Enter a character:8 The character is a digit,运行: Enter a character: D The character is a capital letter,运行: Enter a character: h The character is a lower letter,运行: Enter a character:F1 The character is other character,3.If语句的嵌套,在if语句中又包含一个或多

7、个if语句称为if语句的嵌套。 形式: If() if() 语句1 else 语句2 Else if() 语句3 else 语句4,内嵌if,嵌套if语句 匹配规则:,Else总是与它上面的,最近的,统一复合语句中的,未配 对的if语句配对。,例: If() if() 语句1 else if() 语句2 else 语句3,例: If() if() 语句1 else if() 语句2 else 语句3,当if和else数目不同时,可以加花括号来确定配对关系。,If语句的嵌套,例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);,修改:

8、 if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);,实现if else 正确配对方法:加 ,例子:,-1 (x0) 算法逻辑: 算法逻辑: 输入x 输入x 若x0,则y=1 若x=0,则y=0 输出y 若x0,则y=1 输出y,#include void main() int x,y; scanf(“%d”, ,一些细节问题,If(3) printf(“OK”); If(a) printf(“OK”); 表达式的值的判断依据,非零即真 else不能单独使用,必须同if连用;但是if可以单独使用 可以将多条语句放在一起使用,后面不需要加

9、;号,多分支,If else if else,举例,根据输入的考试成绩等级打印出百分制分数段。 A: 90100 B: 8089 C: 7079 D: 7079 E:60,switch语句,switch语句的格式: switch (表达式) case常量表达式: case常量表达式:语句; case常量表达式:语句; default : 语句; ,说明:,switch后面括弧内的“表达式”, 标准允许它为任何类型;最常见的是整数,字符或者枚举类型的表达式。 当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹

10、配的,就执行default后面的语句。 每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。,各个case和default的出现次序不影响执行结 果。例如,可以先出现“default:”,再出现 “case :”,然后是“case:”。 执行完一个case后面的语句后,流程控制转移到下一 个case继续执行。“case常量表达式”只是起语句标号作用,并不是在条件判断。在执行 switch语句时,根据switch后面表达式的值 找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。应该在执行一个case分支后,可以用一个brea

11、k语句来终止switch语句的执行。 多个可以共用一组执行语句。,例题:,给出成绩打印A,B,C 难点: 如何构造“常量表达式” 如何处理100分的问题。,例题:,运输公司对用户计算运费。路程()越远,每公里运费越低。标准如下: 没有折扣 折扣 折扣 折扣 折扣 折扣 设每公里每吨货物的基本运费为,货物重为,距离为,折扣为,则总运费的计算公式为:*(),分析折扣变化的规律性:,折扣的“变化点”都是的倍数 在横轴上加一种坐标,c的值为s/250。 c代表250的倍数。 ,无折扣; ,折扣; ,; ,; ,; ,。,switch(s/250) case 0:d=0;break; case 1:d=

12、2;break; case 2: case 3:d=5;break; case 4: case 5: case 6: case 7:d=8;break; case 8:case 9:case 10: case 11:d=10;break; case 12:d=15;break; ,思考题:根据按键,输出其内容,输入a,s,d,f,spc c,分别输出,“LEFT”,”RIGHT”,”DOWN”,”UP”,”JUMP”, ”CROUCH” 等内容。,4.4循环结构,以往的程序,执行一次就退出了,如何让它不停的重复执行?,4.4循环结构,思考,求1100的累加和。,分析,换一种思路:,sum=1+

13、2+100;,首先设置一个累计器sum,其初值为0,利用sum += n来计算(n依次取1、2、100),只要解决以下3个问题即可: (1)将n的初值置为1; (2)每执行1次“sum += n;”后,n增1; (3)当n增到101时,停止计算。此时,sum的值就是1100的累计和。,sum=sum+n;,格式,goto 语句标号,说明,(1) 与if 语句一起构成循环结构。 (2) 不符合结构化程序设计原则,一般不用。,#include void main() int n=1, sum=0; loop: sum += n; n+; if (n=100) goto loop; printf(“

14、sum=%dn”, sum); ,举例,使用goto语句与分语句配合构成循环结构,实现求1100的累加和。,作用:使系统转向标号所在的语句行执行。,标号的定名规则与变量名相同。,一、goto语句,格式,while (表达式) 循环体语句,说明,1。循环体如果包含一个以上的语句,必须使用复合语句形式。 2。在循环体中,必须有使循环条件趋向于不满足(假)的语句。 3。先判断表达式,后执行语句。,?,含义,当表达式为真(非0值)时,执行while语句中的内嵌语句。,执行过程,二、while语句,sum= 55,举例,求110的累加和。,include void main() int i,sum; i

15、=1; sum=0; while (i=10) sum=sum+i; i+; printf(“sum=%5dn”,sum); ,思考,1。如果去掉循环体中的大括号,执行过程将会怎样变化? 2。在循环体中,使循环条件趋向于不满足(假)的语句是哪条?,?,1 求15的累加和. 2 求110的奇数和. 3 求110的偶数和.,二、while语句,格式,do 循环体语句 while (表达式);,说明,1。循环体如果包含一个以上的语句,必须使用复合语句形式。 2。在循环体中,必须有使循环条件趋向于不满足(假)的语句。 3。先执行循环体语句,后判断表达式的值。,?,含义,执行do-while语句中的内嵌

16、语句,直到表达式为假(0)才跳出循环。,执行过程,至少执行一次,三、do-while语句,sum= 55,举例,求110的累加和。,include void main() int i,sum; i=1; sum=0; do sum=sum+i; i+; while (i=10); printf(“sum=%5dn”,sum); ,思考,1。如果去掉循环体中的大括号,执行过程将会怎样变化? 2。在循环体中,使循环条件趋向于不满足(假)的语句是哪条?,三、do-while语句,举例,while和do-while循环的比较。,include void main() int i,sum; scanf(

17、“%d”, ,include void main() int i,sum; scanf(“%d”, ,输入:1,输入:11,sum=55,输出:,sum=55,sum=0,输出:,sum=11,此程序的功能?,什么情况下两者结果相同?,三、do-while语句,格式,for (表达式1;表达式2;表达式3) 语句,for (循环变量赋初值;循环条件;循环变量增值) 语句,执行过程,(1)先求解表达式1; (2)求解表达式2,若其值为真,则 执行循环体语句,然后执行第(3)步;若为假,则结束循环,转到第(5)步; (3)求解表达式3; (4)转向步骤(2); (5)循环结束,执行for语句下面的

18、一个语句。,四、for语句,举例,求110的累加和。,include void main() int i,sum; sum=0; for (i=1;i=10;i+) sum=sum+i; printf(“sum=%5dn”,sum); ,?,1 求15的累加和. 2 求110的奇数和. 3 求110的偶数和.,四、for语句,for (表达式1;表达式2;表达式3) 语句,说明,三个表达式都可以省略。,四、for语句的灵活性,说明,1,i=1; for(; i=10;i+) sum=sum+i;,2,for (i=1; ;i+) sum=sum+i;,?,3,for (i=1;i=10 ;)

19、sum=sum+i; i+; ,for(i=1; i=10;i+) sum=sum+i;,表达式1可以省略,但其后的分号不可以省略。,没有循环结束条件,构成了死循环,for(i=1; i=10;i+) sum=sum+i;,四、for语句,说明,4,5,for( ; ; ) sum=sum+i;,6,表达式1和表达式3可以是与循环变量无关的表达式。,for( ;i=10 ; ) sum=sum+i; i+; ,7,表达式2一般是关系表达式,也可以是数值或字符表达式。,while(i=10) sum=sum+i; i+ ; ,while (1) sum=sum+i;,表达式1和表达式3可以同时省

20、略,此时等同于while语句。,for(sum=0,i=1;i=100,i+) sum=sum+i;,建议:for语句中只放与 循环控制有关的语句。,四、for语句,格式,for/while (表达式1) if (表达式2) break; ,举例, . sum=0; for (i=1;i5) break; sum=sum+i; printf(“sum=%5dn”,sum); .,for/while (表达式1) if (表达式2) conitue; ,结束整个循环,结束本次循环, . sum=0; for (i=1;i=10;i+) if (i=5) continue; sum=sum+i;

21、printf(“sum=%5dn”,sum); .,五、breakcontinue语句,说明,1、 三种循环语句在处理循环问题时,一般可以相互替代。,2、 对于循环次数固定的问题,用for语句实现比较简单。,3、 对于循环次数不确定的问题,可用while语句或do-while语句实现。,4、 while语句:先判断,后执行。 do-while语句:先执行,后判断。,六、几种循环语句的比较,概念,一个循环体内又包含另一个完整的循环结构,称为循环嵌套。,1 2 3 4 2 4 6 8 3 6 9 12 4 8 12 16,举例,打印乘法口诀表。,#include void main() int i

22、,j; for (i=1;i=4;i+) for (j=1;j=4;j+) printf(“%4d”,i*j); printf(“n”); ,i=1, j=1 1*1 j=2 1*2 j=3 1*3 j=4 1*4 i=2, j=1 2*1 j=2 i=3 i=4,七、循环嵌套,1 2 4 3 6 9 4 8 12 16,#include void main() int i,j; for (i=1;i=4;i+) for (j=1;j=i;j+) printf(“%4d”,i*j); printf(“n”); ,(一)循环嵌套,思考1,#include void main() int i,j;

23、 for (i=1;i=4;i+) for (j=1;j=5-i;j+) printf(“%4d”,i*j); printf(“n”); ,(一)循环嵌套,思考2,1 2 3 4 2 4 6 3 6 4,#include void main() int i,j; for (i=1;i=4;i+) for (j=1;j=4-i;j+) printf(“ ” ); for (j=5-i;j=4;j+) printf(“%4d”,i*j); printf(“n”); ,(一)循环嵌套,思考3,4 6 8 6 9 12 4 8 12 16,#include void main() int i,j; f

24、or (i=1;i=4;i+) for (j=1;j=i-1;j+) printf(“ ” ); for (j=i;j=4;j+) printf(“%4d”,i*j); printf(“n”); ,(一)循环嵌套,思考4,1 2 3 4 4 6 8 9 12 16,例1,利用公式:/4=1-1/3+1/5-1/7+ 求 的近似值,直到某一项的绝对值小于10-6为止。,#include #include void main() int s; float n,t,pi; t=1;pi=0;n=1.0;s=1; while(fabs(t)=1e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(pi=%10.6fn,pi); ,(二)程序举例,pi=1-1/3+ 输出4* pi s=1(-1) n=1,3,5,7 t=s/n,例2,求Fibonacci数列的前40个数。,#include void main() long int f1,f2; int i; f1=1

温馨提示

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

最新文档

评论

0/150

提交评论