




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【精品】c语言教学教案 第一讲C语言概述1.1C语言发展概述C语言是在1972年至1973年间由美国的贝尔实验室的M.D.Ritchie和K.Thompson以及英国剑桥大学的M.Richards等为描述和实现UNIX操作系统而设计的。 最初的C语言是附属于UNIX的操作系统环境,而它的产生却可以更好地描述UNIX操作系统。 时至今日,C语言已独立于UNIX操作系统。 它已成为微型、小型、中型、大型和超大型(巨型)计算机通用的一种程序设计语言。 随着C语言的不断发展、应用和普及,目前,C语言已经能够在多种操作系统下运行,实用的C语言编译系统种类繁多,如Microsoft C、Turbo C等。 1.2C语言的特点C语言能够成为目前广泛的高级设计语言之一,完全是由其语言特点决定的。 (1)语言基本组成部分紧凑简洁。 (2)C语言运算符丰富,表达能力强。 (3)C语言数据结构丰富,结构化好。 (4)具有结构化的控制语句。 (5)C语言提供了某些接近汇编语言的功能。 (6)C语言程序所生成的目标代码质量高。 (7)C语言程序可移植性好。 C语言的弱点 (1)运算符的优先级较复杂,不容易记忆 (2)C语言的语法限制不太严格,一定程度上降低了某些安全性。 1.3简单的C语言程序。 1.3.1C语言程序的构成1.3.2C语言程序的特点 (1)C程序是由函数构成的,其中至少包括一个函数main()。 (2)函数体是由左右花括号括起来的部分。 (3)C语言中的每个基本语句都以“;”结束。 (4)C语言书写格式自由,一行内可以写一个语句,也可以写多个语句。 (5)#include语句是编译预处理语句,其作用是将由双引号或尖括号括起来的文件内容读入该语句位置处。 对程序说明 (1)可用/*/对C程序中的任何部分作注释。 (2)C语言中所有变量都必须先定义类型,然后再使用。 (3)一个C语言程序通过函数之间的相互调用来实现相应的功能。 即可以是系统提供的库函数,也可以是根据需要自己定义的函数。 1.4C语言上机步骤运行环境DOC操作系统下的Turbo C1.4.1C程序上机步骤1.在TurboC环境下。 将C语言源程序通过键盘输入到计算机中,并以文件形式存盘,源程序都是以.C为扩展名。 2.编译通过程序将源程序输入到计算机后,需要经过C语言编译器将其生成目标程序。 得到的目标文件都是以.OBJ为文件扩展名。 3.连接经过编译后生成的目标文件需经过连接后才能生成可执行代码。 其扩展名是.EXE。 所谓连接,是将目标文件和库函数或其他目标程序连接成可执行的目标程序。 4.执行连接后源程序的目标程序就是可执行文件了。 在DOS系统下,只要键入可执行文件名,按回车键就可以了。 1.4.2Turbo C系统菜单1.Turbo C的主屏幕和主菜单功能2.文件菜单及功能1.4.3程序调试方法一个计算机程序必须对其进行测试来确定其可以正确地工作,这一过程称为调试。 程序错误语法错误通过编译和连接就会找到运行错误通过调试自己找出问题所在1.设置和使用观察变量2.单步执行程序3.设置和使用断点2.1常量和变量2.2整型数据2.3字符型数据2.4浮点型数据2.5变量的初始化第二章数据类型与表达式2.1常量和变量2.1.1常量在程序运行过程中其值不能被改变的量。 2.1.2变量在程序运行过程中其值可以被改变的量。 标识符用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。 1.标识符的有关规定 (1)由英文字母、数字、下划线组成,且第一个字符必须是字母或下划线,一般不超过8个字符; (2)大小写字母的含义不同。 (3)不能使用C语言中的关键字做标识符, (4)用户取名时,应当尽量遵循“简洁明了”和见名知意的原则。 2.变量名的有关规定 (1)使用变量名前,一定先定认,后使用,否则不能做为变量名。 (2)每一个变量属于一种类型,便于在编译时据此检查该变量所进行的运算是否合法。 (3)变量名的定义存储属性、数据类型、变量名表3.数据类型2.2整型数据2.2.1整型常量 (1)十进制整数数码直接开头的十进制数。 如1234,-234。 (2)八进制整数以0开头的常量是八进制数。 如011= (11)8 (3)十六进制整数以0x开头的数是十六进制。 如0x123即 (123)16例2.1三种进制表示方法的转换源程序a1.c main()Int x=1246,y=01246,z=0x1246;Printf(“%d,%d,%dn”,x,y,z);Printf(“%o,%o,%on”,x,y,z);Printf(“%x,%x,%xn”,x,y,z);C:a11246,678,46782336,1246,111064de,2a6,12462.2.2整型变量原则使用变量前,先定义,后使用。 (1)基本型用int表示; (2)短整型用short int或short表示; (3)长整型用long int或long表示; (4)无符号型无符号整型用unsigned int或unsigned表示;无符号短整型用unsigned shortint或unsigned short表示;无符号长整型用unsigned longint或unsigned long表示;2.2.3整型变量使用不同的整型数据,应根据其特性和取值范围,将其定义成不同类型的整型变量。 例2.2不同类型的数据进行算术运算。 源程序a2.c Main()Int a,b,s1,s2;Unsigned x;a=10;b=-30;x=20;S1=a+x;s2=b+x;Printf(“a+x=%d,b+x=%dn”,s1,s2);C:a2运行结果为a+x=30,b+x=-102.2.3整型变量使用不同的整型数据,应根据其特性和取值范围,将其定义成不同类型的整型变量。 例2.3整型数据各类型所能表示的范围源程序a3.c main()int a,b;long c,d;unsigned e,f;a=32767;b=1;c=2147483647;d=1;e=65535;f=1;Printf(“int:%d,%d,n”,a,a+b);Printf(“long:%d,%ldn”,c,c+d);Printf(“unsigned:%u,%un”,e,e+f);C:a3运行结果为Int:372767,-32768Long:2147483647,-2147483648Unsigned:65535,02.3字符型数据2.3.1字符型常量字符常量是由一对单引号括起来的单个字符构成,例如A,b,2,%;等。 一个字符型常量是该字符集中对应的编码值09的ASC编码值是4857。 显然0与数字0是不同的。 2.3.2字符型变量字符型数据分为两类一般字符类型(char)和无符号字符类型(unsigned char)。 例2.4字符型数据与整型数据可以通用源程序a3.c Main()char c1,c2;Printf(“%c,%cn”,c1,c2);Printf(“%d,%dn”,c1,c2);C:a4运行结果为A,B65,662.3.3字符串常量字符串常量是由一对双引号括起来的字符序列,例“fsdf”,”A”等。 字符串常量中不能直接包括单引号、双引号和反斜杠“。 字符串常量与字符常量的区别 (1)字符串常量是用双引号括起来的字符序列。 (2)字符串常量有串尾标记”0”; (3)字符串常量允许扩展表示法; (4)C语言中没有专门的字符串变量。 字符串如果需要存放在变量中,需要用字符型数组来存放。 注意不要将单个字符组成的字符串常量与字符常量混淆。 a为字符串常量,不能把一个字符串常量赋给一个字符变量。 例如下面的用法都是错误的Char c1,c2;C1=“a”C2=“CHINA”;字符0由系统自动加入到每个字符串的结束处,不必由编程人员加入。 字符串“CHINA”在内存中的存放形式如下图,其长度是六个字节,而不是5个字节。 字符0所对应的ASC值为0,即“空”字符。 2.4浮点型数据2.4.1浮点型常量浮点型常量有两种表示形式。 十进制数形式它是由数字和小数组成,如3.14159,-7.2,8.9指数法形式如180000.0用指数法可表示为1.8e5,1.8称为尾数,5称为指数。 0.00123用指数法可表示为1.23e-3注意 (1)字母e或E之前(即尾数部分)必须是有数字的。 (2)e或E后面的指数部分必须是整数。 如e-3,9.8e3.1,e5都是不合法的。 2.4.2浮点型变量(实型变量)把带有小数点的数称为浮点数,或实型数。 浮点型变量又称为实型变量,按能表示数的精度,分为单精度浮点型变量和双精度浮点型变量,其定认方法如下float a,b;/*单精度变量的定义*/double c,d;/*双精度变量的定义*/单精度占4个字节,有效位为7位,数值范围为10-371038双精度占8个字节,有效位为1516位,数值范围约为10-30710308浮点型常量不存在单精度型和双精度型之分。 2.5变量的初始化变量的初始人化在定义变量的同时给变量赋予初值。 方法 (1)先说明变量类型,然后再赋值。 (2)在对变量类型说明的同时,给变量赋初值。 先定义后赋值int a,b,c;char d;floatb f;a=2;b=5;c=10;d=a;f=5.7;定义和赋值同时进行int a=5;short b=10;char c=a;float d=7.8;3.对几个变量同时赋一个初值Int a1=10,a2=10,a3=10;初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋以初值的。 相当于一个赋值语句。 例如int a=10;相当于int a;a=10;又如Int a;,b,c=20;相当于Int a,b,c;C=20;第三讲运算符以及数据类型2.6运算符及表达式2.7数据类型转换2.8类型定义2.6运算符及表达式C语言运算符可以分为算术运算符、逻辑运算符、关系运算符、位运算符、赋值运算符。 2.6.1算术运算符和算术表达式1.算术运算符加、减、乘、除及取模即+,-,*,/,%来表示。 C语言规定 (1)模运算符%,仅用于整型变量或整型常量。 (2)优先级一个表达式中如有多个运算符,则计算先后次序为相应运算符的优先级高的优先。 乘、除、模优先级高于加、减的优先级。 (3)结合方向是一个运算对象两侧的运算符的优先级别相同时,应遵循的处理规则。 算术运算符的结合方向是从左至右;赋值运算符的结合方向是从右至左。 算术表达式由算术运算符、括号以及操作对象组成的符号C语言语法规则的表达式称为算术表达式。 2.6.2赋值语句1.赋值运算符语言的赋值运算符是“=”,它的作用是赋值运算符右边表达式的值赋给其左边的变量。 例如a=10,x=a+5,前者是把常量10赋给变量a,后者是将表达式a+5的值赋给变量x.注意如果“=”两侧的类型不一致,在赋值时要进行类型转换。 例如a=b,执行该语句时,b的结果转换为a的类型后才能进行赋值运算。 2.复合赋值运算符C语言允许在赋值运算符“=“之前加上其它运算符,以构成其复合运算符。 复合运算符多数为双目。 复合运算符有+=,-=,*=,/=,%=,=,&=,=,|=例a+=2等价于a=a+2x*=y+5等价于x=x*(y+5)x%=8等价于x=x%8赋值运算符都是自右向左执行。 3.赋值语句与赋值表达式赋值语句最简单的形式是=;功能是赋值运算符右边的“表达式”的值赋给左边的变量。 赋值表达式也可以包含复合的赋值运算符,例如果a=10,表达式a+=a-=a*a的值为-180。 其步骤为 (1)先进行a-=a*a的计算,它相当于a=a-a*a=10-10*10=-90. (2)再进行a+=-90的计算,它相当于a=a+(-90)=-90-90=-180.4.自增自减运算符i+(或i-)表示在使用该表达式值之后将i值加1(或减1)。 +i(或-i)表示在使用该表达式值之前将i值加1(或减1)。 说明 (1)+和-仅适用于变量,不能用于常量或表达式。 (2)+和-运算符的结合方向是“至右向左”。 Main()int a=100;printf(“a+=%dn”,a+);printf(“+a=%dn”,+a);printf(“a-=%dn”,a-);printf(“-a=%dn”,-a);输出结果a+=100+a=102a-=102-a=1002.6.3关系运算符和关系表达式1.关系运算符关系运算符均为两目运算符。 共有六种大于=大于等于b;c的值为1,若a=1,b=8,x=ab;x的值为0。 2.6.4逻辑运算符和逻辑表达式1.逻辑运算符逻辑运算符有“&“(逻辑与)、”|“(逻辑或)和”!“(逻辑非)三种。 逻辑运算符的操作对象为零或非零整数值,见表2.4.表2.4逻辑运算规则逻辑表达式由逻辑运算符和其操作对象组成表达式称为逻辑表达式。 2.6.5位运算符位(bit)运算是C语言的一大特色,可直接对构成内存的基本单位“字节”(byte)进行按位操作。 按位与(&)操作规则参加运算的两个运算量,如果两个相应的位均为1,则该位的结果为1,否则为0,见表2.5表2.5接位与例如 (1)清零。 (2)取一个数中的某些位。 高位清零0010110110011100&00000000111111110000000010011100低位清零0010110110011100&11111111000000000010110100000000按位或(|)操作规则参加运算的两个运算量,其相应的位中只有一个为1,则该位的结果为1,否则为0。 表2.6按位或例如 (1)01000001|0010100101101001 (2)01000001|0000000001000001 (3)01000011|1111111111111111 (4)01000001|1011111011111111例如将某一个数的某些位置为1。 一个整数a,要将其低字节全置为1,即低字节为11111111,可将该数与255(十六进制为FF,二进制为11111111)按按位或即可。 按位异或()操作规则参加运算的两个运算量,当相应位相同时,其结果在该位为0,相应位不同时,其结果在该位为1,即按位相加,但不进位。 表2.7按位异或 (1)使指定位翻转。 即由1变为0,由0变为1。 例011001100000111101101001 (2)不使用临时变量,交换两个值。 方法为若有两个数a和b,通过下面的赋值语言可将a和b的值互换a=ab;b=ba;b=ab;4.按位求反()操作规则运算符是一个单目运算符,用来对一个数二进制表示按位求反,即瘵0变成1,将1变成0。 表2.8按位求反例0110100110010110将一个数的某些位变为0。 方法是瘵该数a与b按位求与,此处的b为这样的一个数,即要求a中变为0的那些位均为1,其余位均为0。 如要将a的最低位变为0,则可使用下述表达式实现。 A=a&15.左移()操作规则将一个数的各二进制位全部左移若干位,左移后,右边的这些位用0填补,左边移出的位舍弃不用。 例a=a2;若a=15,即二进制00001111,左移两位后变为00111100。 若再向左移4位,则变为11000000。 将一个数左移1位,相当于该数乘以2,左移2位相当于该数乘以4。 如上例中a=15,则a=a)操作规则将一个数的各二进制位全部右移若干位,右移后,右边移出的位被舍弃,而左边的填补分两种情况 (1)该数为无符号数,则高位补0。 例a=a2;右a=15,二进制为00001111,右移两位后为00000011。 (2)该数为有符号数,若原来的符号位为0(最高位为0,即正数)则高位补0,若原来的符号位为1(即表示该数为负数),高位补0或1,取决于所使用的计算机系统。 有的系统补0,称为逻辑右移,有的系统补1,称为算术右移。 例a:1000110110000111a1:0100011011000011(逻辑右移)a1:1100011011000011(算术右移)2.6.6其他运算符逗号运算符逗号运算符为“,“。 逗号表达式是用逗号运算符把两个表达式组合成的一个表达式。 其一般形式为表达式1,表达式2说明 (1)逗号表达式的执行过程是先求表达式1的值,再求表达式2的值,表达式2的值就是整个逗号表达式的值。 (2)一个逗号表达式可以与另一个表达式构成一个新逗号表达式。 (3)逗号运算符是所有运算符中级别最低的。 (4)逗号表达式常用于for语句中,它可以表达多个初值或多个步长增量。 逗号表达式的一般形式可以扩展为表达式1,表达式2,表达式3,表达式N表达式n的值是整个表达式的值。 条件运算符条件运算符是一个三目运算符,把三表达式组合成一个表达式。 其一般形式为表达式1?表达式2表达式3;功能计算表达式1的值,如果该值为真(非0值),则计算表达式2的值,并且该值即为条件表达式值。 若表达式1的值为假 (0),则计算表达式3的值,并将该值作为条件表达式的值。 说明 (1)条件运算符优先级别高于赋值运算符,低于关系运算符和算术运算符。 (2)条件运算符结合方向是“自右至左”。 (3)表达式1与表达式2、表达式3类型可以不同。 3.Sizeof运算符sizeof运算符是测试变量、表达式或类型名所占用的字节数。 有两种用法。 sizeof表达式测试表达式所占用的字节数。 sizeof表达式测试类型名所占用的字节数。 例如sizeof(float)其值为4。 sizeof运算符可以出现的表达式中。 main()int a=4;fload b=5.6;printf(“%d,%dn”,sizeof(a),sizeof(b);输出结果2,42.7数据类型转换在内存中,字符是以系统中所使用字符的编码值形式存储的,C语言允许字符型数据和整型数据之间通用一个字符型数据,即可以以字符形式输出,也可以以整型形式输出,同时,字符型数据可能赋给整型变量,整型数据也可以赋给字符型变量,只是当整型变量数据的大小超过字符型变量的表示范围时,需要截取相应的有效位。 除字符型数据和整型数据之间可以通用之外,不同类型的数据在进行混合运算时,往往需要进行强制类型转换。 因此类型转换有两种方式一种是自动类型转换;另一种是强制类型转换。 2.7.1自动类型转换在进行计算时,首先将不同类型的数据转换成同一类型,然后进行计算不同类型数值转换规则Double floatLong UnsignedInt char,short2.7.2强制类型转化强制类型转化的一般形式如下所示(强制的类型名)变量例如(int)(a+b),将a+b的结果强制转换成int型;(float)a/b,将a的结果强制转换成float型后,再进行计算。 注意经强制类型转换后,得到的是一个所需类型的中间变量,原来变量的类型并没有发生任何变化。 2.8类型定义C语言允许使用typedef语句定义新类型名,以取代已有类型名,如typedef intcounter;作用是定义counter等价于基本数据类型名int,以后就可以利用counter来定义int型变量了。 如counter I,n;等价于int I,n;类型定义的优点是能够提高程序可读性。 注意 (1)typedef语句不能创造新的类型,只能为已有的类型增加一个类型名。 (2)typedef语句只能用来定义类型名,而不能用来定义变量。 例如分析下例程序。 #include“stdio.h”typeref int integer;typedef floatreal;Main()integer i=5;real f;f=real(i)/10;printf(%f”,f);第四讲数据的输入输出3.1数据的输入3.2数据的输出3.3应用举例3.1数据的输入3.1.1字符输入函数getchar格式getchar()功能从键盘上接收输入的一个字符。 例如char c;c=getchar()其中c是字符型或整型变量。 例1从键盘输入一个字符,并将其存入字符型变量c中。 #include”stdio.h”Main()char c;C=getchar();3.1.2格式输入函数scanf格式scanf(格式控制,地址表);功能用来输入任何类型数据,可同时输入多个类型或不同类型数据。 格式控制:是由双括号括起来字符串,主要是由“%”和格式符组成2.地址表Scanf函数中的“地址表”部分是由变量的地址组成的,如果有多个变量,则各变量之间用逗号隔开。 地址运算符为“&“,如变量a的地址可以写为&a。 例3.2用scanf函数,从键盘上输入一个整型数、一个浮点数和一个字符,分别存入变量i、f和c中。 #include”stdio.h”main()int i;float f;char c;scanf(“%d,%f,%c”,&I,&f,&c);printf(“i=%d,f=%f,c=%c”,i,f,c);说明 (1)在scanf函数“格式控制”部分中的每个格式说明符都必须在“地址表列”中有一个变量与之对应格式说明符必须要与相应变量的类型一致。 (2)当格式说明符之间没有任何字符时,在输入数据时,两个数据之间要使用“空格”、“Tab”或“回车”键做间隔;如果格式说明符之间包含其它字符,则输入数据时,应输入与这些字符相同的字符做间隔,如Scanf(“%d,%f,%c”,&i,&f,&c);在输入数据时,应采用如下形式20,7.8,a (3)可以在格式说明符的前面指定输入数据所占的列数,系统将自动按此列数来截取所需的数据,如scanf(%2d%3d”,&x,&y);当用户输入78985时,系统将自动地将78赋给变量x,将985赋给变量y。 这种方式也可用于字符型数据的输入。 (4)应该特别注意的是,scanf函数中的“地址表列”部分应当中变量的地址,而不是变量名。 3.2数据的输出3.2.1字符输出函数putchar数据的输出一般是以终端显示器(屏幕)为处理对象。 格式向终端输出一个字符。 说明变量c可以是字符型,也可以是整型。 例3.3从键盘输入一个字符,在屏幕上显示出来。 #include”stdio.h”main()char c;c=getchar();/*从键盘输入一个字符*/putchar(c);/*在屏幕上显示一个字符*/putchar函数也可以输出一些特殊字符(控制字符),如putchar(n)作用是输出一个“换行”字符。 3.2.2格式控制函数printf格式printf(格式控制,输出表);功能输出任何类型的数据。 1.格式控制“格式控制”部分与scanf函数的相似,也是由双引号括起来的字符串,主要包括格式说明和需要原样输出的字符。 “格式说明”由“%”和格式符组成,如%c和%f等,作用是将要输出的数据转换为指定格式后输出。 printf函数中使用的格式字符见表3.2。 表3.2printf函数格式字符注意格式字符必须小写输出表printf函数中的“输出表”部分由表达式组成,这些表达式应与“格式控制”字符串中的格式说明符的类型一一对应,若“输出表”中有多个表达式,则每个表达式之间应由逗号隔开。 例3.4从键盘输入一个整数和一个浮点数,并在屏幕上显示出来。 #include”stdio.h”main()int i;float f;scanf(“%d,%f”,&i,&f);printf(“i=%d,f=%f”,I,f);执行此程序,按格式输入数据50,8,9i=50,f=8.900000说明 (1)printf函数中的“格式控制”字符串中的每一个格式说明符,都必须与“输出表”中的某一个变量相对应,如上述程序中的“%”与i对应;“%f”与f对应,而且格式说明符应当与其所对应变量的类型一致。 若要显示“%”字符,则应在“格式控制”字符串中连写两个“%”,如Printf(“x=%d%”,100/4);将显示x=25%。 (2)对格式说明符c、d、s和f等,可以指定输出字段的宽度。 %md:m为指定的输出字段的宽度。 如果数据的位数大于m,则按实际位数输出,否则输出时向右对齐,左端补以“空格”符。 %mc:m为指定的输出字段的宽度。 若m大于一个字符的宽度,则输出时向右对齐,左端补以“空格”符。 %mc:m为输出时字符串所占的列数。 如果字符串的长度(字符个数)大于m,则按字符串的本身长度输出,否则,输出时字符串向右对齐,左端补以“空格”符。 %-ms:mr的意义同上。 如果字符串的长度小于m,则输出时字符串向左对齐,右端补以“空格”符。 %m.nf:m为浮点数据所占的总列数(包括小数点),n为小数点后面的位数。 如果数据的长度小于m,则输出时向右对齐,左端补以“空格”符。 %-m.nf:m、n的意义同上。 如果数据的长度小于m,则输出向左对齐,右端补以“空格”符。 (3)除了格式说明符及其输出字段的宽度外,在“格式控制”字符中的其他字符,将按原样输出。 (4)在显示数据时,可以不指定输出字段的宽度,而直接利用系统隐含的输出宽度。 3.3应用举例例3.5分析下列程序,观察运行结果。 main()char ch=a;int a=98;unsigned b=1000;long c=123456789;float x=3.14;double y=1.2345678;pPrintf(“ (1)a=%d,a=%c,ch=%d,ch=%cn”,a,a,ch,ch);printf(“ (2)b=%un”,b);printf(“ (3)c=%ldn”,c);printf(“ (4)x=%f,y=%fn”,x,y);printf(“ (5)x=%e,y=%en”,x,y);printf(“ (6)y=%e10.2fn”,y);运行的结果为 (1)a=98,a=b,ch=97,ch=a b=1000C=123456789X=3.140000,y=1.234567x=3.14000e+00,y=1.23456e+00Y=1.23例3.6从键盘上输入一个大写字母,把它转换面小写字母,然后显示出来。 #include”stdio.h”main()char x1,x2;printf(“x1=?n”);scanf(“%c”,&x1);x2=x1+32;printf(“%c,%cn”,x1,x2);运行结果x1=?A A,a例3.7分别输入一个浮点数,一个整数,一个字符型数。 #include“stdio.h”main()float f;int I;char c;scanf(“%f%d%c”,&f,&I,&c);printf(“%f%d%c”,f,I,c);例3.8从键盘输入一个字符并鸣笛输出。 #include“stdio.h”Main()Char c;C=getchar();Putchar(007);Putchar(c);第五讲条件语句4.1语句和复合语句4.2if语句4.3switch语句4.4应用举例第四章条件语句结构化程序的三种基本结构顺序结构、选择分支结构和循环结构。 顺序结构是指每个程序都是按照语句的书写顺序依次执行的。 选择分支结构是指通过对特定条件的判断,来选择一个分支执行。 循环结构循环是指在给定条件下,重复执行某段程序,直到不满足条件为止。 4.1语句和复合语句表达式语句一个表达式的后面跟随一个分号构成的语句。 如x=x+a;说明分号“;”是语句的终结符,而不是语句的分隔符即分号是语句的最末组成部分。 复合语句由左右花括号括起来的语句;形式说明部分;语句部分一个复合语句在语法上等同于一个语句,在程序中,凡是单个语句能够出现的地方,都可以出现复合语句。 一个复合语句又可以出现在其他复合语句内部。 在复合语句的后面必须有一个分号,做为该语句的终结符。 4.2if语句If语句是条件选择语句,它是通过对给定条件的判断,来决定所要执行的操作。 4.2.1if语句的三种形式If语句的第一种形式格式if(表达式)语句功能首先计算表达式的值,若表达式的值为“真”(为非0),则执行语句,若表达式的值为“假”(为0),不执行语句。 例如If(xy)printf(“%d”,x);2.If语句的第二种形式格式if(表达式)语句1else语句2功能首先计算表达式的值,若表达式的值为“真”(为非0)。 则执行语句1,若表达式的值为“假”(为0),则执行语句2。 例如if(xy)printf(“%d”,x);else printf(“%d”,y);3.If语句的第三种形式格式if(表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3else if(表达式n)语句nelse语句n+1功能首先计算表达式的值,若第n个表达式的值为“真”(为非0),则执行语句n,若所有的表达式的值都为“假”(为0),则执行语句n+1。 其流程图如下例如if(score89)grade=5;else if(score74)grade=4;else if(score59)grade=3;else grade=2;说明 (1)if语句中的表达式可以是C语言的合法表达式。 (2)第二种、第三种格式的if语句中,在每个else前面有一个分号,整个语句结束处也有一个分号。 这是由于分号是C语句中不可缺少的部分,这个分号是if语句中的内嵌语句所要求的。 (3)在if和else后面可以只含有一个内嵌的操作语句,也可以含有多个操作语句,此时应用花括号“将几个语句括起来,构成一个复合语句。 例4.1将两个数中较大者赋给s。 main()int a,b,s;a=10;b=20;if(ab)s=a;else s=b;printf(“s=%dn”,s);执行结果s=20例4.2比较两个数,按由大到小输出。 main()int a,b,x,y;a=10;b=20;if(ab)x=a;y=b;elsex=b;y=a;printf(“x=%d,y=%dn”,x,y);执行结果x=20,y=104.2.2if语句的嵌套在if语句中又包含一个或多个if语句,称为if语句的嵌套。 一般形式如下if()if()语句1else语句2else if()语句3else语句4if()if()语句1else if()语句2else语句3说明 (1)if与else的配对关系,从最内层开始,else总是与离它最近的未曾配对的if配对。 (2)if与else的个数最好相同,从内层到外层一一对应,以避免出错。 (3)如果if与else的个数不相同,可以用花括号来确定配对关系。 例如If()if()语句1else语句2这时限定了内嵌if语句的范围,因此else与第一个if配对。 例4.3有一函数编一程序,输入一个x值,输出y值。 main()int x,y;scanf(“%d”,&x);if(xb?c*b:c/b;因为ab为假,则x=c/b=2。 例4.4输入两个数,并将其中较大者显示出来。 #include“stdio.h”main()int a,b,max;scanf(“%d%d”,&a,&b);max=(ab)?a:b;printf(“max=%d”,max);条件运算符也可以嵌套使用,如Grade=(score=90)?A:(score=90时,将字符A赋给变量grade;当score=0);root=sqrt(n);printf(“sqrt(%d)=%f”,n,root);elseroot=sqrt(abs(n);printf(“sqrt(%d)=%fi”,n,root);例4.7求两个数中最小值。 #include“stdio.h”main()int x,y,min;printf(“enter twointegers:n”);acanf(“%d,%d,&x,&y);min=x #include“stdio.h”main()int x=10,y=5,z;char op;scanf(“%c”,&op);switch(op)case+:z=x+y;braek;case-:z=x-y;braek;case*:z=x*y;braek;case/:z=x/y;braek;default:printf(“Operater Error!”);printf(%d%c%d=%d”,x,op,y,z);例4.9输入三个数,按由小到大的顺序输出。 #include“stdio.h”main()int a,b,c,temp;printf(“enter threeintegers:t”);scanf(“%d,%d,%d”,&a,&b.&c);if(ac)temp=a;a=b;b=temp;If(ac)temp=a;a=c;c=temp;if(bc)temp=b;b=c;c=temp;printf(“%d%d,%d”,a,b,c);第六讲循环控制5.1goto语句5.2while循环语句5.3do-while循环语句5.4for循环语句5.2while循环语句用while语句来实现“当型”循环结构。 格式while(表达式)语句/*循环体部分*/功能当表达式的值为非0时,执行while语句中的循环体。 结构流程图如图所示。 说明 (1)循环体如果包含一个以上语句,应该用花括弧括起来,以复合语句的形式出现,否则while语句范围只到while后面第一个分号处。 (2)在循环体中应有使循环趋向于结束的语句,即设置修改循环条件的语句。 (3)while语句的特点是先判断表达式的值,然后执行循环体中的语句,如果表达式的值一开始为假(值为0),退出循环,并转入下一语句去执行。 例5.2求s=1+2+3+100的值。 结构流程图如右图。 main()int i,s=0;i=1;While(i=100);s=s+1;i+;printf(“s=%d”,s);运行结果s=50505.3do-while循环语句do-while循环语句,用来实现“直到型”循环结构。 格式dowhile(表达式)功能先执行语句,后判断表达
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年度安全生产培训课件
- 年底安全培训新闻稿课件
- 年后会务安全培训课件
- 天津考公2025真题
- 汽车充电桩建设合同6篇
- 年中安全教育培训课件
- 平面展开图的课件
- FAK-IN-28-生命科学试剂-MCE
- 菏泽市牡丹区乡村公益性岗位招聘笔试真题2024
- 2025年抽水蓄能行业技术创新与产业协同发展研究报告
- 俄罗斯气候课件
- 乡村景观设计讲解
- 2026年高考语文复习:文言文背诵篇目理解性默写练习题汇编(含答案)
- 尿管相关血流感染防控与管理
- 小学三年级英语评价方案
- 2025年秋期人教版五年级上册数学全册核心素养教案(教学反思有内容+二次备课版)
- 固废再生资源回收中心项目建设方案
- 机关单位会计试题及答案
- 重症护理超声专家共识
- AI 智能体运行安全测试标准(英文)
- 韩国历史文化课件
评论
0/150
提交评论