版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章
语句顺序结构:每条语句必做且只做一次;程序的书写次序就是执行次序。结构化程序的三种基本结构main(){inta,b;scanf("%d%d",&a,&b);printf("a>b\n");printf("a<=b\n");}main(){inta,b;scanf("%d%d",&a,&b);if(a>b)printf("a>b\n");elseprintf("a<=b\n");}循环结构:每条语句可能不止做一次;程序的书写次序不是执行次序。main(){inta,b;scanf("%d%d",&a,&b);while(a<b){scanf("%d%d",&a,&b);}printf("a>=b");}表达式语句和空语句:表达式语句:表达式+“;”eg:a=b+2;
b<a?a++:b--; !b || a++&&b--; 空语句:;main(){ inta=5,b=3; if(a>b) printf("a>b\n"); else a+=1; printf("a<=b\n");}程序a4.c分析程序顺序结构选择结构循环结构main(){inta,b;scanf("%d%d",&a,&b);if(a>b)printf("%d",a);}选择结构—if语句(2)双分支if语句
if(表达式)语句1
else语句2
语义:
当表达式的值为“真”(非零)时,执行语句1,否则,执行语句2。如:
if(x>y)z=x;elsez=y;main(){inta,b;scanf("%d%d",&a,&b);if(a>b)printf("%d",a);elseprintf("%d",b);}#include<stdio.h>
voidmain()
{
inta,b,c;
printf("Entera,b:");
scanf("%d%d",&a,&b);
if(a<b)
{
c=a;a=b;b=c;
}
printf("%d,%d\n",a,b);
}
Entera,b:2570↙
分析下列程序运行结果选择结构—if语句(3)多分支if语句
if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3:elseif(表达式m)语句melse语句m+1if(n>6)if(n<12)printf(“6<n<12”);elseprintf(“n<=6”);
1.if语句中的表达式:
if后面的表达式一般为逻辑表达式或关系表达式,也可以是任意类型表达式,只要它能产生真假值就行。如该语句是合法的:if(3)printf(“ok!”);表达式可为任意表达式需要注意的知识点:
3.
if语句的嵌套:在if语句中又包含一个或多个if语句的形式。if()if()语句1else语句2elseif()语句3else语句4}内嵌if}
内嵌if或
if()
{if()语句1
}else
if()语句2
else语句3}
内嵌if或if()
{if()语句1(内嵌if)
}else语句2此括号可省略吗?每个else应与其之前距离最近且没有与其它else配对的if配对。
if(n>6)if(n<12)printf(“6<n<12”);elseprintf(“n<=6”);if(n>6){if(n<12)printf(“6<n<12”);}elseprintf(“n<=6”);
4.else与if的匹配原则:
建议写法:1.条件表达式的一般格式:表达式1?表达式2:表达式3Eg:z=x>y?x:y2.条件运算符的优先级条件运算符的优先级仅高于赋值运算符和逗号运算符,低于其他运算符3.条件运算符的结合性:自右至左a>b?a:c>d?c:d选择结构—条件表达式条件运算符与if语句的区别:if语句与条件运算符(?:)语义完全相同,其流程图都可用下图描述。其区别在语法。if语句后面带语句,自身也是语句;条件运算符(?:)后面带表达式,自身还是表达式。
选择结构—switch语句开关语句,用于解决多路分支的情况。switch(表达式){case常量表达式1:语句序列1;[break];case常量表达式2:语句序列2;[break];:case常量表达式n:语句序列n;[break];[default:语句序列n+1];}执行机制:通常是整型、字符型首先计算“表达式”的值;找到与“表达式”的值相同的“常量表达式”,执行其case后边的语句块;之后以次往下执行语句块。
必须是常量可以省略,如果需要最多只能有一个break语句:格式:break;功能:终止其所在语句序列的执行。switch(grade){case'A':printf("85——100\n");break;case'B':printf("70——84\n");break; case'C':printf("60——69\n");break;case'D':printf("<60\n");break; default:printf("error\n");}当grade=‘B’时,输出结果为:70——84无break语句的switch语句语义结构图示:表达式语句5语句4语句3语句2语句1出口表达式语句5语句4语句3语句2语句1出口有break语句的switch语句语义结构图示:流程图为:
grade输出“85-100”输出“<60”输出“60-69”输出“error”输出“70-84”switch的特点
switch语句中的表达式最好是整型表达式;每一个case表达式的值必须不同;每一个case后面若有多条语句,可不必使用括号;多个case可共用一组执行语句;各case以及default出现的次序无限制;
switch和多重if的区别:
switch语句用于“一次计算,多种结果”;计算结果必须为整数。多重if用于“多次计算,多个结果”;计算结果可以是任何类型数,而且各表达式类型各不相同。
思考(上机题目)将输入的成绩由百分制转换为五级分制。
通过嵌套if-else或switch实现5.3C语言的三结构之三
循环结构循环结构“循环”的语义是:在给定条件满足时,反复执行某个程序段。因此,在有需要重复执行的动作、且重复次数可控的情况下可以使用循环。循环的分类C语言可以用以下控制语句来实现循环:
⑴while语句;⑵do_while语句;⑶for语句。此外用goto和if语句亦可构成循环(不提倡)。循环结构——while
执行过程:⑴先计算表达式的值;⑵若表达式的值为真(非0)时执行循环体中的语句,然后重复上面步骤。若表达式的值为假(0),则结束循环。语义是“要做……..吗?”
一般形式:
while(表达式)语句“表达式”可以是任何表达式:逻辑、字符、赋值、逗号等表达式。main(){inti=1,sum=0;while(i<=100){sum=sum+i;i++;}printf(“%d”,sum);}i=1当i<=100
sum=sum+ii=i+1求:sum是否可以不设置初始值0?循环结构——do-while
一般形式:
do语句while(表达式);※分号不能少
执行过程:⑴执行循环体中的语句;⑵计算表达式,测试循环条件,为真(非0)则重复上面步骤,为假(0)结束循环。语义是“做…..,还要做吗?”main(){inti=1,sum=0;do{sum=sum+i;i++;}while(i<=100);printf("%d",sum);}
i=1
sum=sum+ii=i+1直到i>100为止
我们将while和do_while循环做一下比较:main(){inti,sum=0;scanf(“%d”,&i);
while(i<=100)
{sum=sum+i;i++;}printf(“%d”,sum);}main(){inti,sum=0;scanf(“%d”,&i);
do{sum=sum+i;i++;}
while(i<=100);printf(“%d”,sum);}输入:1结果:5050输入:1结果:5050输入:101结果:输入:101结果:0101注意:
⑴循环条件中的表达式一般是逻辑表达式和关系表达式,也可以是算术表达式等其他表达式(非0为真,0为假)。一般表达式中应含有循环控制变量。while(3)和while(0)是合法的,虽然从程序设计的角度上说是不尽合理。while(3)语句表示无限循环while(0)语句表示不进入循环体
⑵要写出一个正确的循环结构,对控制变量要做三方面工作:①控制变量赋初值;②把控制变量写入正确的循环条件;※③循环中对控制变量的更新、调整。循环结构——for
一般形式:
for(表达式1;表达式2;表达式3)语句
不能省略不能省略表达式1:初始化表达式。表达式2:循环控制条件。表达式3:在循环体语句之后执行的表达式。正确设计循环结构应注意三方面的问题:控制变量的初始化;循环的条件;控制变量的更新。
重复执行的部分求解表达式1表达式2语句求解表达式3for语句的后续语句for循环结构执行流程图示:注意:三个表达式在执行流程中的位置!C语言中的for语句使用最为灵活,不仅可以用于循环次数已知的情况,而且可用于循环次数不确定只给出循环结束条件的情况。FT形式一main(){inti,sum=0;for(i=1;i<=100;i++){sum=sum+i;}printf("%d",sum);}注意:for语句是先判断后执行。就是说,如果开始时循环条件不成立,循环体一次也不被执行。形式二:省略表达式一main(){inti=1,sum=0;for(;i<=100;i++){sum=sum+i;}printf("%d",sum);}这时for语句不再给i置初值形式三:省略表达式二main(){inti,sum=0;printf("%d",sum);}“表达式2”也可省,这将使循环无终止进行下去。相当于:for(i=1;;i++)sum=sum+i;
i=1;while(1)sum+=i;i++;
形式四:省略表达式三main(){inti,sum=0;for(i=1;i<=100;){
sum=sum+i;
i++;}
printf("%d",sum);}注意:for语句的循环体可以是多条语句,这些语句必须用花括号括起来。形式五:同时省略表达式一、三main(){inti=1,sum=0;for(;i<=100;){sum=sum+i;i++;}printf("%d",sum);}同时省略表达式1和表达式3,则完全等同于while语句。如:inti=1;inti=1;for(;i<=100;)相当于while(i<=100){sum+=i;i++;}{sum+=i;i++;}形式六:省略循环语句三个表达式都可省略,则无终止地执行循环体(死循环)。如:for(;;)循环体
相当于
while(1)循环体
注意防止出现“死循环”
无休止的循环称为“死循环”。例如:
main(){intx=10;for(;x<=10;x--)
printf(“%d”,++x);}
该程序会输出无数个“11”而不能正常终止。形式七:省略循环语句main(){inti,sum;for(i=1,sum=0;i<=100;s+=i,i++);printf("%d",sum);}循环体是空语句:建立一个时间延迟。循环控制变量是循环得以正常执行的要害。无论是指定次数循环还是不定次数循环,务必要在循环体内对循环控制变量作修改。只因如此方能使循环趋于收敛而停止。三种循环的要害:结构的嵌套是指三种基本结构(顺序,分支,循环)体内又包含另外的结构。所有程序不外乎三种基本结构及其嵌套组成,天下程序概莫能外。循环与循环的嵌套,以及与顺序结构与选择结构都可以组成嵌套,且嵌套的层数不限。程序结构的嵌套for嵌套for循环for(;;){for(;;){}}for嵌套while循环for(;;){while(){}}for嵌套do_while循环for(;;){do{}while();}while嵌套自身while(){while(){}}while嵌套do_whilewhile(){do{}while();}while嵌套
forwhile(){for(;;){}}do_while嵌套for循环
do{for(;;){}}while();
do_while嵌套while循环
do{while(){}}while();
do_while嵌套自身
do{do{}while()}while();
转向语句——break语句
break;一般形式:功能:结束循环的执行,跳出当前循环层。
解释:break语句一般用在循环体内的条件语句中,作用是当某个条件成立时用break语句退出循环,不再继续执行其余的语句,也不再继续执行其余循环。表达式1语句1语句1语句2表达式2breakTFF转向语句——continue语句
continue;一般形式:功能:提前结束本次循环,进入下一循环周期。解释:一旦执行了continue语句,程序就跳过循环体位于该语句后的所有语句,提前结束本次循环周期,开始下一个循环周期。表达式1语句1语句1语句2表达式2continueFTF分析下列两个程序的区别main(){ inti,sum=0; for(i=1;i<10;i++) { if(i==5)
break; sum+=i; } printf("%d\n",sum);}程序break.cmain(){ inti,sum=0; for(i=1;i<10;i++) { if(i==5)
continue; sum+=i; } printf("%d\n",sum);}break语句的使用:如:for(r=1;r<=10;r++){area=pi*r*r;if(area>100)break;/*area大于100时跳出循环*/printf(“%f”,area);}continue语句的使用:如:将100~200之间的不能被3整除的数输出.main(){intn;for(n=100;n<=200;n++){if(n%3==0)continue;printf(“%d”,n);}}思考:编写程序实现如下功能:1求1+2+3+……+10,如果遇到能被3整除的数则提前结束求和。2求1+2+3+……+10,如果遇到能被3整除的数则跳过该数继续求和。关于goto语句
goto语句为无条件转向语句,其作用使程序的执行无条件地转移到程序的某指定处继续执行。“指定处”是以标号为前缀的语句处。一般形式:
goto语句标号;
语句标号(标签):是放置于语句之前的标识符,用于给语句命名。如:
√
gotolabel_1;
╳
goto123;(数字不可以)for(i=0;i<10;i++){for(j=0;j<20;j++){for(k=0;k<8;k++){if(a[i][j][k]==t)
gotoL1;}}}L1:printf(“found!”);goto语句特别用于从多重嵌套的循环体中一步跳出!关于goto语句#include<stdio.h>intmain(){inta;gotoInit;Forward:a=a+1;Print:printf(“%d”,a); gotoDown;Init:a=1; gotoPrint;Down:if(a<100) gotoForward;}读此段程序,感觉如何?说明:⑴C语言允许在任何语句前加语句标号,作为goto语句的跳转目标。给语句加标号的形式:
语句标号:语句⑵goto语句是一种非结构化语句,结构化程序设计方法不提倡使用goto语句。因为滥用goto语句将使程序流程无规律,可读性差。但也不是绝对禁止使用,在能够大大提高程序效率时,goto语句将使程序简化高效。for嵌套for循环for(;;){for(;;){}}for嵌套while循环for(;;){while(){}}for嵌套do_while循环for(;;){do{}while();}while嵌套自身while(){while(){}}while嵌套do_whilewhile(){do{}while();}while嵌套
forwhile(){for(;;){}}do_while嵌套for循环
do{for(;;){}}while();
do_while嵌套while循环
do{while(){}}while();
do_while嵌套自身
do{do{}while()}while();
例:打印8行7列的星号矩形。用二重循环实现。
#include<stdio.h>main(){inti,k;for(i=0;i<8;i++){
for(k=0;k<7;k++)printf("*");
}}printf("\n");程序rectangle.c关于循环的小结:
while和for循环是先判断后执行;而do_while循环是先执行,后判断。用while循环能完
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养猪场建设施工合同
- 办公室管理革命:6S管理技巧
- 融资市场动态分析报告
- 健身房财务部长聘用合同
- 2024年设计合同标的和服务内容
- 2025年度消防安全设施设备采购与安装合同3篇
- 集市客户服务集贸市场管理办法
- 信息技术主管聘用合同
- 娱乐设施屋面防水工程合同
- 医疗行业风险控制手册
- 某医院后备人才梯队建设方案
- 二年级上册英语教案Unit6 Lesson22︱北京课改版
- 桂枝加龙骨牡蛎汤_金匮要略卷上_方剂加减变化汇总
- 《2021国标建筑专业图集资料》96S821钢筋混凝土清水池附属构配件图集
- CHEETAH高压制备色谱操作手册
- 水利基本建设项目竣工财务决算报表编制说明
- 公司劳动工资结构图(doc 1页)
- 《AFM简介实验》ppt课件
- 客运公司岗位安全生产操作规程
- 中学学生评教实施方案
- 公司员工食堂管理制度(完整版)
评论
0/150
提交评论