c语言程序设计课件_第1页
c语言程序设计课件_第2页
c语言程序设计课件_第3页
c语言程序设计课件_第4页
c语言程序设计课件_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

注汰法:英诀:女:沐逐沐美沐沐泱沐米淡淡沐诀族&*浜逐涣逐法涨沐逐淡:涣沐沐差二: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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论