《ch21C语言基础语法》由会员分享,可在线阅读,更多相关《ch21C语言基础语法(52页珍藏版)》请在金锄头文库上搜索。
1、回顾上次课重要知识点:重要知识点:n1、C语言的特点语言的特点n2、C语句结构特点语句结构特点n3、C程序的上机步骤程序的上机步骤本章复习题1.一个一个C程序的执行是从(程序的执行是从( ) A.本程序的本程序的main函数开始,到函数开始,到main函数结束函数结束 B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C.本程序的本程序的main函数开始,到本程序文件的最后一个函数结束函数开始,到本程序文件的最后一个函数结束 D.本程序文件的第一个函数开始,到本程序本程序文件的第一个函数开始,到本程序main函数结束函数结
2、束A 2.以下叙述正确的是()以下叙述正确的是() A.在在C程序中,程序中,main函数必须位于程序的最前面函数必须位于程序的最前面 B.C程序的每行中只能写一条语句程序的每行中只能写一条语句 C.C语言本身没有输入输出语句语言本身没有输入输出语句 D.在对一个在对一个C程序进行编译的过程中,可发现注释中的拼写错误程序进行编译的过程中,可发现注释中的拼写错误c3.以下叙述不正确的是(以下叙述不正确的是( ) A.一个一个C源程序可由一个或多个函数组成源程序可由一个或多个函数组成 B.一个一个C源程序必须包含一个源程序必须包含一个main函数函数 C.C程序的基本组成单位是函数程序的基本组成单
3、位是函数 D.在在C程序中,注释说明只能位于一条语句的后面程序中,注释说明只能位于一条语句的后面D4.C语言规定:在一个源程序中,语言规定:在一个源程序中,main函数的位置(函数的位置( ) A.必须在最开始必须在最开始 B.必须在系统调用的库函数的后面必须在系统调用的库函数的后面 C.可以任意可以任意 D.必须在最后必须在最后C5.一个一个C语言程序是由(语言程序是由( ) A.一个主程序和若干子程序组成一个主程序和若干子程序组成 B.函数组成函数组成 C.若干过程组成若干过程组成 D.若干子程序组成若干子程序组成B6.C源程序的基本单位是(源程序的基本单位是( )7.一个一个C源程序中至
4、少应包括一个(源程序中至少应包括一个( )函数函数主函数主函数编程题n 编写一个编写一个C程序,输入程序,输入a,b,c3个值,输出个值,输出其中最大者。其中最大者。#includevoid main()int a,b,c,max;printf(please input a,b,c:n);scanf(%d,%d,%d,&a,&b,&c);max=a;If(maxb) max=b;if(maxc) max=c;printf(the largest number is %d,max);参考代码:参考代码:第2章 数据类型和表达式2.1基本数据类型2.2常量与变量2.3整型数据2.4实型数据2.5字
5、符型数据2.6数据类型转换2.7算术运算符和算术表达式2.8赋值运算符和赋值表达式2.9逗号运算符和逗号表达式本章学习目标理解变量和常量的含义熟悉基本数据类型:int、char、float和double使用算术运算符理解类型转换熟练掌握自增和自减运算熟练掌握复合赋值表达式2.1 基本数据类型数据属于不同类别AfricaThe quick brown foxTRUE数据 非数值数值整型非整型9002.129999/12/20032.175123Jackie Chanchar数据类型非数值数值整型intshort intlong intdoublefloat非整型C C数数据据类类型型指针类型指针
6、类型空类型空类型void定义类型定义类型typedef构造类型构造类型枚举类型枚举类型enum数组数组结构体结构体struct共用体共用体union基本类型基本类型字符类型字符类型char整整 型型实型实型单精度型单精度型float双精度型双精度型double短整型短整型short长整型长整型long整型整型int数据类型决定:数据类型决定:1. 1. 数据占内存字节数数据占内存字节数2. 2. 数据取值范围数据取值范围3. 3. 其上可进行的操作其上可进行的操作n常量字符串常量:字符串常量:”Hello”、”Good Morning!”整型:整型: 12、0、-3实型:实型: 4.6、-1.
7、23字符型:字符型:a、d在程序运行过程中,其值在程序运行过程中,其值不能改变不能改变的量称为常量的量称为常量不不同同的的数数据据类类型型2.2 常量与变量p符号常量:标识符代表常量定义格式: #define 说明:符号常量一般使用大写英文字母表示,以区别一般用于小写字母表示的变量。 符号常量定义举例符号常量定义举例#define #define PIPI 3.14159263.1415926#define #define STARSTAR * *p符号常量使用(例2.1)#define MONEY 500Void main() int year,month,total; year=4;mon
8、th=9; total=year*month* MONEY ; printf(total=%d,total);符号常量的使用能给程序员带来哪些好处?说明:说明:说明:说明: 程序中用程序中用#define#define命令行定义命令行定义MONEY代表常代表常量量30,30,此后凡在本文件中出现的此后凡在本文件中出现的MONEY都代表都代表30,30,可可以和常量一样进行运算。以和常量一样进行运算。说明:说明:说明:说明:如再用赋值语句给如再用赋值语句给MONEY赋值是错赋值是错的。的。MONEY =400;=400;/* /* 错误,不能给符号错误,不能给符号常量赋值常量赋值* */ /n注
9、意:注意:nC语言中常量习惯用大写字母!语言中常量习惯用大写字母!在程序运行过程中,其值可以被改变的量称为变量。变量n变量定义的一般格式变量定义的一般格式数据类型数据类型 变量变量1,变量,变量2,变量,变量n;决定分配字节数和数的表示范围变量定义举例: int a,b,c; float data;变量的变量的3个要素:个要素: (1)变量名。每个变量都必须有一个名称。)变量名。每个变量都必须有一个名称。 (2)变变量量值值。在在程程序序运运行行过过程程中中,变变量量值值存存储储在在内内存存中。在程序中,通过变量名来引用变量的值。中。在程序中,通过变量名来引用变量的值。 (3)变量的类型)变量
10、的类型 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1二进制数值二进制数值不同编译器所占不同编译器所占的位置不同的位置不同例如:例如: int a=23; 变量的类型变量的类型 int 变量名字:变量名字:a 变量的值:变量的值:23 在内存中存储单元占在内存中存储单元占16位位变量命名变量命名在 C 语言中,变量命名需要遵循一定的规则n变量的命名规则:变量的命名规则:p变量名可以由字母、数字和变量名可以由字母、数字和 _(下划线)组合而成(下划线)组合而成p变量名不能包含除变量名不能包含除 _ 以外的任何特殊字符,如:以外的任何特殊字符,如:%、# 、逗号、逗号、空格等空格等
11、p变量名必须以字母或变量名必须以字母或 _(下划线)开头(下划线)开头p变量名不能包含空白字符(换行符、空格和制表符称为空白字符)变量名不能包含空白字符(换行符、空格和制表符称为空白字符)pC 语言中的某些词(例如语言中的某些词(例如 int 和和 float 等)称为等)称为保留字保留字,具有特殊,具有特殊意义,不能用作变量名意义,不能用作变量名pC 语言区分大小写,因此变量语言区分大小写,因此变量 price 与变量与变量 PRICE 是两个不同是两个不同的变量的变量变量命名变量命名有效名称有效名称principalcost_pricemarks_3lastnamecity无效名称无效名称
12、123ratecurrency$discount%zip coden变量的命名规则:变量的命名规则:p变量名可以由字母、数字和变量名可以由字母、数字和 _(下划线)组合而成(下划线)组合而成p变量名不能包含除变量名不能包含除 _ 以外的任何特殊字符,如:以外的任何特殊字符,如:%、# 、逗号、逗号、空格等空格等p变量名必须以字母或变量名必须以字母或 _(下划线)开头(下划线)开头p变量名不能包含空白字符(换行符、空格和制表符称为空白字符)变量名不能包含空白字符(换行符、空格和制表符称为空白字符)pC 语言中的某些词(例如语言中的某些词(例如 int 和和 float 等)称为等)称为保留字保留
13、字,具有特殊,具有特殊意义,不能用作变量名意义,不能用作变量名pC 语言区分大小写,因此变量语言区分大小写,因此变量 price 与变量与变量 PRICE 是两个不同是两个不同的变量的变量专业提醒:标识符命名通常应选择能表示数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。通过变量名就知道变量值的含义,做到“见名知意”。 例如: name 姓名 sex 性别 age 年龄 salary 工资 讨论:判断下列标识符号合法性讨论:判断下列标识符号合法性sumSumM.D.JohndayDate3days student_name #33lotus_1_2_3charababove $1
14、23 _toDayM.D.John3days#33char$123abp变量的使用:变量的使用: “先定义,后使用先定义,后使用”例1 int student; stadent=19; /Undefined symbol stadent in function main 例2 int a,b; /为为a,b各分配两个字节,按整数方式存储数据各分配两个字节,按整数方式存储数据例3 float a,b,c; c=a%b; /illegal use of floating point in function main (1 1)凡未被事先定义的,系统不把它认作变量名,这就能)凡未被事先定义的,系统不
15、把它认作变量名,这就能保证程序中变量名使用得正确。保证程序中变量名使用得正确。(2)每一个变量被指定为一个确定的类型,在编译时就能)每一个变量被指定为一个确定的类型,在编译时就能为其分配相应的存储单元。为其分配相应的存储单元。(3)指定每一个变量属于一种类型,这就便于在编译时据)指定每一个变量属于一种类型,这就便于在编译时据此检查在程序中要求对该变量进行的运算是否合法。此检查在程序中要求对该变量进行的运算是否合法。例例3.3 3.3 输出变量的数值。输出变量的数值。 void main() int x, y; x=5; y=3; printf(“ %d- %dn”, x, y); x=1; y
16、=2; printf(“ %d- %dn”, x, y); x、y是整型变量是整型变量每个变量分配每个变量分配2个字个字节存储单元节存储单元将数值将数值5、3分别存放到分别存放到x、y变量的变量的存储单元存储单元x、y变量的值变量的值重新赋值重新赋值运行结果运行结果: 5- 3 1- 2思考下列代码的运行结果?思考下列代码的运行结果?3.3.1整型常量的表示方法整型常量的表示方法 整型常量即整数。在语言中,整常数可用整型常量即整数。在语言中,整常数可用3 3种形式表示种形式表示, ,并且各种数制均可有正(并且各种数制均可有正(+ +)负()负(- -)之分,正数的)之分,正数的“+ +”可省可
17、省略:略:形式表示方式举例十进制整数由数字09表示123,-456,0123,-456,0八进制整数由数字0开头,后跟数字07表示0123,0110123,011十六进制整数由0x开头,后跟09,af,AF表示0x123,0Xff0x123,0Xff2.3 整型数据整型常量的输出实例整型常量的输出实例#includemain() printf(“0x80 -%d n, 0x80); printf(“0200 -%d n,0200); printf(128 - %d n,128); printf(128 - %o n,128);27真题再现(2009年年9月月)以下选项中可作为以下选项中可作为C
18、语言合法整数的是(语言合法整数的是( )A.10110B B.0386C.0XffaD.x2a2C28整型变量的分类整型变量的分类名称全称类型说明符缩写类型说明符位数 范围整型整型intint16-32768 至 +32767无符号整型无符号整型unsigned intunsigned160 至 65,535短整型短整型short intshort16-32768 至 +32767无符号短整型无符号短整型unsigned short intunsigned short160 至 65,535长长整型整型long intlong32-2,147,483,648 至 2,147,483,647无符
19、号无符号长长整型整型unsigned long intunsigned long320 至 4,294,967,29529整型变量的定义整型变量的定义q声明声明:int page_number;long int population;unsigned int age;q可按如下方式赋值:可按如下方式赋值:int page_number; page_number0;int max_marks = 100;在同一语句中可以声明多个类型相同的变量:int page_number, copies, paper_width;30例例3.2 整型变量的定义与使用整型变量的定义与使用#include voi
20、d main() int a,b,c,d; unsigned u; a=12;b=-24;u=10;c=a+u;d=b+u; printf(a+u=%d,b+u=%dn,c,d); 运行结果:运行结果:, 说明说明说明说明: : : :可以看到不同种类的整型数据可以进行可以看到不同种类的整型数据可以进行算术运算算术运算 31思考下列代码的执行结果?思考下列代码的执行结果?#include void main()short int a,b;a=32767;b=a+1;printf(%d,%dn,a,b);运行结果:运行结果:32767,-3276832767,-32768说明:说明:说明:说明:
21、一个整型变量只能容纳一个整型变量只能容纳-32768-327683276732767范范围内的数,无法表示大于围内的数,无法表示大于3276732767或小于或小于-32768-32768的数。遇此情况就发生的数。遇此情况就发生“溢出溢出”。演示演示32真题再现 在在C语言中表示整型变量时,表示无符号短整语言中表示整型变量时,表示无符号短整型的是(型的是( )。)。A.Unsigned longB. Unsigned shortC. Unsigned int D. shortB332.4.1浮点型常量的表示方法浮点型常量的表示方法十进制数形式实型常量0.123, .123, 123.0, 0.
22、0, 123.指数形式实型常量12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5 , .e32.4 2.4 实型数据实型数据 表表示示形形式式指数形式:指数形式: EE(e e) (e e或或E E之前必须有数字;指数为整数)之前必须有数字;指数为整数)十进制小数形式:由数字和十进制小数形式:由数字和小数点小数点组成组成真题再现(2004年年4月)以下符合月)以下符合C语言语法的实型常语言语法的实型常量是(量是( )A.1.2E0.5B.3.14159EC.5E-3D.E15C(2)(2)实型数据的分类实型数据的分类 类型类型比特数比特数有效数字有效数字数值范围数值范
23、围float3267-10381038double641516-1030810308long double1281819-104932104932单精度浮点型 float 在 C 语言中用于存储单精度浮点数float32 位-10+38 至 10+38 ,7位有效数字n声明:float selling_price;n初始化:float selling_price = 11.3;selling_price = 65.90;双精度浮点型内存内存floatdouble213.5671435568967 64位位取值范围:-10+308 至 1030816 位有效数字n声明:pdouble press
24、ure_level; n初始化:ppressure_level = 213.5671435568967; pdouble dvalue = 35.4; #include void main() double a; float b;a=123456789.1;b=a+1;printf(a=%fn,a);printf(b=%fn,b); 说明:说明:说明:说明:一个浮点型变量只能保证的有效数字是一个浮点型变量只能保证的有效数字是7 7位有效数字,位有效数字,后面的数字是无意义的,并不准确地表示该数。应当避后面的数字是无意义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减,
25、否免将一个很大的数和一个很小的数直接相加或相减,否则就会则就会“丢失丢失”小的数小的数(3)(3)实型数据的误差实型数据的误差 演示演示39在线保险单在线保险单年龄:_保险总额:_性别:_2398340 M int/floatchar2.5 字符型数据转义字符:有些以转义字符:有些以“”开头的特殊字符称为转义字符开头的特殊字符称为转义字符。转义字符及其含义:转义字符含义nvradddtbf“xhh转义字符含义换行垂直制表回车响铃单引号3位位8进制数代表的字符进制数代表的字符水平制表退格换页换页反斜线反斜线双引号双引号2位位16进制数代表的字符进制数代表的字符如 101 -A 012 -n 37
26、6 - x61 -a 60 -0 483 -( )例 转义字符举例main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C);运行结果:(屏幕显示)A B CIsay:”How are you?”C ProgramTurbo Ca a, ,A A, ,1 1,? ?, ,$ $abcabc、“a a”2.5.1 字符常量字符常量用用单引号单引号包含的包含的一个字符一个字符是字符型常量是字符型常量,只能包含一个字符只能包含一个字符.真题再现下列字符中不是下列字符中不是C语言
27、转义字符的是(语言转义字符的是( )A. n B. t C. 065 D.089Dn在下列字符常量中,表示回车的是(在下列字符常量中,表示回车的是( )nA. t B.b C.n D.rDq字符变量的定义形式如下:char c1,c2q在程序中可以用2种方法给字符变量赋值,1是直接将字符赋给变量,2是将字符的ASCII码赋给变量: char c1a; char c197;q一个字符变量在内存中占1个字节。 q字符变量用来存放字符常量,注意只能放1个字符。2.5.3 字符变量字符变量所以: 根据需要,一个字符数据根据需要,一个字符数据既可以以字符形式输出,既可以以字符形式输出,也可以以整数形式输
28、出。也可以以整数形式输出。2.5.3 字符数据在内存的存储形式字符数据在内存的存储形式 一个字符常量存放到一个字符变量中,实际上并不是把一个字符常量存放到一个字符变量中,实际上并不是把该字符放到内存中去,而是将该字符的该字符放到内存中去,而是将该字符的ASCII码码放到存储单放到存储单元中。元中。45qq说明:说明:说明:说明:在第和第在第和第4 4行中,将整数行中,将整数9797和和9898分别赋给分别赋给c1c1和和c2c2,它的作用相当于以下两个赋值语句:,它的作用相当于以下两个赋值语句:c1c1;c2;c2; 因为因为a a和和b b的的ASCIIASCII码为码为9797和和9898
29、例2.6 向字符变量赋以整数。 #include void main() char c1,c2; c1=97; c2=98; printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); q运行结果: 97 9846思考:下列程序实现了什么功能?思考:下列程序实现了什么功能? #include #include void main()void main() char c1,c2 char c1,c2; c1=c1=a a; ; c2= c2=b b; ; c1=c1-32; c1=c1-32; c2=c2-32; c2=c2-32; printfprintf(
30、 (“c c cc,c1,c2c1,c2);); qq说明:说明:程序的作用是将两个小写字母程序的作用是将两个小写字母a a和和b b转换成大写字母转换成大写字母A A和和B B。每一个小写字母比它相应的大写字母的。每一个小写字母比它相应的大写字母的ASCIIASCII码大码大3232。语言允许字符数据与整数直接进行算术运算。语言允许字符数据与整数直接进行算术运算。 q运行结果运行结果: : 47真题再现若有定义语句:若有定义语句:char x=97;则(则( )。)。A.x的值是的值是97B. 该定义是错误的该定义是错误的C. x的值是的值是aD. 无法判断无法判断x的值的值C48q合法的字
31、符串常量:“How do you do.”, “CHINA”, “a” , “$123.45”q可以输出一个字符串,如printf(“How do you do.”);2.5.2 字符串常量字符串常量字符串常量是一对字符串常量是一对双撇号双撇号括起来的字符序列括起来的字符序列。49字符与字符串的区分字符与字符串的区分 结论:结论:不能把一个字符串常量赋给一个字符变量不能把一个字符串常量赋给一个字符变量。C语言中语言中不存在字符串变量!不存在字符串变量! 是字符常量,”是字符串常量 如:假设被指定为字符变量 :char c c=a;”a”;c”CHINA”;50 a 和和“a”不同的主要原因不同的主要原因“a”,他不是一个人!有东西附体!规定:在每一个字符串常量的结尾加一个 “字符串结束标志”,以便系统据此判断字符串是否结束。规定以字符作为字符串结束标志。a a 0例 a“a”51字符常量字符常量 与与字符串常量字符串常量 的区别:的区别:定界符不同:定界符不同: 字符常量使用单引号字符常量使用单引号 , 而字符串常量使用双引号而字符串常量使用双引号 ;存储要求不同:存储要求不同: 字符常量存储的是一个字符,字符常量存储的是一个字符,而而字字符符串串常常量量,除除了了要要存存储储有有效效的的字字符符外外,还还要要存存储储一一个个结结束束标标志志 0 。52