第2章C语言基础知识
- 格式:doc
- 大小:444.51 KB
- 文档页数:18
第2章 C 语言的基本数据类型本章要点了解C 语言的数据类型,掌握基本数据类型的应用及其相互转换规则,理解变量和常量的概念,并掌握其定义及引用方法。
本章的难点是数据在内存中的存储形式。
第一节 C 语言的数据类型由于信息的表现形式多种多样,处理的方法也不相同,所以,我们必须考虑用不同形式的数据来表示不同的信息。
例如:一个班级的人数要用整数来表示;班级学生的平均成绩要用小数表示;学生的姓名、性别要用字符来表示;一个班级学生某一门课程的成绩要用一组不同的数值来表示等。
计算机语言中的数据类型就是为了能够高效处理各种不同的数据而引进的一个概念,是指数据的内在表现形式。
不同的数据类型具有不同的取值范围和不同的操作。
C 语言提供的数据类型如图2-1所示。
在程序中使用的所有数据都必须指定它的数据类型,C 语言的数据类型由基本类型和非基本类型组成。
其中,基本数据类型是其他数据类型的基础。
C 语言中的基本数据类型包括整型、实型(浮点型)、字符型,其中实型又包括单精度和双精度两种类型。
本章主要讨论这4种基本类型。
整型、单精度型、双精度型和字符型数据定义的关键字分别为:int 、float 、double 和char 。
除了这四个关键字外,C 语言中还提供了一些数据类型的修饰符,如:long 、short 、signed 和unsigned 。
它们的作用是与基本类型的定义关键字结合起来使用,以对基本类型进行扩充,使得在程序编写的过程中可以灵活调整数值的范围以及所占用的存储空间。
结合修饰符的应用,基本数据类型可进一步划分,如表2-1所示。
表2-1 各种数据类型及其说明语言的数据类型图)空类型(指针类型)共用体类型()结构体类型(数组类型构造类型)枚举类型()字符型()双精度型()单精度型(实型(浮点型))整型(基本类型C 12void union structenum char double float int -⎪⎪⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎧⎪⎩⎪⎨⎧⎪⎪⎩⎪⎪⎨⎧⎩⎨⎧说明:(1)表中方括号内的部分是可以省略不写的。
C语言各章重点知识总结第一章C语言概述1、C程序的组成和形式的基本特点(P6-7)(1)C程序是由函数构成的,一个C源程序至少且仅包含一个main函数,也可以包含一个main函数和若干个其他函数。
(2)一个函数由两部分组成①函数的首部:即函数的第一行,包括函数名、函数类型、函数属性、函数参数名、参数类型例:int max (int x,int y)一个函数名后面必须跟一对圆括号,括号内写函数的参数名及其类型。
函数可以没有参数,如main()。
②函数体:即函数首部下面的花括号内的部分。
如果一个函数内有多个花括号,则最外层的一对花括号为函数体的范围。
函数体一般包括:声明部分、执行部分2、运行C程序的步骤及每个步骤生成文件的类型及特点(P7)第二章算法1、算法的定义一个程序应包括①数据结构即对数据的描述;②算法也就是操作步骤。
计算机算法可分为两大类:数值运算算法和非数值运算算法。
2、算法的特性(P19)1.有穷性;2.确定性;3.有零个或多个输入;4.有一个或多个输出;5.有效性。
3、描述算法的常用方法(P20-33)1.自然语言;2.用流程图表示算法。
3.N—S图4.计算机语言5.伪代码4、C程序算法的3种基本结构及其共同特点(P24-25)三种基本结构:1.顺序结构:最基本;2.选择结构:又称选取结构或分支结构;3.循环结构:又称重复结构;①当(while)型循环;②直到(until)型循环。
共同特点:1. 只有一个入口;2. 只有一个出口;3. 结构内的每一部分都有机会被执行到;4. 结构内不存在“死循环”。
5、结构化程序设计的设计原则(P34)1.自顶向下;2.逐步细化;3.模块化设计;4.结构化编码。
第三章数据类型、运算符与表达式1、C语言的基本数据类型和构造数据类型(P37)在程序中对用到所有数据都必须制定其数据类型。
数据有常量和变量之分,它们分别属于以上这些类型。
2、字面常量和符号常量(P37-38)在程序运行过程中,其值不能被改变的量称为常量,常量区分为整型常量和实型常量,常量一般从其字面形式即可判别,这种常量称为字面常量或者直接常量。
第二章C语言基础知识2.1 常量和变量【学习目标】(1)掌握常用标识符的命名规则(2)掌握常量和变量的定义与引用方法实例5 常量和变量——输出常量与变量的值【实例任务】定义不同类型的几个变量,然后对应输出相应的常量值和变量值。
程序的运行结果如图2-1所示。
图2-1 程序运行结果【相关知识】1.标识符标识符是用来标识变量名、符号常量名、函数名、数组名、文件名、类名、对象名等,其基本构成元素源自字符集。
C语言的字符集包括英文字母、数字字符和一些特殊字符。
用这些基本元素单位命名标识符时,一定要遵循以下四个原则:(1)必须由字母(a~z,A~Z)或下画线(_)开头;(2)由字母、数字或下画线组成的长度不超过32个字符;(3)标识符中的大小写字母有区别;(4)不能与关键字同名。
下面是不合法的标识符和变量名:M.d.,John,y 123,#33,3d642.常量常量是数据在内存中一种表示形式,在程序运行过程中值永远保持不变,常用的类型有5种,包括整型常量、实型常量、字符型常量、字符串常量、符号常量。
整型常量就是整型,常用的表示形式有十进制,如10、30等。
八进制常量表示形式要以0开头,如013、012等。
十六进制常量表示形式要以0x或0X开头,如0x13、0X12等。
实型常量就是指的是一些带小数点的数,包括指数。
如3.14、-1.2、1.2e6、10.5E8等。
其中,1.2e6表示数学上1.2×106,10.5E8表示数学上10.5×108。
字符型常量是单引号引起来的单个字符,这些字符为ASCII字符,对应各有其ASCII 码值。
字符常量包括一些转义字符,字符形式和输出结果对照如表2-1所示。
表2-1 转义字符字符串常量是用双引号引起来的0个或多个字符。
字符串常量形式给出的是字符串在存储空间中的起始地址。
如“Hello World!”就是一个字符串常量。
符号常量,是指以标识符来代替一个值,这个标识符的值在程序运行过程中不能再改变。
它是在编译预处理阶段使用#define来进行定义,也就是程序的开头来定义。
常量名的类型由所给的常量值的类型来定,不再单独指明。
符号常量的定义形式为:#define 常量名常量值如实例中的定义语句“#define C 'x'”定义了一个符号常量,常量名为C。
3.变量变量是指在程序运行过程中其值可以被改变的量,C语言变量遵循先定义后引用的原则。
变量的定义形式为:数据类型<变量名列表>变量在定义时,可以先定后,后赋值,也可以定义的同时赋初值。
如实例中合法的定义形式:int a=10; /*定义整型变量,同时为变量赋初值*/float b; /*先定义单精度型变量,然后再赋初值*/b=10.5;char c='x'; /*定义字符型变量,同时赋初值*/double d=3.14e15; /*定义双精度类型变量*/变量定义时很灵活,允许在定义的同时对部分变量赋初值,如下列合法的定义语句:int a,b,c=6;但不允许同时对几个变量赋同一个值,如下定义语句是错误的:int a=b=c=13;/*这是错误的语句*/【课堂精练】1.已知频率求波长。
光的速度为3×108米/秒,已知频率为50HZ,求此频率光波的波长。
程序的运行结果如图2-2所示。
图2-2 程序的运行结果根据程序的运行结果,请将下面程序补充完整并调试。
#include "stdio.h"main(){ _________________________________float f=50.0;x=c/f;printf("此光波的波长为:%.2lf米",x);getch(); }2.摄氏温度和华氏温度的转换。
已知摄氏温度与华氏温度的转换公式为:C=5(F-32)/9,输入摄氏温度的值,请输出华氏温度的值,程序的运行结果如图2-3所示。
图2-3 程序的运行结果根据程序的运行结果,请将下面程序补充完整并调试。
#include "stdio.h"main(){ float F,C; /*F为摄氏温度,C为华氏温度*/printf("请输入摄氏温度的值:\n");___________________________________getchar();C=5*(F-32)/9;printf("摄氏温度%.1f所对应的华氏温度为:%.1f",F,C);getch(); }2.2 数据类型【学习目标】(1)掌握几种常用的数据类型(2)理解不同数据类型间的转换实例6 基本数据类型——输出不同数据类型的值【实例任务】定义不同类型的变量,并进行一定的简单运算,要求输出不同类型表达式的值。
程序的运行结果如图2-4所示。
图2-4 程序运行结果【程序代码】【相关知识】1.整型数据根据占用内存字节数的不同,整型变量又分为4类:(1)基本整型(类型关键字为int)。
(2)短整型(类型关键字为short [int])。
(3)长整型(类型关键字为long [int])。
(4)无符号整型。
无符号型又分为无符号基本整型(unsigned [int])、无符号短整型(unsigned short)和无符号长整型(unsigned long)三种,只能用来存储无符号整数。
整型数据或变量占用的内存字节数,随系统而异。
在16位操作系统中,一般用2字节表示一个int型变量,且long型(4字节)≥int型(2字节)≥short型(2字节)。
显然,不同类型的整型变量,其值域不同。
占用内存字节数为n的(有符号)整型变量,其值域为:-215~(215-1);无符号整型变量的值域为:0~(21 6-1)。
不同整型变量的长度和取值范围如表2-2所示。
表2-2 整常数类型的字节长度和取值范围2.实型数据C语言的实型变量,分为两种:(1)单精度型:类型关键字为float,一般占4字节、提供7位有效数字。
(2)双精度型:类型关键字为double,一般占8个字节、提供15~16位有效数字。
实型常量即实数,在C语言中又称浮点数,其值有两种表达形式:(1)十进制形式:例如3.14、10.5等。
(2)指数形式:它靠字母e或E连接两边的数字组成,如2.3e-7代表2.3x10-7。
e的两边必须有数值,且e后的指数部分必须是整型数,6.1e、.e+5、e-3、1.3e4.8都是非法的。
3.字符型数据字符型数据是用一对单引号括起来的单个字符,如'A'、'+'、'5'等。
另外,还有一类转义字符,也属字符型数据。
这在上一节已经讲解过。
字符变量的类型关键字为char,一般占用1字节内存单元。
字符变量通常也分为两类:一般字符类型(char)和无符号字符类型(unsigned char)。
字符型数据的字节长度和取值范围见表2-3。
表2-3 字符数据的字节长度和取值范围对于字符型数据,既可以字符形式输出,也可以整数形式输出。
实例中,输出变量c1、c2的值,采用两种格式,读者可以对比一下。
4.字符串数据字符串常量是用一对双引号括起来的若干字符序列。
字符串中字符的个数称为字符串长度。
长度为0的字符串(即一个字符都没有的字符串)称为空串。
C语言规定,在存储字符串常量时,由系统在字符串的末尾自动加‘\0’作为字符串的结束标志。
如果有一个字符串为“CHINA”,则它在内存中的实际存储为6个字符,最后一个字符'\0'是系统自动加上的,它占用6字节而非5字节内存空间。
对于字符型指针变量可按下列形式定义:char *p="C language";语句中符号*是指针运算符,表示p为指针变量,整个语句表示指针a指向这个字符串。
printf()函数中,可以用%s这一格式控制符进行字符串输出。
实例7 不同数据类型间的转换——不同类型数据身份的转换【实例任务】定义一些不同类型的变量,并进行简单运算。
根据不同要求将运算结果强制类型转换。
程序的运行结果如图2-5所示。
图2-5 程序运行结果【相关知识】1.数据类型的自动转换不同类型数据间进行混合运算时,数据类型要一致后才能参与相应的运算,这种转换属自动完成的,称为类型的自动转换,转换时遵循如下原则:(1) 若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
(2) 转换按数据长度增加的方向进行,以保证精度不降低。
如int型和long型运算时,先把int量转成long型后再进行运算。
(3) 所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
(4) char型和short型参与运算时,必须先转换成int型。
(5) 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。
如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。
2.数据类型的强制转换强制类型转换是根据程序的需要,通过类型定义符来完成的,其形式如下:(类型说明符) (表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。
如实例中:(int)b1,把b1转换为整型,把a1+a2的结果转换为单精度型赋值给变量c。
在强制类型转换时,一定要注意要将类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(float)(a1+a2)写成(float)a1+a2,相当于把a1转换成float型之后再与a2相加了。
【课堂精练】1.定义两个字符型变量,输出相应的字符及对应的ASCII值。
程序运行结果如图2-6所示。
图2-6 程序运行结果根据以上程序运行结果,请将程序填充完整并调试。
#include "stdio.h"main(){char cl,c2;c1='a' c2='b';printf("%c %c\n",cl,c2);___________________________________getchar();}2.定义不同类型的变量,然后进行输出。
程序的运行结果如图2-7所示。
图2-7 程序的运行结果根据程序的运行结果,请将程序补充完整并调试。
main(){ int a,b; unsigned c,d;_____________________________________a=100; b=100; e=50000; f=32767;c=a; d=b;printf("%d,%d\n",a,b);printf("%u,%u\n",a,b);printf("%u,%u\n",c,d);c=a=e; d=b=f;printf("%d,%d\n",a,b); printf("%u,%u\n",c,d);getch(); }2.3 常用的运算符和表达式【学习目标】(1)掌握几种常用运算符(2)掌握由运算符和数据构成的表达式的运算过程(3)熟练掌握常用运算符的优先级别关系实例8 运算符及表达式——输出各表达式的结果【实例任务】定义一些变量,并用运算符构成各种不同类型的表达式,输出各个表达式的运行结果如图2-8所示。