版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
注汰法:英诀:女:沐逐沐美沐沐泱沐米淡淡沐诀族&*浜逐涣逐法涨沐逐淡:涣沐沐差二:4
第一章
第二章C语言概述
第三章数据类型、运算符与表达式
第四章最简单的C程序设计
第五章逻辑运算和判断选取控制
章循环控制
第六
章
第七数组
章
第八函数
章
第九编译预处理
章
第十指针
一
第十章结构体与共用体
一
第十三章文件的基本操作
位运算
§4.4switch语句一开关语句
问题:当某一表达式有n个取值,每一取值执行一
语句,则如果用内嵌if十分繁锁,而用switch简单.
一般形式:switch(表达式)
{case常量表达式1:语句1
case常量表达式2:语句2
*
*
case常量表达式n:语句n
default:语句n+1
1心悟言起算得日
例:根据成绩等级打印百分数段.
switch(grade)
{case'A':printf(n85-100\nn);
case'B':printf("70〜84\n");
case'C':printf("60〜69\n");
case'D':printf(n<60\nn);
default:printf(nerror\nn);
功能:
*根据表达式的取值,判断其与哪一个
常量表达式相等。如=表达式i,则自语
句i开始执行,直到语句n+1止。
*若与所有常量表达式值不相等,则从
default后的语句开始执行。
C语者凝停过it
例如:/*exp55,c*/
#include<stdio.h>
main()
{chargrade;
scanf(n%cf\&grade);
switch(grade)
{casefA!:printf(n85-100\nn);
caselBf:printf(M70-84\nn);
casefCf:printf(n60-69\nu);
caselDl:printf(H<60\nn);
default:printf(nError\n'');
C语言耗停直苜
运行结果:
AJ
85-100
70-84
60-69
<60
Error
程序运行结果不在预料之中!
产生错误的原因:没有完全起到分支作用。
C福言程停过升
解决办法:增加break语句,使之跳出switch结构。
一般形式为:itch(表达式)
{case常表1:语句1;
break;
case常表2:语句2;
break;
case常表n:语句n;
break;
default:语句n+1;
}
修改程序为:/*exp56,c*/
#include<stdio.h>
main()
{chargrade;
scanf(n%cn,&grade);
switch(grade)
{case,Af:printf(,,85-100\nM);break;
case!Bf:printf(n70-84\nn);break;
casefCf:printf(n60-69\nn);break;
case,D,:printf(ff<60\nn);break;
default:printf(nError\nn);
}
C语言凝停直苜
C语言凝停直苜
例如:switch(grade)
{case'A':
case'B':
case'C':printf(n>60\nn);
break;
case'D':printf(n<60\nn);
break;
C语言耗停汽苜
例1:写一程序,输入年号,判断是否为闰年。
1.算法:根据闰年的判断条件为下列条件之一:
*当年号能被4整除但不能被100整除时,它为闰年。
*当年号能被400整除时,它为闰年。
2.流程图
设用变量year表示年号Jeap为待置值变量,当year
为闰年:leap-1,否则leap-0.
输入year
yes/No
<^eap-pz
打印非闰年打印是闰年
]
结束
C语言程停冏计
3.程序:#include<stdio.h>
main()
{intyear,leap;
scanf("%d",&year);
if(year%4==0)
{if(year%100==0)
{if(year%400==0)
leap=l;
else
leap=0;}
else
leap=1;}
else
leap=0;
C语演言妄母耗停直苜
if(leap)
printf(n%dis",year);
else
printf(n%disnot”,year);
printf(naleapyear\nn);
)
运行情况如下:
第一次:1989J
1989isnotaleapyear
第二次:2000J
2000isaleapyear
.丘I
IiTWit
注:上述条件也可用一个逻辑表达式表示为
if((year%4=0)&&year%100!=0)]]
(year%400==0))
leap=l;
elseleap=0;
语言展停阻升
§5.1概述
前面已介绍了顺序结构,选择结构,本章
介绍循环结构。
实际问题:一组重复执行的语句。
100
如:Zi,sum=l+2+3+...+100;
i=l
可用循环结构解决。
C谓言程停通计
C语言一般采用三种形式循环
1.while语句
2.do...while语句
3.for语句
另:用if语句与goto语句的结合也可构成循环.
C语言耗停直苜
§5.2goto语句及与if语句构成修坏
1.goto语句
形式:goto标号;
功能:无条件转向标号处。
标号:用标识符命名。
2.与1幽成循环.
100
例:求Z,=l+2+…+1。。
/=1
#include<stdio.h>
main()
{inti,sum=0;
c一看—睁及甘
i=l;
loop:if(i<=100)
{sum=sum+i;
i++;
gotoloop;}
printff'sum=%d",sum);
运行结果如下:
sum=5050
C语言耗停汽苜
上面的程序相当于当型循环,可改为直到型:
#include<stdio.h>
main()
{intsum=O,i=0;
loop:sum=sum+i;
jH——
if(i<=100)gotoloop;
printf("sum=%d",sum);
}
建议:尽可能的不用got。语句,以免破坏程
序的结构化。
CISSSSiait
§5.3whi1e语句
专门的当空循环语句一while语句
1.形式:while(表达式)
语句
2.执行过程:先判断表达式的值。若M.则执行其后
面的语句,否则while执行完毕。
Cisssmsn
3.流程图:
将上述例子用while语句写出
while(i<=100)
{sum+=i;
i++;
c港舌程停过甘
注:*若卬山江后面的语句为复合语句,必须加{}
来语句中应有使表达式=0的语句。
否则会出现无限循环——“死”循环。
*语句有可能一次也不执行
§5.4do,••while语句
一种专门的“直到型”循环语句。
1.形式:do语句while(表达式);
2.执行过程:先执行语句,再判表达式的值,若再
执行语句,否则结束循环
3.流程:-----
画
尸°C语言准陋tt
程序如下:#include<stdio.h>
main()
{inti,sum=O;
i=l;
do
{sum=sum+i;
i++;
)
while(i<=100);
nn
printf(%d9sum);
)
注:1、do......while结构的作用与while基本
相同。
2、语句至少要执行一次。
C语言凝停直苜
§5.5for语句
一种形式更为灵活的循环语句。
1.形式
for(初始表达式;条件表达式;循环表达式)
语句
2.执行过程
❶、计算初始表达式的值。
❷、判断条件表达式,若条件表达式的值则执行语句。
若条件表达式的值=0,则跳出循环体。
❸、计算循环表达式。
❹、转到第❷步。
C谓看程停过甘
3.流程:计算表达式1
语句
计算表达式3
结束for语句
C语言耗停汽苜
用for语句重写上述例子:
for(i=l;i<=100;i++)
sum+=i;
for语句完全可以用whi1e代替,
但for直观、简单、方便。
for用while代替的流程:
表达式1;、
while(表达式2)
{语句
表达式3;
}C语言程停过计
4.for语句的几种特例
*可以省略初始表达式,但须保留分号;且在for之前必须给
循环变量赋值;
i-b
例:任意输入两个整数a,b,求
i=a
#include<stdio.h>
main()
{inti,j9a,b9sum;
printf("pleaseinputtwonumber!\nn);
scanf("a=%d,b=%d\&a,&b);
i=a;j=b;if(a>b){i=b;j=a;}
for(;i<寸i++)
sum=sum+i;
nn
printf(\nsum=%d5sum);
}c语言震拂没苜
条件表达式一般不可省略,否则为无限循环
例:for(i=l;;i++)sum=sum+i;
相当于条件永真、永不为0,若用while表示
相当于:while(1)
{sum=sum+i;
i++;
i吾舌程停投注
«循环表达式亦可省略,但在循环体中必须有语句
来修改循环变量,以使条件表达式在某一时刻
为0而正常结束循环。
/*没有循环表达式*/
例:for(sum=05i=l;i<=100;)
{sum=sum+i;
i++;
}
cissgsmt
张若同时省略初始表达式.和循环表达式,则相当
于while语句o
例:for(;i<=100;){sum+=i;i++;}
while(i<=100)
{sum+=i;
i++;
)
串三个表达式均省略即for(;;)语句则相当于while(l)
语句,为无限循环。
4■初始表达式、循环表达式可以是逗号表达式,以
使循环变量值在修改时可以对其它变量赋值。
如:for(sum=09i=l;i<=100;i++,i++)
相当于:sum=0;
for(i=1;i<=100;i=i+2)
c捂言握停直计
令条件表达式可以是关系表达式,也可以是数值表
达式或字符表达式。只要值M.即执行循环体.
例:for(i=0;(c=getchar())!='\n';i+=c);
条件表达式
C语言耗停直苜
§5.6循环的嵌套
与其它语言一样,当循环体中又包含了另一个完
整的循环语句时——嵌套。
C语言有三种循环语句,均可以相互嵌套:
例1:while()
while()
C语言耗停直苜
例2:for(;v条件表达式>;)
while(){}
do
{}while();
均为正确的嵌套
吾舌维停投计
但:
while()for(;;)
{for(;;)
while()
不能理解为正确的形式。但要注意语句的
包含关系。
C语言混程汽苜
§5.7几种循环的比较
•1.对于同一问题,三种循环可相互替代。但不
要用goto语句。
•2.for循环功能强于while和do…while。但若不
是明显地给出循环变量初终值(或修改条件),
则应用while或do...while。以增强程序的结
构化和可读性。
C语言耗停直苜
•3.要防止无限循环一死循环。
•4.循环过程中,为了结束本次循环或跳出整个
循环。分别要用至Ucontinue和break语句。
C语言震界过片
§5.8break语句和contiune语句
5.8.1break语句(作用:从循环体中退出)
问题:计算圆的面积九比半径取1,2,3,4...,
当面积>100时结束。
C语言凝停过H
程序段:
pi=3.14159;
for(r=l;r<=10;r++)
{area=pi*r*r;
if(area>100)break;
)
printf(n%f\area);
)
注意:break只能用于循环语句和switch语句。
C语言耗停汽苜
5.8.2continuce语句
作用:结束循环。
例:编写程序,打印100〜200中不能被3整除的数。
程序一:不用continue语句:
#include<stdio.h>
main()
{intn;
for(n=100;n<200;n++)
if(n%3!=0)/*n不能被3整除*/
nn
printf(%d9n);
}c语言震掷汽苜
程序二:使用continue语句:
main()
{intn;
for(n=100;n<=200;n++)
{if(n%3==0)/*n能被3整除*/
continue;
nn
printf(%d5n);
ci吾言程停过片
§5.9程序举例
例1:求Fibonacci数例:1,1,2,3,5,8,...前40个数。
规律:F「1,F2=1
Fn=Fn-1+Fn-2(n>2)
程序要点:
*fl=fl+f2;
f2=fl+f2;交替的结果正好为一序列
*每输出4个数时换行。
■(F心悟言能吊汽苜
程序如下:
fl=lf2=l
/*exp61.c*/5
#include<stdio.h>fori=lto40
main()
输出fl,f2
{longintfl9f2;
inti;fl=fl+f2
fl=l;f2=l;f2=f2+fl
for(i=1;i<=40;i++)
printf(%121d%121d,flQ;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【新教材】教科版1.2 测量:实验探究的基础 教学设计(表格式)
- 工厂设备维护维修全面解决方案
- 文化创意产业:IP运营与品牌建设
- 体育赛事文件制作与组织策划
- 服装设计艺术与设计心理学
- 酒店旅游行业网络营销技巧
- 跨区域代建项目的协同管理流程
- 新商场促销活动策划方案
- 物流仓库仓储管理自查报告
- 航空航天安全生产及应急处置培训
- 2025年《科目一》机动车驾驶员考试试题库及答案
- 2026年中路财产保险股份有限公司校园招聘6人备考题库及答案详解1套
- 新能源电池检测服务协议
- 2026华泰证券招聘面试题及答案
- 在家输液协议书
- 农村宅基地执法培训课件
- 账号孵化合同范本
- 2025年及未来5年市场数据中国水族器材市场竞争态势及投资战略规划研究报告
- 建筑工程项目管理全过程指导手册
- 骨质疏松治疗仪相关课件
- JJG1036-2022天平检定规程
评论
0/150
提交评论