C语言程序设计_第1页
C语言程序设计_第2页
C语言程序设计_第3页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序设计第1章基本概念1.1 C语言的产生及发展史 1.2 C语言特点C语言及其程序的基本形式第2章数据类型、运算符与表达式 2.1基本数据类型-2.2常量与变量82.3 运算符1.12.4 表达式 .'2.5逗号运算符与逗号表达式 1第三章顺序结构 1.3.2数据输出13.2.1 printf 函数的使用13.3数据输入13.4复合语句1.!341复合语句 19空语句213.5程序举例21第4章选择结构24.1关系运算与逻辑运算 2.4.1.1 关系运算 2:逻辑运算2:4.2 if 语句2:4.3条件表达式 254.4 switch 选择结构与 break 语句2.第五章循环

2、结构2i5.1 while 循环2.5.2 do while 循环295.3 for 语句和 for 语句构成的循环 305.4 循环的嵌套 325.5 break 与continue在循环中的应用 :3.:第六章字符型数据3.6.1字符型常量3i6.1.1 字符型常量 3.转义字符数据的写法 3可对字符量进行运算3.16.2 字符型变量 366.3字符的输入与输出 366.3.1 用 printf 与 scanf作输出与读取 366.3.2 用putchar 与getchar 作字符的输出与读取 3,第七章函数3.97.1_库函数 3.7.2自定义函数39721函数的书写方法 4.0722

3、函数的返回值 :47.3函数的调用 4:7.4函数的说明4:7.5调用函数与被调用函数之间的数据传递4.第八章地址与指针 4.8.1变量的地址与指针 488.2指针变量的定义 498.3指针变量赋值4.8.4对指针变量操作 498.5移动指针58.6函数之间的地址传递 5.8.7返回地址的函数叫做指针函数 5:第九章数组5:9.1 一维数的定义与引用 5:9.2 维数组的访问 5:9.3数组的赋值5:9.5 维数组与地址 5;9.5二维数组的定义和二维数组元素的引用5.二维数组的定义 57二维数组的访问 589.5.3 二维数组在定义可以赋值 5可以通过赋值,确定行数 59.6 二维数组与指针

4、 59、二维数组实际上是由一维数组构成: 599.6.2 二维数组名也是二维数组的首地址 599.7 二维数组与函数 60第十章字符串610.1用一维数组存放字符串 6.10.1.1 通过赋初值给一个字符数组赋成字符串 65在程序执行过程中给一维字符数组赋值 .610.2 使指针指向一个字符串 6.10.2.1 可通过赋初值,指一个指针指向字符串 66通过赋值运算使指针指向一个字符串 6610.3字符串的输入与输出 610.3.1 输入输出字符串的必要条件6610.3.2 用格式说明符 s进行整串的输入与输出 6610.3.3 用gets和puts函数对字符串进行输入与输出 66J 第十-10

5、.4字符串数组610.5用于字符串处理的函数 6.一章递归函数7.第十二章 C语言中变量的作用域与变量的存储类型7012.1局部变量7.12.2全局变量7.12.3局部静态变量7.第十二早编译预处理和动态存储分酉己 7,13.1宏替换乙13.2动态存储分配7,13.2.1 malloc 函数与 free 函数7.第十四章结构体与共用体7-14.1 用typedef 说明一个类型乙14.2结构体类型 714.2.1 结构体类型声明的格式:714.2.2 结构体型的数组、变量、指针的定义7.14.2.3结构体变量、数组的赋值 7114.2.4 引用结构体变量中的数据 714.2.5 对结构体成员赋

6、值 .7.14.2.6结构体函数之间数据传递 7本章.14.3链表8第1章基本概念主要内容e明确c语言的产生及发展史了解C语言特点掌握C语言的表述环境 4明确C语言及其程序的基本形式1.1 C语言的产生及发展史C语言属于ALGOL语言族系,产生于1972年.是编程者设计的一种结构化程序设计 语言.它首先是为了编写 PDP-11型计算机上的UNIX操作系统而产生出来,但后来发展成 为一种独立的程序设计语言,并广泛地应用在大型,小型,微型计算机上1967年英国剑桥大学的 Matin Richards对CPL语言做了简化,推出了 BCPL语言。1970年美国贝尔实验室的 Ken Thompson 以

7、BCPL语言为基础,又做了进一步简化, 设计出了很简单的而且很接近硬件的B语言,并用B语言写了第一个 UNIX操作系统,在PDP-7上实现。1972年至1973年间,贝尔实验室的 在B语言的基础上设计出了 C语C语言的设计者 Denn is M. Ritchie1973年,K.Thompson 和两人合作把UNIX的90 %以上用C改写,即UNIX第5版,由此确立了 C语言的地位。Ritchie 和 Thompson 在开发 UNIXC语言的设计者 和Unix的设计者 Ken Thompson接受美国国家技术勋章C语言是一种"中级语言",它介于高级语言(BASIC,FORT

8、RAN)和低级语言(汇编语言)之间它即具有高级语言功能(直接的人-机对话和数学计算),又具有低级语言功能(移位,位处理),从而使其功能大大地增强,成为一种先进的程序设计语言1.2 C语言特点语言简炼使用的关键字仅为 27个,而BASIC语言为150多个.利用符号代替语句 表达简洁许多工作由大量的库函数完成,并且库函数可以自定义,所以C语言的关键字及其功能是无限的功能强它集高级语言的特点和低级语言的特点于一身,即能完成高语言的功能又能完成低级语言的功能,是一种强功能的语言.由它编写的软件有: UNIX, dBASE III,C 编译.模块化结构C语言支持各种库函数和用户定义的函数(模块)相互调用

9、构成程序,完成功能并且,不允许嵌套定义,因此,具有很强的模块化结构移植性好利用C语言编的程序不加改动或稍加改动,就可以由一个环境移植到另一个环境上因为,不同计算机上的 C语言编译代码的80%左右相同C语言及其程序的基本形式这里介绍几个简单的C语言程序,从中明确C语言及其程序的基本形式。例1.1mai n ()printf ( This is a C program.' n);本程序的作用是输出以下一行信息,主要说明 序的具体形式。C语言程序的基本组成部分,C语言程例1 . 2mai n ()int a,b,sum;/*求两数之和*/*这是定义变量*/a=123;b=456;/*为变量赋

10、初值 */sum=a+b;/*将两个变量的值相加后赋给另一个变量*/printf ( Sum is %dn”,sum);/* 输出相加后的结果 */本程序的作用是说明一个较为全面的C语言程序,以及注释的使用。第2章 数据类型、运算符与表达式本章主要内容 理解数据类型引入的目的、意义和具体类型 明确常量与变量 掌握c语言的运算符和表达式表2.1基本数据类型大千世界存在着各种各样、各种类型的数,人们利用不同类型的数去描述不同的事物。然而,哪些“类型”的数据可以在C语言中使用? C语言中允许使用的“类型”又是什么呢?3.1.1 数据类型:某一类数据(值)的特征形式(表示意义、取值范围、符号取向)基本

11、形:整数(int )、浮点(float )、字符(char )、无值(void )。构造(组合、集合)型:数组、结构(struct )联合(union )、枚举(enum )。 指针类型空类型1. 1.整数和整数类型整数在C语言中称为“整型常量”,因为它即表示了值,又表示了一定的意义。类型字节数取值范围sig ned int2-32768 - 32767Un sig ned int20 -65535sig ned shot i nt2-32768-32767Un sig ned shot i nt20 -65535long int4-2147483648 -2147483647Un sig n

12、ed long int40 -4294967295注:方括弧内的部分是可以省略的。例如:signed shot int 与shot等价,尤其是signed是完全多余的,一般都不写sig ned2.浮点类型(float)类型字节数有效数字取值范围float46 -7-3.4X10(-38) - 3.4X10(38)double815 -16-1.7X10(-308) - 1.7X10(308)long double1618 - 19-1.2X10(-4932) - 1.2X10(4932)3.字符类型(char)类型字节数意义char1表示个字付2.2常量与变量在3.1节学习了几种数据的类型,可

13、以用它们表示客观世界中的数值。那么,如果要表示客观世界中的“事物”(事和物)怎么办? C语言中使用“量”来表达客观事物,其中, 自身数值不变的量用“常量”表示,自身数值变化的量用“变量”表示。因此,为了全面地 表达客观事物,在 C语言中则必须使用(定义)常量和变量(表示事和物)。同时,给出它们的类型(表示数值)。3.2.1 常量:程序执行中其值不变的量。类型:一般(短整)常量、长整常量、浮点常量、字符常量、字符串常量。 符号常量定义式:#defi ne符号常量名;例:#defi nePI 3.14 意义:3.2.2 变量:程序在执行过程中其值变化的量。类型:一般(短整)变量、长整变量、浮点变量

14、、字符变量、字符串变量。 定义式:数据类型变量名;例:int k; 意义:定义整型变量 k。变量赋初值在C语言中常需要对变量预先设置初值,可以使用数的三种表示形式:十进制数、八 进制数、十六进制数和数据类型为变量赋初值。例3.1#defi ne PRICE 30mai n ()int nu m,total;num=10;total=num*PRICE;printf ( fotal=%dn ” ,total);本程序的作用是说明常量的定义、赋值和使用。例3.2mai n ()int a,b,c,d;un sig ned u;a=12;b=-24;u=10;c=a+u;d=b+u;printf (

15、a+u=%d,b+u=%dn”c,d);本程序的作用是说明整型变量的定义、赋初值、运算和其值的输出。例3.3main ()char c1,c2;c仁 97;c2=98;printf (%c%cn ”c1,c2);printf (%d%dn ”c1,c2);本程序的作用是说明字符型变量的定义、赋初值和输出。例3.4mai n ()int a=3;float f=3.1415926;char c= a 'printf (nnn%d%f %cn ”a,f,c);本程序的作用是说明整型、字符、浮点变量的定义、赋初值和输出。注:标识符:由字母、数字和下线符构成,标志和识别一定意义的字符串。类型:

16、关键字、特定字、一般标识符(由用户设定)。作用:代表常量、变量、数据类型、函数名字。关键字:在C语言中,具有严格特定含义的标识符。见教材 P365 附录B2.3 运算符在客观事物使用数和量表示完以后,还要对它们进行处理,进行运算,这就要涉及 C 语言中的运算符。还要表达它们之间的关系,又要用到 C语言中的表达式。那么 C语言中 提供了哪些运算符和表达式让我们使用呢?运算符C语言中的运算符分为以下几类:1. 1.算术运算符+ -* / %<=!=2. 2.关系运算符>< =>=3.3.逻辑运算符&& | !4.4.位运算符<< >>

17、 | A &5.5.赋值运算符=6.6.条件运算符?7.7.逗号运算符58.8.指针运算符* &9.9.求字节数运算符sizeof10. 10.强制类型转换(类型)11. 11.分量运算符变->12. 12.下标运算符13. 13.其它函数调用运算符 ()见教材 P365 附录C332算术运算符自增、自减算术运算符+i;-i;意义:在使用i之前,先使i的值加1 (减1 )。i+;i-;意义:在使用i之后,使i的值加1 (减1 )。例:int m,n,s,t,k=1O;m=+k;n=k+;s=-k;t=k-3.3.3复合运算符a+=3;等价于a=a+3;x*=y+8;等价于

18、x=x*(y+8);x%=3;等价于x=x%3;2.4 表达式表达式:使用运算符将运算(操作)对象连接起来的、符合c语法规则的式子。算术表达式、逻辑表达式、字位表达式、强制类型转换表达式、逗号(顺序)表达式、 赋值表达式、条件表达式、指针表达式。例3.5main ()int a,b,c;float d,f=3.1415926;a=b=c=9;d=a/f;printf (“nnn%d%d %d %f n ”a,b,c,f);printf (“n%fn ”d);本程序的作用是说明赋值表达式、算术表达式的使用。例3.6mai n ()int m=10; n=3;int s,t;s=m/2;t=n %

19、2;printf (“nnn%d%d n ”s,t);本程序的作用是说明除法运算符和取余运算符的区别。例3.7mai n ()int i,j,k,l;i=2,j=3;k=i+;l=-j;printf ( %d %d %d %d ”i,j,k,l);本程序的作用是说明自加、自减运算符的使用。例3.8main ()int num=1,total=11;nu m+=5;total%=num;printf ("n %d %dn", nu m,total);本程序的作用是说明复合运算符的使用。例3.9mai n ()float x;int i;x=3.6;i=(i nt)x;prin

20、tf (“n x=%fi=%dn ”x,i);本程序的作用是说明强制类型转换的问题。2.5逗号运算符与逗号表达式以前我们学过+- */(特别)%(特别)=%要求两边的操作数必须是整数如:5%3 结果为2这个运算符通常用作判断一个数是否能被另一个数整除。这节课我们学习逗号运算符,我们通过逗号表达式来看一下逗号运算符是怎 么回事。逗号表达的定义:用逗号连接的表达式,叫逗号表达式格式:表达式1,表达式2,表达式3,表达式4,表达式n逗号表达式的运算顺序:表达式 1 表达式2 表达式3 表达式4 表达 式n 逗号表达式结果:最后一个表达式的结果将作为整个表达式的结果 例1、例1、看如下程序,写出结果#

21、i nclude "stdio.h"mai n()int k;k=(2+3,7,0,88);printf("k=%dn",k);/ 结果是 88例2、例2、看如下程序,写出结果#i nclude "stdio.h"mai n()int k;k=2+3,7,88;printf("k=%dn",k);/ 结果是 5说明:赋值符号的优先级要高于逗号运算符,逗号运算符的优先级在所有的运算 符当中是最低的。例3、看如下程序,写出结果#i nclude "stdio.h"mai n()int k,i=5;k

22、=(i+,i+,i+5);/ k=(i=i+1),(i=i+1),(i+5);printf("k=%dn",k);/ 结果为 12例4、看如下程序,写出结果#i nclude "stdio.h"mai n()int k,i=5;k=i+,i+,i+5;/ k=(i=i+1),(i=i+1),(i+5);prin tf("k=%dn",k);复习以前的知识运算符+ 和-运算的规则是一样的,我们以+为例进行讲解。+运算符只能用于单变量身上,如i+,(a+b)+ 这样写就不对了。用于单变量身上表示单变量本身自增1。自增运算符有两种情况,一种

23、作为前缀, 别一种作为后缀。一、当+作为前缀或是后缀时,变量执行的结果都是一样的#i nclude "stdio.h"mai n()int i=5;+i;prin tf("%d n",i);/ 6#i nclude "stdio.h"mai n()int i=5;i+;prin tf("%d n",i);/ 6说明:无论是前缀还是后缀,i+(或+i)都是使i自增1( i=i+1)二、+作为前缀与+作为后缀,表达式的值是不一样的#include "stdio.h"mai n()int k,i=5;

24、k=+i;prin tf("%d%d n",k,i);/ 66#i nclude "stdio.h"mai n()int k,i=5;k=i+;prin tf("%d %d n",k,i);56说明:在上面的两个程序中,K存放的都是自增表达式的值,两个自增表达式的 值是不同的。(1) +iK得到的是i自增后的结果,我们用一句话表示:先运算,后取值。(2)i+K得到的是i自增后前的结果,我们用一句话表示:先取值,后运算。 总结一下:i+和+i主要区别只是表达式的值不同,但是他们功能是一样 的,都是使i自增1.第三章顺序结构在这一章中,我

25、们主要讲printf和scanf的使用,若在程序中使用printf 和scanf,则应在程序的第一行用#inelude 将”stdio.h ”文件包含进来。3.2数据输出函数的使用以前我们上讲过一个例子:#i nclude "stdio.h"mai n()double a,b;a=1.2;b=1.2;prin tf("a=%f,b=%f n",a,b);说明:在上面的printf中,存在一个格式符%f,%f是专门用来输出double变量内容,那么上面程序的执行结果: printf的使用方法:printf(字符串”输出的变量);说明:1、双引号中的字符除了

26、格式符(是用来输出变量的)之外,其它字符是原样输出2、我们主要学习哪些格式符呢?double %f(%lf)float %fint%dlong %ld例1、写出程序结果#i nclude "stdio.h"mai n()float x,y;x=33.0;y=66.0;prin tf("x=%f,y=%f",x,y);例2写出程序结果#i nclude "stdio.h"mai n()int k;int a=11,b=3;k=a%b;prin tf("k=%d n",k);例3写出程序结果#i nclude &quo

27、t;stdio.h"mai n()long k;long a=9,b=3;k=a%b;prin tf("k=%ld n",k);3、printf(字符串”输出的变量);该格式中第二部分是可以省略,那么就输出字符串。#in clude "stdio.h"mai n()prin tf("*Hello Vorld*n");4、可以在d之间加上一个数字,用来指定输出数所占的宽度,如5d,贝擞占5个字符的宽度,字符默认向右对齐。例1、#i nclude "stdio.h"mai n()int a=3;int b=5

28、0;int c=500;prin tf("%5dn",a);prin tf("%5dn",b);prin tf("%5dn",c);例2、#i nclude "stdio.h"mai n()int a=3;int b=50;int c=500;int d=5000;prin tf("%5dn",a);prin tf("%-5dn",b);prin tf("%dn",c);prin tf("%3dn",d);若实际宽度 < 指定的宽

29、度,则nd数字默认向右对齐若实际宽度 < 指定的宽度,则%-nd默认向左对齐%d是我们以前的老模式,正常输出若实际宽度 > 指定的宽度,则正常输出5、对于输出(float 或double )的仁可以在%和f之间,加上m.n ,%m.nf m :是指定整个数所占宽度n:指定小数位数如:a=3.145678若想保留两位小数输出,则4.2f#i nclude "stdio.h"mai n()double a=3.145678;prin tf("a=%4.2f n",a);/ 3.15有时出题人比较懒,他容易将%4.2f写成%.2f,%.2f的意思:

30、小数按两位 输出,整数部分要原样输出的。#i nclude "stdio.h"mai n()double a=300.145678;prin tf("a=%.2f n",a);/ 300.151.2f 是先保证小数位输出,然后整数位原样输出3.3数据输入如何能过键盘给程序中的变量赋值呢?#i nclude "stdio.h"mai n()double a,b,area;a=1.2;b=1.2;area = a*b;prin tf("a=%.2f,b=%.2f,area =%.2f n",a,b,area);通过sc

31、anf函数给变量赋值,看一下scanf函数的使用形式:scanf(字符串” 变量的地址);说明1、给变量赋值也要能过格式符double%lffloat%fint%dlo ng%ld现在我们举一个最常见的例子:#i nclude "stdio.h"mai n()double a,b,area;scan f("%lf%lf",&a,&b);area = a*b;prin tf("a=%.2f,b=%.2f,area =%.2f n",a,b,area);注意:scan f("%lf%lf",&a

32、,&b);双引号内的格式符要挨着,不要加一些其它字符,要赋值的变量前加&2、如何给变量赋值#include "stdio.h"mai n()double a,b,c,area;sca nf("%lf%lf%lf",&a,&b,&c);area = a*b+c;prin tf("a=%.2f,b=%.2f,c=%.2f,area =%.2f n",a,b,area);1)123 回车2)1回车2回车3回车3)1tab23总之:数据之间可以任意加空格,回车,Tab,最后用回车表示数据输入结束。3、在

33、scanf中,我们可以指定所要读取数的宽度#i nclude "stdio.h"mai n()int a,b,c,area;scan f("%3d%2d%4d",&a,&b,&c);area = a*b+c;prin tf("a=%3d,b=%3d,c=%3d,area =%3d n",a,b,c,area);说明:若在键盘中输入1234567890 时,此时%3d读取了 123赋给了 a,%2d读取了 45赋给了 b,%4d读取了 6789赋给了 c,4、用%*d可以是跳过一个数#i nclude "

34、;stdio.h"mai n()int a,b,area;scan f("%d%*d%d",&a,&b);area = a+b;prin tf("a=%3d,b=%3d,area =%3d n",a,b,area); /若输入123456789回车说明:此时第一个%d读取了 123,遇空格结束,第二%*d会跳过456,第三 个%d读取了 789。例1、#in clude "stdio.h"mai n()int a,b,area;scan f("%3d%*3d%3d",&a,&

35、;b);area = a+b; prin tf("a=%3d,b=%3d,area =%3d n",a,b,area);/若输入123456789回车例2、#i nclude "stdio.h"mai n()int a,b,area;scan f("%2d%*3d%2d",&a,&b);area = a+b;prin tf("a=%3d,b=%3d,area =%3d n",a,b,area);输入 1234567890说明:读取了 12送给了 a,跳过345,读取了 67赋给了 b.最后注意,同学

36、们在上机的时候总爱出现这样的毛病:#i nclude "stdio.h"mai n()int a,b,area;scan f("%d,%d,%d",&a,&b,&c);area = a+b+c;prin tf("a=%3d,b=%3d,c=%3d,area =%3d n",a,b,c,area);同学们千万要注意:在scanf的双引号,一定要按着双引号的字符原样输入, 这样才是正确的,如上题:123,456,789#i nclude "stdio.h"mai n()int a,b,c,are

37、a;scan f("please input a,b,c: %d%d%d",&a,&b,&c);area = a+b+c;prin tf("a=%3d,b=%3d,c=%3d,area =%3d n",a,b,c,area); 此时正确的输入方法是:please in put a,b,c:1231213.4复合语句复合语句复合语句复合语句的概念:就是用 括起来的0个或多个语句叫复合语句 在C语言语法上来说,是作为一个整体(也可以说作为一条大的语句) 如:#i nclude "stdio.h"mai n()int

38、 a,b,c,area;sca nf("%d%d%d",&a,&b,&c);area = a+b+c;prin tf("a=%3d,b=%3d,c=%3d,area =%3d n",a,b,c,area);这个C语言程序从上到下一共3条语句。空语句空语句:就是一个单分号,空语句也是一条合法的语句。#i nclude "stdio.h"mai n()int a,b,c,area;scan f("%d%d%d",&a,&b,&c);area = a+b+c;prin tf

39、("a=%3d,b=%3d,c=%3d,area =%3d n",a,b,c,area);该程序一共是5条语句,当计算机执行到第四条语句(空语句)时,计算机什 么也不干。3.5程序举例例3.1从键盘输入两个整数,给x和y赋值,在程序中使x和y的值交换,然 后再输出交换后的x和y的值。#i nclude "stdio.h"mai n()int x,y,t;scan f("%d%d", &x, &y);t=x; x=y; y=t;prin tf("x=%d,y=%d n",x,y);例3.2输入一个do

40、uble 数给n,输出该数时,要对小数点的第三位进行四舍 五入,后输出n。#i nclude "stdio.h"mai n()double n;scan f("%lf,&n);n=n *100;n=n+0.5;n=(i nt) n;n=n/100;printf("n=%.2f", n);第4章选择结构4.1关系运算与逻辑运算关系运算关系运算主要是由>>=<<=!=,由关系运算符构成的表达 式是关系表达式。这里面讲的主要是:是表达式都得有值,关系表达式也有值(当 关系成立时,表达式的值为1,不成立关系表达式的值为0

41、)#i nclude "stdio.h"mai n()int k;k=1>2;prin tf(" 1>2 de zhi %dn", k);/ 0k=1=2;prin tf(" 1=2 de zhi %dn", k);/ 0k=1!=2;prin tf(" 1!=2 de zhi %dn", k);1逻辑运算逻辑运算符主要是由&&(并且)、|(或者)、!(非)等运算符组成。现在说一 下运算规则:&&T&&TTT&&FFF&&T

42、FF&&FFIIT|TTT|FTF|TTF|FF!T!F结果为 F 结果为 T例 1、( T && TT)#i nclude "stdio.h"mai n()int k;k=3>2&&3>1;prin tf("%d",k);例 2、( F && T F)#i nclude "stdio.h"mai n()int k;k=3>12&&3>1;prin tf("%d",k);例 3、(T | F T)#i nclud

43、e "stdio.h"mai n()int k;k=13>12|3>11;prin tf("%d",k);例4、(! T结果为 F)#i nclude "stdio.h"mai n()int k;k=!(13>12);prin tf("%d",k);说明:在逻辑表达式中,若其中一个表达式是非0的,那么在逻辑判断中,计算机认为是真#i nclude "stdio.h"mai n()int k;k=(13>12) &&-3;prin tf("%d&q

44、uot;,k);4.2 if语句if语句一共和2种基本的使用形式,还有2种嵌套的使用形式,当然考试主 要考两种基本的使用形式,关于嵌套同学们认识一下就可以了。基本形式1、1、使用形式:if(条件)语句2、执行过程:若条件成立,则执行if中的语句,否则执行if语句后面的语句。3、例1 :从键盘输入两数,输出最大数:#i nclude "stdio.h"mai n()int m,n; int max;scan f("%d%d",&m,&n);max=m;if(max <n) max=n;prin tf("max=%d n&qu

45、ot;,max);例3、例3、从键盘输入三数给a,b,c变量,再输出a,b,c变量时,三数是由大到小的顺序输出#i nclude "stdio.h"mai n()int a,b,c; int t;scan f("%d%d%d",&a,&b,&c);if(a < b) t=a; a=b; b=t;if(a < c) t=a; a=c; c=t;if(b < c)t=b; b=c; c=t;prin tf("%d%d %d n",a,b,c);#i nclude "stdio.h&quo

46、t;mai n()int a,b,c; int t;scan f("%d%d%d",&a,&b,&c); if(a < b) t=a;a=b; b=t;if(a < c) t=a; a=c; c=t;if(b < c) t=b; b=c; c=t;prin tf("%d%d %d n",a,b,c);运行:没有达到预期,因为if语句中,若条件成立时,同时执行多条语句,多 条语句必须用括起来,构成复合语句,才可以。上面程序中,if后面的多条语 句没有被括起来,if只与最近的语句搭配。正确的写法如下:#i nclud

47、e "stdio.h"mai n()int a,b,c; int t;scan f("%d%d%d",&a,&b,&c);if(a < b)t=a; a=b; b=t;if(a < c) t=a; a=c; c=t;if(b < c)t=b; b=c; c=t; prin tf("%d %d %d n",a,b,c);第二种基本形式:含else的if语句1、使用形式if(条件)语句1else语句22、 执行过程:若条件成立了,则执行语句1,否则执行语句23、例:从键盘输入两数,输出最大数:#i

48、 nclude "stdio.h"mai n()int m,n; int max;scan f("%d%d",&m,&n);if(m >n)max=m;elsemax=n;prin tf("max=%d n",max);从键盘输入一个整数,若能被 3整除,打印Yes,否则打印No#in clude "stdio.h"mai n()int n;scan f("%d",&n);if(n %3=0)prin tf("Yes");elseprin tf(

49、"No");if语句是一条特殊的语句,所以他可以替换if语句中的语句。嵌套形式一:else语句2嵌套形式二:if(条件)语句2elseif(条件)语句1else#include "stdio.h"mai n()int s; sca nf("%d",&s); if(s>=60)if(s>=90) prin tf("youxiu n"); elseprin tf("jige n");elseprin tf("Faild! n");#include "

50、stdio.h" mai n()int s; sca nf("%d",&s); if(s<60)prin tf("Faild! n"); elseif(s>=90)prin tf("youxiu n"); else语句2例如:输入一成绩到变量S中,根据学生成绩的等级分别输出ABCDE等。#i nclude "stdio.h"mai n()int s; sca nf("%d",&s); if(s>=90)pri ntf("A n ”);else

51、 if(s>=80)pri ntf("B");else if(s>=70)pri ntf("C");else if(s>=60)pri ntf("D");else prin tf("E");4.3条件表达式叫条先择结构呢我们学习了 if结构,现在我们还要学习另外一种选择结构, 件表达式。我们首先看一下条件表达式的构成:条件?表达式1 :表达式2条件表达式的执行过程: 若条件成立,则计算机执行e1,否则执行e2。例1 :#include "stdio.h"mai n()int m

52、,n; scan f("%d%d",&m,&n);int max;m>n? max=m:max=n;条件表达式的值:我们通过一个例子来看:例2#i nclude "stdio.h"mai n()int m,n; scan f("%d%d",&m,&n);int max;max=m>n ?m: n;(?:条件运算符优先级高于=)prin tf("max=%dn",max);若条件成立,则表达式的结果为表达式1,否则表达式的结果为表达式2例3#include "st

53、dio.h"mai n()int s; scanf("%d",&s);s>60 ? s>=90 ? prin tf("youxiu n") : prin tf("jige n"):prin tf("Faild! n");4.4 switch 选择结构与break语句Switch也是一个分支选择结构:switch(表达式)case常量1:语句1;语句2;case常量2:语句1;语句2;case常量3:语句1;语句2;case常理n:语句1;语句2;default :语句1;语句2例如:根

54、据学生的成绩给出相应的等级,90分以上是A等,80以上是B等, 直到60分以上是E等,不及格为F等。#i nclude "stdio.h"mai n()int s; scanf("%d",&s); 88switch(s/10)case 10: prin tf("A");case 9:prin tf("A");case 8:prin tf("B");case 7:prin tf("C");case 6:prin tf("D");default :pr

55、i ntf("F");说明:根据这个程序,我们得出一个结论:switch也是一个选择结构,计算机 在执行时,先得出switch后括号内表达式的值,然后计算机拿着这个值去和 case后的常量比较,如果和哪个常量的值相等的话,就去执行相应的case分支内的语句。这里面,同学背下来吧:整数/整数=整数 整数/小数=小数(88/10 =8 88.0/10=8.8)但是执行的时候出错了(结果为BCDF),为什么呢?就是因为计算机在执行case分支时的特点:进入到当前分支,执行完本分支内的语句后,后面的分 支包括default分支都执行了。所以我们在写每个 case分支的时候,在分支的

56、 末尾都要加上break; break 功能就是跳出break所在的switch 语句。#i nclude "stdio.h"mai n()int s; scanf("%d",&s); /98switch(s/10)case 9:prin tf("A n"); break;case 8:printf("B n"); break;case 7:prin tf("C n"); break;case 6:prin tf("D n"); break;default :pri

57、ntf("F n");说明:1、 case分支后,可以有多条语句,也可以有 0条语句,当有0条语句的时 候,当计算机进入到没有语句的分支,什么也不干,但又没发现break;,计算 机又继续向下执行(这里是执行 case 9)#i nclude "stdio.h"mai n()int s; scanf("%d",&s); 98switch(s/10)case 10: case 9:prin tf("A n"); break;case 8: prin tf("B n"); break;case 7:prin tf("C n&q

温馨提示

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

评论

0/150

提交评论