c语言习题解析【含基础知识讲解】.docx
第1页第1章C语言基础1.1简介英文是一种自然语言,学习英文首先要学习字符(字母和其它符号)、单词、然后学习语句短语,最后学习用语句构成文章。C语言是一种高级计算机语言,接近于人们习惯的自然语言和数学语言,也要先学习字符,基本词类,然后再学习语句的构成规则,最后学习用语句构成程序。本章介绍C语言的字符集、数据类型、运算符等。1.2知识点基本语法概念关键字、标识符、数据类型、变量、常量常量的表示方法整数、实数、字符、字符串常量、标识符常量类型转换自动类型转换、赋值类型转换、强制类型转换运算符算术运算符、关系运算符、逻辑运算符、字位运算符、其他常用运算符。1.3概念131字符集在C语言程序中允许出现的所有基本字符的组合称为C语言的字符集。C语言的字符集就是ASCII字符集,主要包含下列几类1大小写英文字母A~Z、A~Z(52个);2数字0~9(10个);3其它可显示字符(33个);4转义字符(11个)。在C语言中,有一些不可显示字符。表示这些字符不可直接书写,而是使用反斜杠符号“\”开始并后跟单个字符或若干字符的组合。132保留字在C语言中有特殊含义的单词称为“保留字”,也称“关键字”,主要用于构成语句。所有保留字均由小写字母组成。C语言保留字共有32个。版权所有,盗版必究南京农业大学工学院林科学编著C语言习题解析第2页1.3.3标识符所谓标识符是指常量、变量、语句标号以及用户自定义函数的名称。作为标识符必须满足以下规则①标识符必须由字母、下划线或数字09组成;②标识符的第一个字符可以是字母AZ,AZ或下划线_;③保留字不能作标识符。温馨提示C语言是一种大小写敏感的语言。如TEST、TEST是2个不同的标识符。1.3.4数据类型C语言中的数据类型,可以分为基本数据类型和派生数据类型两类。基本数据类型是C语言系统中预定义的内部数据类型,有CHAR、INT、FLOAT、DOUBLE、VOID型。字符型用来存放一个ASCII码字符或一个8位的二进制数;整型用来存放一个整数,实型用来存放实数,双精度型用来存放双精度数。不同的编译系统为各种类型数据分配的内存字节数不同,本书按照TURBOC介绍。基本类型可以加某些关键字对其进行修饰如SHORT表示短,LONG表示长,SIGNED表示有符号,UNSIGNED表示无符号等。用SHORT、LONG、UNSIGNED、SIGNED这四个关键字修饰INT类型时,INT可以省略,例如UNSIGNEDINT可简写为UNSIGNED。无修饰词的INT类型和CHAR类型,编译程序认为是有符号的。即相当于SIGNEDINT和SIGNEDCHAR。派生数据类型则是根据用户需要,按照C语言规则由基本数据类型构造出来的数据类型,有指针、数组、结构体、联合体、枚举等类型。这些内容将在后面的章节中进行介绍。每种数据类型表示的数的范围是有限的,当数超过此范围,则会发生溢出,无符号整数的最高位也是数据位,而不是符号位。数据以原码形式存放。例如整数7的原码是(0000000000000111),而二进制的无符号整数(1000000000000000)表示的是整数215。温馨提示有符号整数的最高位是符号位,最高位为0,表示该数是正数,最高位为1,表示该数是负数。正整数以原码的形式存放。负整数在内存中以整数的“补码”形式存放。求补码的方法如下先求原码的反码,再在反码上加1,简言为“求反加1”。如1在内存中的形式为(0000000000000001);则1在内存中的形式为先对1求反码,在此基础上加1,即得(1111111111111111)。1.3.5变量在程序执行过程中,其值可以改变的量称为变量。其作用是存储数据。每个变量属于一种类型。每个变量只能存放其类型允许的值。定义格式如下数据类型变量名1,变量名2,,变量名N;在一条语句中,可以定义一个变量也可以同时定义若干个变量。变量名作为变量的标识,应是一个合法的C语言标识符。C语言习题解析第3页1.3.6常量在程序运行过程中,值不会被改变的量称之为常量。1.整型常量整型常量是指不含小数点的整数,它可以有正负号。如果是正号,可以省略。十进制整数的表示和日常表示一样,由09组成。如100,34,15等都是十进制数。八进制整数的表示以0开头,由07组成。如012、0456、045都等是八进制数。十六进制整数的表示以0X或0X开头,由09,AF或AF字母组成。如0X2A、0X123等都是十六进制数。2.实型常量实型常量即实数,也称浮点数。有十进制小数和十进制指数两种表示形式。实型常量可以有正负号。如果是正号,可以省略。十进制小数形式由数字和小数点组成(必须有小数点)。例如125、314、00、1239等都是实数。当整数部分或小数部分为0时,可以忽略不写,但不能同时省略。指数形式是指以10的方幂表示的数,也称科学表示法。由小数和指数两部分组成,两者缺一不可。指数部分用E来表示方幂。温馨提示用指数形式表示小数时,方幂E前后必须是数字,E的前面可以是整数也可以是小数,E后面只能为13位整数。例如124E3表示124103,43E2表示43102。但13E、E2、12E31等都是不合法的实数。3.字符常量字符常量是用单引号括起来的一个字符,如’E’、’E’。字符常量在内存中以8位的整型常量存放,该整型的值被称为ASCII码。当某些字符不能直接显示或者不能从键盘上输入时,可采取转义字符表示。转义符后若是一个整型常量,则必须是一个以0为前缀的八进制或以X为前缀的十六进制数,其大小在十进制数0255之间。当为八进制数时,前缀0可以省略。4.字符串常量用一对双引号将0个或若干个字符括起来,称为字符串常量。编译系统在处理字符串常量时,会自动在字符串常量的尾部加上 \0 。5.标识符常量标识符常量是指用一个标识符来表示一个常量。用以增加程序的可阅读性和可维护性。定义标识符常量的格式为DEFINE标识符常量值DEFINE定义的常量,通常被称为宏定义常量。系统在编译程序前,首先对源程序进行预处理,将宏定义中的标识符替换成常量值,并生成临时的中间文件,再对该中间文件进行编译。在宏替换时,只是标识符和常量值之间的简单替换,预处理本身不做任何数据类型和合法性检查。程序运行时也不分配内存空间。C语言习题解析第4页1.3.7运算符及优先级C语言中对数据进行处理,和其他程序设计语言一样,也是通过运算符完成的。运算符是完成对常量、变量等操作对象进行运算的符号。运算符的对象称为操作数。对一个操作数进行运算的称为一元(单目)运算符,对两个操作数进行运算的称为二元(双目)运算符,对三个操作数进行运算的称为三元(三目)运算符。常量、变量等数据通过运算符组合在一起构成了C语言的表达式,每个符合C语言规则的表达式将有一个确定的结果,这个结果的类型一般取决于操作数的类型。当多个运算符组合成一个复合表达式时,运算符的求值次序根据运算符的优先级和结合规则来确定。表11列出了C语言中各种运算符及其优先级。表11C语言运算符及其优先级优先级运算符功能说明结合性改变优先级作用域运算符数组下标1,成员选择从左至右,增1或减1运算符可以表示为CHARPSPS“CLANGUAGE“而对