《C语言学习讲》PPT课件 31页

  • 907.50 KB
  • 2022-08-23 发布

《C语言学习讲》PPT课件

  • 31页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
  4. 网站客服QQ:403074932
第2讲结构化程序设计2.2选择结构程序设计2.3循环结构程序设计2.4结构化程序设计方法与综合实训2.1顺序结构程序设计\nC程序实例C程序实例【例1】编程实现:输入一个长方形的二边长,求长方形的面积并输出。/*程序名为l3_1.cpp。*/#include"stdio.h"main(){floata,b,s;scanf("%f%f",&a,&b);s=a*b;printf("Theareaofrectangleis%5.2f.\n",s);}\n程序运行情况如下:输入:3.04.0输出:Theareaofrectangleis12.00.这个程序属于顺序结构,程序是按照书写的顺序自上而下一步步执行,程序中的每一条语句都被执行一次,且仅能被执行一次。【例1】\n顺序结构语句1C语言的顺序结构语句可以分为四大类:1.表达式语句表达式的后面加一个分号就构成了一个语句,例如:sum=a+b;。事实上,C语言中有使用价值的表达式语句主要有3种:(1)赋值语句。例如:sum=a+b;(2)自动增1、减1运算符构成的表达式语句。例如:i++;(3)逗号表达式语句。例:x=1,y=2;2.空语句语句仅有一个分号“;”,它表示什么也不做。一般和后面章节所讲循环语句结合使用起到延时作用。3.复合语句由"{"和"}"把一些变量定义和执行语句组合在一起,称之为复合语句,又称语句块。复合语句的语句形式如下:{语句1;语句2;…;语句n;}\n例如:{inta=0,b=1,sum;sum=a+b;printf("%d",sum);}【注意】与C语言中的其他语句不同,复合语句不以分号作为结束符,若复合语句的"}"后面出现分号,那不是该复合语句的组成成分,而是单独的一个空语句。在复合语句起始部分可以有变量定义,如:"inta=0,b=1,sum;",也可以没有。复合语句的"{}"内可能会有多个语句,但在语法上把它整体上视为一条语句看待。4.函数调用语句由一个函数调用加上一个分号组成一个语句,如:scanf("%d%d",&a,&b);printf("a=%d,b=%d\n",a,b);顺序结构语句2\nC程序实例【例2】由键盘输入两个整数给变量a和b,然后输出a和b,在交换a和b中的值后,再输出a和b,验证两个变量中的数值是否正确地进行了交换。/*程序名为l3_2.cpp。*/#include"stdio.h"main(){inta,b,t;printf("Enteraandb:\n");scanf("%d%d",&a,&b);printf("a=%d,b=%d\n",a,b);t=a;a=b;b=t;printf("a=%d,b=%d\n",a,b);}程序运行情况如下:Enteraandb:123456a=123,b=456a=456,b=123程序实训【例2】\n注意:在程序中交换两个变量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(){doublex;printf("Inputx:\n");scanf("%lf",&x);程序实训【例3】\n3程序实训【例3】printf("(1)x=%f\n",x);/*将x输出*/x=x*100;x=x+0.5;x=(int)x;x=x/100;/*将x扩大100倍,加上0.5之后取整,再缩小100倍*/printf("(2)x=%f\n",x);/*将四舍五入后的x输出*/}程序运行情况如下:Inputx:3.14159则输出的结果为:(1)x=3.141590(2)x=3.140000\n程序实训【例4】【例4】从键盘上输入一大写英文字母,要求改用相应的小写字母输出。/*程序名为l3_4.cpp。*/#include"stdio.h"main(){charc1,c2;scanf("%c",&c1);printf("Theuppercaseis%c.\n",c1);c2=c1+'a'-'A';printf("Thelowercaseis%c.\n",c2);}程序运行时:输入:B输出:TheuppercaseisB.Thelowercaseisb.\n选择结构的C程序实例【例5】请输入两个整数a,b,比较a+b和a×b哪个大,输出判断结果。/*程序名为l3_5.cpp。*/#include"stdio.h"main(){inta,b,s1,s2;printf("请输入两个整数a,b:");scanf("%d,%d",&a,&b);s1=a+b;s2=a*b;/*求两个数的和、积*/if(s1>s2)printf("(a+b)>(a*b)/n");/*语句A*/elseprintf("(a+b)<=(a*b)\n");/*语句B*/}\n运行结果为:请输入两个整数a,b:2,3(a+b)<=(a*b)在这个程序中使用了if分支语句,它不像前面的程序那样,按照语句的书写顺序一步步执行下去,而是根据所给条件的真假,选择两者其中之一执行。该程序执行的过程是:比较两数的和与积,如果s1>s2,则执行语句A(跳过语句B不执行),否则,就跳过语句A执行语句B。可见if语句在程序中起到了改变语句执行顺序的作用。if语句就是我们在下一节中要介绍的条件分支语句。选择结构的C程序实例结果\nif语句1.if语句的一般形式2.if-else中的复合语句3.非关系、非逻辑表达式构成的条件表达式4.if语句的嵌套\n1.if语句的一般形式11.if语句的一般形式:if语句有两种形式:(1)不含else子句的if语句语句形式如下:if(<表达式>)<语句1>例如if(a)<语句体1>[else<语句体2>]执行过程:首先计算<表达式>的值,如果该表达式的值为非零("真"),则执行<语句体1>,如果该表达式的值为零("假"),则跳过<语句体1>,直接执行<语句体2>,两者执行其一后再去执行if语句后的下一个语句。\n1.if语句的一般形式实例【例6】求分段函数的值,如果x≥0,y=2x+1,否则,y=0。#include"stdio.h"main()/*程序名为l3_6.cpp。*/{intx,y;/*变量y存放f(x)的值*/printf("请输入x的值:");scanf("%d",&x);if(x>=0)y=2*x+1;elsey=0;printf("当x=%d时,f(x)=%d",x,y);}\n1.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;但有些判断不能用条件表达式完成,或者很繁琐、表达不清晰。\n2.if-else中的复合语句2.if-else中的复合语句如果两个分支中需要执行的语句不止一条,必须用“{}”括起来,作为一个复合语句使用。若只是一条语句,“{}”可以省略。【注意】(1)if后面的<表达式>一定要有括号;(2)if和else同属于一个if语句,else不能作为语句单独使用,它只是if语句的一部分,与if配对使用,因此程序中不可以没有if而只有else;(3)只能执行与if有关的语句或者执行与else有关的语句,而不可能同时执行两者;(4)如果<语句1>和<语句2>是非复合语句,那么该语句一定要以分号结束,(5)if语句的表达式可以是任意类型的C语言的合法的表达式,但计算结果必须为整型、字符型或浮点型之一。\n3.非关系、非逻辑表达式构成的条件表达式13.非关系、非逻辑表达式构成的条件表达式【例7】以"赋值表达式"为分支条件的实例。/*程序名为7.cpp。*/#include"stdio.h"main(){ints;if(s=2)printf("hello");elseprintf("error");}if后面圆括号中的<表达式>表示分支条件<表达式>的类型不限于逻辑/关系表达式,可以是任意的C语言有效表达式(如赋值表达式,算术表达式等等),因此也可以是作为表达式特例的常量或变量。\n3.非关系、非逻辑表达式构成的条件表达式2【例7】中的条件表达式是一个赋值表达式,并不是判断s是否等于2。相当于if(2)printf("hello");,这是合法的。由于该条件表达式的值是非零值,恒为真,故本程序的printf("error");无论如何都不会被执行。if语句最终执行哪一个分支,取决于条件表达式的计算结果。同一个条件的也可以用多种表达方式。【例8】以"变量"为分支条件的实例。/*程序名为8.cpp。*/#include"stdio.h"main(){intx,y;scanf("%d",&x);if(x)y=1;elsey=-1;返回3.2.2目录\n3.非关系、非逻辑表达式构成的条件表达式3printf("y=%d\n",y);}现把程序中if(x)改成if(x!=0),此时虽然条件表达式写法不同,但是完成的功能是相同的。下面两种表示方法经常使用:if(x)等价于if(x!=0)if(!x)等价于if(x==0)返回3.2.2目录\n4.if语句的嵌套1在一个if语句中又包含另一个if语句,从而构成了if语句的嵌套使用。内嵌的if语句既可以嵌套在if子句中,也可以嵌套在else子句中。例如:【例9】输入a,b两个整数的值,比较大小并输出结果。#include"stdio.h“/*程序名为9.cpp。*/main(){inta,b;printf("请输入a,b:");scanf("%d%d",&a,&b);if(a>b)printf("a>b\n");elseif(ay)if(z>x)max=z;elseif(y>x)max=y;printf("max=%d",max);}运行结果:max=4\n4.if语句的嵌套实例2【例11】编写程序,根据输入的学生成绩,给出相应的等级。90分以上的等级为A,60分以下的等级为E,其余每10分一个等级。程序如下:#include"stdio.h"main()/*程序名为l11.cpp。*/{intg;printf("inputg:");scanf("%d",&g);printf("g=%d:",g);if(g>=90)printf("A\n");elseif(g>=80)printf("B\n");elseif(g>=70)printf("C\n");elseif(g>=60)printf("D\n");elseprintf("E\n");}\n4.if语句的嵌套实例3当执行以上程序时,首先输入、输出学生的成绩,然后进入if语句;if语句中的表达式将依次对学生成绩进行判断,若能使某if后的表达式值为1,则执行与其相应的子句,之后便退出整个if结构。例如,若输入的成绩为78分,首先输出:g=78:,当从上至下逐一检测时,使g>=70这一表达式的值为1,因此在输出"g=78:"之后再输出C,便退出整个if结构。若输入的成绩为30分,首先输出相应成绩"g=30:",其次进入相应判断,最后再输出相应等级"E",便退出整个if结构。\nswitch语句1.switch语句的一般形式2.switch语句的执行过程3.switch语句的实例\n1.switch语句的一般形式1.switch语句的一般形式switch语句的一般形式是:switch(<表达式>){case<常量表达式1>:<语句序列1>case<常量表达式2>:<语句序列2>……case<常量表达式n>:<语句序列n>[default:<语句序列n+1>]}【说明】:①switch语句是关键字,其后面大括号里括起来的部分称为switch语句体。要特别注意必须写这一对大括号。②switch后<表达式>的运算结果可以是整型、字符型或枚举型表达式等,<表达式>两边的括号不能省略。\n③case也是关键字,与其后面<常量表达式>合称为case语句标号。<常量表达式>的值在运行前必须是确定的,不能改变,因此不能是包含变量的表达式,而且数据类型必须与<表达式>一致。如:intx=3,y=7,z;switch(z){case1+2:/*是正确的*/casex+y:/*是错误的*/}④case和常量之间要有空格,case后面的常量之后有":"。⑤default也是关键字,起标号的作用。代表所有case标号之外的那些标号。default可以出现在语句体中任何标号位置上。在switch语句体中也可以无default标号。⑥<语句序列1>、<语句序列2>等,可以是一条语句,也可以是若干语句。⑦必要时,case语句标号后的语句可以不写。1.switch语句的一般形式\n2.switch语句的执行过程2.switch语句的执行过程首先计算<表达式>的值,然后在switch语句体内寻找与该吻合的case标号,如果有与该值相等的标号,则执行从该标号后开始的各语句,包括在其后的所有case和default语句,直到switch语句体结束。如果没有与该值相等的标号,并且存在default标号,则从default标号后的语句开始执行,直到switch语句体结束。如果没有与该值相等的标号,并且不存在default标号,则跳过switch语句体,什么也不执行。在switch语句中使用break语句break语句也称间断语句。可以在各个case之后的语句最后加上break语句,每当执行到break语句时,立即跳出switch语句体。switch语句通常总是和break语句联合使用,使得switch语句真正起到多个分支的作用。\n3.switch语句的实例3.switch语句的实例【例12】模拟自动饮料机。按屏幕所示功能,输入所选择的合法数字,输出可获得的相应饮料名称。程序如下:/*程序名为l12.cpp。*/#include"stdio.h"main(){intbutton;printf("==========自动饮料机==========\n");printf("1.可口可乐\n");printf("2.雪碧\n");printf("3.芬达\n");printf("4.百事可乐\n");printf("5.非常可乐\n");printf("请按1--5键选择饮料:\n");scanf("%d",&button);\n3.switch语句的实例switch(button){case1:printf("\n你获得一听可口可乐\n");break;case2:printf("\n你获得一听雪碧\n");break;case3:printf("\n你获得一听芬达\n");break;case4:printf("\n你获得一听百事可乐\n");break;case5:printf("\n你获得一听非常可乐\n");break;default:printf("\n非法操作!\n");break;}}运行结果:=============自动饮料机==============1.可口可乐2.雪碧3.芬达4.百事可乐5.非常可乐请按1-5按钮选择饮料:3你获得一听芬达

相关文档