《C语言学习讲》PPT课件.ppt_第1页
《C语言学习讲》PPT课件.ppt_第2页
《C语言学习讲》PPT课件.ppt_第3页
《C语言学习讲》PPT课件.ppt_第4页
《C语言学习讲》PPT课件.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

,第2讲 结构化程序设计,2.2 选择结构程序设计,2.3 循环结构程序设计,2.4 结构化程序设计方法与综合实训,2.1 顺序结构程序设计,C程序实例,C程序实例,【例1】编程实现:输入一个长方形的二边长,求长方形的面积并输出。 /*程序名为l3_1.cpp。*/ #include “stdio.h“ main() float a,b,s; scanf(“%f%f“, ,程序运行情况如下: 输入: 3.0 4.0 输出: The area of rectangle is 12.00 . 这个程序属于顺序结构,程序是按照书写的顺序自上而下一步步执行,程序中的每一条语句都被执行一次,且仅能被执行一次。,【例1】,顺序结构语句1,C语言的顺序结构语句可以分为四大类: 1.表达式语句 表达式的后面加一个分号就构成了一个语句,例如:sum=a+b; 。事实上,C语言中有使用价值的表达式语句主要有3种: (1)赋值语句。 例如: sum=a+b; (2)自动增1、减1运算符构成的表达式语句。例如: i+; (3)逗号表达式语句。例: x=1,y=2; 2.空语句 语句仅有一个分号“;”,它表示什么也不做。一般和后面章节所讲循环语句结合使用起到延时作用。 3. 复合语句 由“和“把一些变量定义和执行语句组合在一起,称之为复合语句,又称语句块。复合语句的语句形式如下: 语句1;语句2;语句n;,例如:int a=0,b=1,sum; sum=a+b; printf(“%d“,sum); 【注意】与C语言中的其他语句不同,复合语句不以分号作为结束符,若复合语句的“后面出现分号,那不是该复合语句的组成成分,而是单独的一个空语句。在复合语句起始部分可以有变量定义,如:“int a=0,b=1,sum;“,也可以没有。复合语句的“内可能会有多个语句,但在语法上把它整体上视为一条语句看待。 4.函数调用语句 由一个函数调用加上一个分号组成一个语句,如: scanf(“%d%d“,顺序结构语句2,C程序实例,【例2】由键盘输入两个整数给变量a和b,然后输出a和b,在交换a和b中的值后,再输出a和b,验证两个变量中的数值是否正确地进行了交换。 /*程序名为l3_2.cpp。*/ #include “stdio.h“ main() int a,b,t; printf(“Enter a and b:n“); scanf(“%d%d“, 程序运行情况如下: Enter a and b: 123 456 a=123,b=456 a=456,b=123,程序实训【例2】,注意:在程序中交换两个变量a 和b的值,不可以简单地用: a=b;b=a;两条语句来实现。假设a 和b的值分别为23和78,赋值语句a=b;将使a的值变为78,接下来的b=a;使b的值变为78,这样,a和b的值最终都变为78。所以在本例中引入了中间变量t,用来临时存放a的值,这样才能完成变量a和b的正确交换。,【例3】输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入处理,然后输出此数,以便验证处理是否正确。 /*程序名为l3_3.cpp。*/ #include “stdio.h“ main() double x; printf(“Input x:n“); scanf(“%lf“,程序实训【例3】,3 程序实训【例3】,printf(“(1) x=%fn“,x); /*将x输出*/ x=x*100; x=x+0.5; x=(int)x; x=x/100; /*将x扩大100倍,加上0.5之后取整,再缩小100倍*/ printf(“(2) x=%fn“,x); /*将四舍五入后的x输出*/ 程序运行情况如下: Input x:3.14159 则输出的结果为: (1) x=3.141590 (2) x=3.140000,程序实训【例4】,【例4】从键盘上输入一大写英文字母,要求改用相应的小写字母输出。 /*程序名为l3_4.cpp。*/ #include “stdio.h“ main() char c1,c2; scanf(“%c“, ,程序运行时: 输入:B 输出: The upper case is B . The lower case is b .,选择结构的 C程序实例,【例5】请输入两个整数a,b,比较a+b和ab哪个大,输出判断结果。 /*程序名为l3_5.cpp。*/ #include “stdio.h“ main() int a,b,s1,s2; printf(“请输入两个整数a,b:“); scanf(“%d,%d“, /*语句B*/ ,运行结果为: 请输入两个整数a,b:2,3 (a+b)s2,则执行语句A(跳过语句B不执行),否则,就跳过语句A执行语句B。可见if语句在程序中起到了改变语句执行顺序的作用。if语句就是我们在下一节中要介绍的条件分支语句。,选择结构的 C程序实例结果,if 语句,. if语句的一般形式,2. if-else中的复合语句,3. 非关系、非逻辑表达式构成的条件表达式,4. if语句的嵌套,. if语句的一般形式1,1if语句的一般形式: if语句有两种形式: (1)不含else子句的if语句 语句形式如下: if() 例如 if(ab) t=a;a=b;b=t; 其中,if是C语言的关键字,表达式两侧的圆括号不可少,最后是一条语句,称为if子句。如果在if子句中需要多个语句,则应该使用花括号把一组语句括起来组成复合语句,这样在语法上仍满足“一条语句“的要求。 执行过程:首先计算紧跟在if后面一对圆括号中的表达式的值,如果该表达式的值为非零(“真”),则执行其后的if子句,然后去执行if语句后的下一个语句。如果该表达式的值为零(“假”),则跳过if子句,直接执行if语句后的下一个语句。,. if语句的一般形式2,(2)含else子句的if语句 语句形式如下: if() else 执行过程:首先计算的值,如果该表达式的值为非零(“真“),则执行,如果该表达式的值为零(“假“),则跳过,直接执行,两者执行其一后再去执行if语句后的下一个语句。,. if语句的一般形式实例,【例6】求分段函数的值,如果x0, y=2x+1,否则, y=0 。 #include “stdio.h“ main() /*程序名为l3_6.cpp。*/ int x,y; /*变量y存放f(x)的值*/ printf(“请输入x的值:“); scanf(“%d“, ,. if语句的一般形式实例,运行结果: 请输入x的值:3 当x=3时,f(x)=7 因为输入x=3,那么x=0为真,所以输出2*3+1=7。 C语言中有一种特有的条件运算符“?:”,我们在前面章节已作介绍,它在某种程序上可以起到逻辑判断的作用。本例中的if语句也可用条件运算符表达式实现如下: y=x=0?2*x+1:0; 但有些判断不能用条件表达式完成,或者很繁琐、表达不清晰。,2. if-else中的复合语句,2. if-else中的复合语句,如果两个分支中需要执行的语句不止一条,必须用“”括起来,作为一个复合语句使用。若只是一条语句,“”可以省略。 【注意】 (1)if后面的一定要有括号; (2)if和else同属于一个if语句,else不能作为语句单独使用,它只是if语句的一部分,与if配对使用,因此程序中不可以没有if而只有else; (3)只能执行与if有关的语句或者执行与else有关的语句,而不可能同时执行两者; (4)如果和是非复合语句,那么该语句一定要以分号结束, (5)if语句的表达式可以是任意类型的C语言的合法的表达式,但计算结果必须为整型、字符型或浮点型之一。,3.非关系、非逻辑表达式构成的条件表达式1,3.非关系、非逻辑表达式构成的条件表达式,【例7】以“赋值表达式“为分支条件的实例。 /*程序名为7.cpp。*/ #include“stdio.h“ main() int s; if(s=2) printf(“hello“); else printf(“error“); ,if后面圆括号中的表示,分支条件的类型不限于逻辑/关系表达式,可以是任意的C语言有效表达式(如赋值表达式,算术表达式等等),因此也可以是作为表达式特例的常量或变量。,3.非关系、非逻辑表达式构成的条件表达式2,【例7】中的条件表达式是一个赋值表达式,并不是判断s是否等于2。相当于if(2)printf(“hello“);,这是合法的。由于该条件表达式的值是非零值,恒为真,故本程序的printf(“error“);无论如何都不会被执行。if语句最终执行哪一个分支,取决于条件表达式的计算结果。同一个条件的也可以用多种表达方式。 【例8】以“变量“为分支条件的实例。 /*程序名为8.cpp。*/ #include “stdio.h“ main() int x,y; scanf(“%d“,返回3.2.2目录,3.非关系、非逻辑表达式构成的条件表达式3,printf(“y=%dn“,y); 现把程序中if(x)改成if(x!=0),此时虽然条件表达式写法不同,但是完成的功能是相同的。 下面两种表示方法经常使用: if(x)等价于if(x!=0) if(!x)等价于if(x=0),返回3.2.2目录,4. if语句的嵌套1,在一个if语句中又包含另一个if语句,从而构成了if语句的嵌套使用。内嵌的if语句既可以嵌套在if子句中,也可以嵌套在else子句中。例如:,【例9】输入a,b两个整数的值,比较大小并输出结果。 #include “stdio.h“ /*程序名为9.cpp。*/ main() int a,b; printf(“请输入a,b:“) ; scanf(“%d%d“, ,4. if语句的嵌套2,【注意】if语句的嵌套形式不是刻意去追求的,而是在解决问题过程中随着解决问题的需要而采用的。 if与else的配对规则 if语句出现嵌套形式时,C语言规定:else子句总是和前面最近的不带else子句的if语句配对,与书写格式无关。注意从书写格式要有层次感(好的程序员应该养成这一习惯,以便他人理解你的程序和自己将来的修改)。如果if的数目和else的数目相同,从内层到外层一一对应,不易出错。如果if与else的数目不一致,为实现编程者的意图,必要的时候必须加“,来强制确定配对关系。否则,就不能实现编程者的真正意图。,4. if语句的嵌套实例1,【例10】写出下列程序的输出结果。 /*程序名为10.cpp。*/ #include“stdio.h“ main() int x=4,y=5,z=2,max; max=x; if(zy) if(zx) max=z; else if(yx) max=y; printf(“ max=%d“,max); 运行结果: max=4,4. if语句的嵌套实例2,【例11】编写程序,根据输入的学生成绩,给出相应的等级。90分以上的等级为A,60分以下的等级为E,其余每10分一个等级。程序如下: #include“stdio.h“ main() /*程序名为l11.cpp。*/ int g; printf(“input g:“); scanf(“%d“, ,4. if语句的嵌套实例3,当执行以上程序时,首先输入、输出学生的成绩,然后进入if语句; if语句中的表达式将依次对学生成绩进行判断,若能使某 if 后的表达式值为1,则执行与其相应的子句,之后便退出整个if结构。 例如,若输入的成绩为78分,首先输出: g=78 : ,当从上至下逐一检测时,使g=70这一表达式的值为1,因此在输出“g=78 :“之后再输出C,便退出整个if结构。 若输入的成绩为30分,首先输出相应成绩“g=30:“,其次进入相应判断,最后再输出相应等级“E“,便退出整个if结构。,switch 语句,. switch语句的一般形式,2. switch语句的执行过程,3. switch语句的实例,1 . switch语句的一般形式,1. switch语句的一般形式,switch语句的一般形式是: switch() case : case : case : default: 【说明】: switch语句是关键字,其后面大括号里括起来的部分称为 switch语句体。要特别注意必须写这一对大括号。 switch后的运算结果可以是整型、字符型或枚举型表达式等,两边的括号不能省略。,case也是关键字,与其后面合称为case语句标号。的值在运行前必须是确定的,不能改变,因此不能是包含变量的表达式,而且数据类型必须与一致。如: int x=3,y=7, z; switch(z) case 1+2: /*是正确的*/ case x+y: /*是错误的*/ case和常量之间要有空格,case后面的常量之后有“:“。 default也是关键字,起标号的作用。代表所有case标号之外的那些标号。default可以出现在语句体中任何标号位置上。在switch语句体中也可以无default标号。 、等,可以是一条语句,也可以是若干语句。 必要时,case 语句标号后的语句可以不写。,1 . switch语句的一般形式,2 . switch语句的执行过程,2. switch语句的执行过程,首先计算的值,然后在switch语句体内寻找与该吻合的case标号,如果有与该值相等的标号,则执行从该标号后开始的各语句,包括在其后的所有case和default语句,直到switch语句体结束。如果没有与该值相等的标号,并且存在default标号,则从default标号后的语句开始执行,直到switch语句体结束。如果没有与该值相等的标号,并且不存在default标号,则跳过switch语句体,什么也不执行。 在switch语句中使用break语句 break语句也称间断语句。可以在各个case之后的语句最后加上break语句,每当执行到break语句时,立即跳出sw

温馨提示

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

评论

0/150

提交评论