第5章-C语言语句类型与基本控制结构_第1页
第5章-C语言语句类型与基本控制结构_第2页
第5章-C语言语句类型与基本控制结构_第3页
第5章-C语言语句类型与基本控制结构_第4页
第5章-C语言语句类型与基本控制结构_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

,第5章,C语言语句类型与基本控制结构,主要内容,5.1C语言语句类型,5.2程序的三种基本结构,5.3if语句,5.4switch语句,5.5while语句,5.6do-while语句,5.7for语句,5.8循环嵌套,5.9break语句和continue语句,5.1C语言语句类型,C语句概述C语句:以“;”作分隔符,编译后产生机器指令。C语句分类程序控制语句(9种):控制语句用于控制程序的流程,以实现程序的各种结构方式。,5.1C语言语句类型,C语句分类函数调用语句:由一次函数调用加一个分号构成。表达式语句:表达式加分号构成。表达式和表达式语句的区别空语句:只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。,例total=total+limit;a=3;,例func();printf(“Hello,world!n”);,5.1C语言语句类型,C语句分类复合语句:用括起来的一组语句。说明:复合语句内的各条语句都必须以分号“;”结尾,“”后不加分号。复合语句可嵌套。复合语句在语法上作为一条单语句使用。,z=x+y;t=z/100;printf(“%f”,t);,5.2程序的三种基本结构,三种基本结构顺序结构,5.2程序的三种基本结构,例#includevoidmain()intx,y,z;printf(“请输入x的值:”);scanf(“%d”,5.2程序的三种基本结构,三种基本结构选择结构二分支选择结构C语言提供选择结构的控制语句包括:if、switch,5.2程序的三种基本结构,三种基本结构循环结构当型循环结构,5.2程序的三种基本结构,三种基本结构循环结构直到型循环结构C语言提供了三种循环控制语句:while、do-while、for,5.3if语句,If语句(条件语句)If语句的三种形式形式一:格式:if(表达式)语句执行过程:,5.3if语句,如果if的内嵌语句有多于一条语句要执行时,必须使用和把这些语句包括在其中,形成复合语句,使其在语法上成为一条单语句,此时条件语句形式为:,if(表达式)语句1;语句n;,例5-1输入一个学生的两门课程考试成绩,如果两门课程成绩均在90分以上,则显示“优秀”。#includevoidmain()floatx1,x2;printf(“请输入两门课程的考试成绩:”);scanf(“%f%f”,运行结果:请输入两门课程的考试成绩:输入:98.796输出:优秀请输入两门课程的考试成绩:输入:8070输出:无内容显示,5.3if语句,形式二:格式:if(表达式)语句1else语句2执行过程:,例5-2输入一个英文字母,判断是否为大写字母,若是,则转换成小写字母输出,否则不转换直接输出。#includevoidmain()charch;printf(请输入一个英文字母:);scanf(%c,运行结果:请输入一个英文字母:输入:B输出:b请输入一个英文字母:输入:b输出:b,例5-3输入三个整数,将其中最大的整数显示输出。#includevoidmain()inta,b,c,max;printf(输入三个整数:);scanf(%d%d%d,运行结果:输入三个整数:输入:3510输出:三个数中最大的值为:10,5.3if语句,形式三:格式:执行过程:,if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3.else语句n+1,例5-4求解下面的分段函数并显示结果。#includevoidmain()intx,y;printf(请输入x的值:);scanf(%d,运行结果:请输入x的值:输入:5输出:y=6请输入x的值:输入:11输出:y=22请输入x的值:输入:-1输出:y=-11,例5-5输入某人的身高和体重,根据下面的计算公式判断此人的体重是标准、过胖还是过瘦。(1)标准体重=(身高-110)公斤;(2)超过标准体重5公斤为过胖;(3)低于标准体重5公斤为过瘦。,#includevoidmain()floath,w,bw;printf(请输入某人的身高和体重(公斤):);scanf(%f%f,运行结果:请输入某人的身高和体重(公斤):输入:16052输出:标准请输入某人的身高和体重(公斤):输入:16070输出:过胖请输入某人的身高和体重(公斤):输入:16040输出:过瘦,5.3if语句,说明:if后面的表达式类型任意,但是我们把它看作是逻辑型的值,一般为逻辑表达式或关系表达式If语句可以单独使用(如格式1),而else语句不能单独使用,必须与if配对使用。语句可以是复合语句,5.3if语句,if语句的嵌套(在实际编程时,应适当控制嵌套层数(2-3层)一般形式,if(expr1)if语句elseif语句,5.3if语句,例:if(a=b)if(a=c)printf(“max=%d”,a);,5.3if语句,if语句的嵌套ifelse配对原则:缺省时,else总是和它上面离它最近的未配对的if配对,例5-6输入三个数x,y,z,然后按从大到小输出,思路:方法一对于三个数据进行如下判断:如果xyprintf(请输入三个数字:);scanf(%f%f%f,elseif(y=x,例5-6输入三个数x,y,z,然后按从大到小输出,思路:方法二声明三个变量x、y、z用于存放输入的数据。然后作如下判断:ifxy将x和y对换ifxd?c:dab?a:((cd)?c:d);,/结果条件表达式的值为4,一般形式:执行过程:,5.4switch语句,switch(表达式)caseE1:语句组1;break;caseE2:语句组2;break;.caseEn:语句组n;break;default:语句组n+1;break;,(1)当switch后面“表达式”的值,与某个case后面的“常量表达式”的值相同时,就执行该case后面的语句(组);当执行到break语句时,跳出switch语句,转向执行switch语句的下一条。(2)如果没有任何一个case后面的“常量表达式”的值,与“表达式”的值匹配,则执行default后面的语句(组)。然后,再执行switch语句的下一条。,例switch(score)case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);,比较下面两个程序,运行结果:score为5时,输出:Verygood!Good!Pass!Fail!dataerror!,例switch(score)case5:printf(“Verygood!”);break;case4:printf(“Good!”);break;case3:printf(“Pass!”);break;case2:printf(“Fail!”);break;default:printf(“dataerror!”);,比较下面两个程序,运行结果:score为5时,输出:Verygood!,说明:多个case可共用一组执行语句,case后面可以没有语句各case及default子句的先后次序,不影响程序执行结果,5.4switch语句,例caseA:caseB:caseC:printf(“score60n”);break;.,例switch(score)case5:printf(“Verygood!”);break;case4:printf(“Good!”);break;case3:printf(“Pass!”);break;case2:printf(“Fail!”);break;default:printf(“dataerror!”);,教材例5-7,5.5while语句,C语言可以实现的循环while语句dowhile语句for语句,5.5while语句,While语句(当型循环控制语句)一般形式执行流程,while(表达式)循环体语句;,特点:先判断表达式,后执行循环体,5.5while语句,#includevoidmain()inti=1,num=0;while(i=10)num=num+i;i=i+1;printf(%d,num);,程序实现的功能:求解110十个整数之和,例5-8读入字符并显示,直到读入$字符为止($不显示)#includevoidmain()charch;printf(请输入一系列字符,以$符号结束:);scanf(%c,getchar()函数可以将代码简化:#includevoidmain()charch;printf(请输入一系列字符,以$符号结束:);while(ch=getchar()!=$)printf(%c,ch);,运行结果:请输入一系列字符,以$符号结束:输入:Hello$输出:Hello!,5.6dowhile语句,Dowhile语句(直到型循环语句)一般形式执行流程,do循环体语句;while(表达式);,特点:先执行循环体,后判断表达式,例while和do-while循环的比较(1)#include(2)#includevoidmain()voidmain()intsum=0,i;intsum=0,i;scanf(%d,,运行结果:1sum=55再运行一次:11sum=0,运行结果:1sum=55再运行一次:11sum=11,例5-9计算#include#includevoidmain()doublesinx,s,x;intn;printf(请输入x(弧度)的值:);scanf(%lf,运行结果:请输入x(弧度)的值:输入:1.570796输出:sin(1.570796)=1.000000!,5.7for语句,for语句一般形式:执行流程:,for(expr1;expr2;expr3)循环体语句;,for语句的各种形式:,例:#includevoidmain()inti;for(i=0;i10;i+)putchar(a+i);,运行结果:abcdefghij,For语句的各种形式:,例:#includevoidmain()inti=0;for(;i10;i+)putchar(a+i);,说明:省略了“表达式1(循环变量赋初值)”,执行时,跳过“求解表达式1”这一步,其他不变。此时应在for语句之前给循环变量赋初值。注意省略表达式1时,其后的分号不能省略。,For语句的各种形式:,例:for(i=1;i+)sum=sum+i;,说明:如果表达式2省略,即不判断循环条件,循环无终止地进行下去。也就是认为表达式2始终为真。,相当于:i=1;while(1)sum=sum+1;i+;,For语句的各种形式:,例:for(i=1;i=100;)sum=sum+i;i+;,说明:表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束。在上面的for语句中,i+的操作不放在for语句的表达式3的位置处,而作为循环体的一部分,效果是一样的,都能使循环正常结束。,For语句的各种形式:可以省略表达式1和表达式3,只有表达式2,即只给循环条件。如:for(;i=100;)while(i=100)sum=sum+i;相当于sum=sum+i;i+;i+;在这种情况下,完全等同于while语句。可见for语句比while语句功能强,除了可以给出循环条件外,还可以赋初值,使循环变量自动增值等。3个表达式都可省略,如无限循环:for(;),For语句的各种形式:,例:for(sum=0;i=100;i+)sum=sum+i;,说明:表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。表达式3也可以是与循环控制无关的任意表达式。,例:for(;i10;putchar(a+i))i+;,For语句的各种形式:表达式1和表达式3可以是一个简单表达式也可以是逗号表达式。,例:#includevoidmain()inti,j,k;for(i=0,j=100;i=j;i+,j-)k=i+j;printf(%d+%d=%dn,i,j,k);,For语句的各种形式:,例:for(i=1;i=100;i+,i+)sum=sum+i;,相当于:for(i=1;i=100;i=i+2)sum=sum+i;,For语句的各种形式:表达式2一般是关系表达式(如i=100)或逻辑表达式(如abcharc;for(i=0;(c=getchar()!=n;i+=c);,本程序的作用是不断输入字符,将它们的ASCII码相加,直到输入一个“换行”符为止。,For语句的各种形式:,例:for(;(c=getchar()!=n;)printf(%c,c);,说明:其作用是每读入一个字符后立即输出该字符,直到输入一个“换行”为止。请注意,从终端键盘向计算机输入时,是在按Enter键以后才将一批数据一起送到内存缓冲区中去的。,运行情况:Computer(输入)Computer(输出)而不是Ccoommppuutteerr,例5-10输入一个正整数,求出它的所有因子并显示#includevoidmain()intn,k;printf(输入一个正整数:);scanf(%d,运行情况:输入一个正整数:输入:8输出:1248,例5-11计算自然数1到n的平方和#includevoidmain()inti,n,s;printf(请输入一个整数n:);scanf(%d,运行情况:请输入一个整数n:输入:5输出:1*1+2*2+.+5*5=55,5.8循环的嵌套,三种循环可互相嵌套,层数不限嵌套循环的执行流程,(1)while()while().,(2)dodowhile();.while();,(3)while()dowhile();.,例5-12编程显示下面的图形*,#includevoidmain()inti,j;for(i=1;i=4;i+)for(j=1;j=4-i;j+)printf();for(j=1;j=2*i-1;j+)printf(*);printf(n);,5.9break语句和continue语句,用break语句提前退出循环功能:在循环语句和switch语句中,终止并跳出循环体或开关体说明

温馨提示

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

评论

0/150

提交评论