C语言程序设计
笔记
(第一版)
季莫申 编著 石家庄铁道大学
一、 C语言的基本知识
(1)字符集与标识集
1.C语言的字符集和包括:
大、小写英文字母;数字;运算符;括号:包括小括号,中括号和大括号;标点符号;特殊符号(例如数学符号);空格符、换行符、制表符。
注:不在字符集中的字符可以在两个双引号(称为字符串常量)或两个单引号(称为字符常量)之间出现,还可以出现在注释行中。
2.标识符:
在C语言中,任何一个标识符必须满足下列语法规则: 以字母或下划线中的任意字符开头and在第一个字符后,可以是任意的数字、字母、下划线组成序列。
关键字:
关键字又称保留字,一般为小写字母。关键字是C编译程序预先登陆的标识符,它们代表固定的意义,用户不能随便使用。
特定字:
特定字包括:define、undef、include、ifdef、ifndef、endif、line。 用户定义字:
用户定义字命名时的注意事项:
关键字和特定字不能作为用户定义字使用;标识符最好根据其所代表的含义取其英文或汉语拼缩写,以便于阅读和检查;根据经验,应避免使用容易混淆的字符;字母的大写和小写代表的意义是不同的;C语言有许多库函数,用户定义字不要与其中某个函数同名。
(2)变量与常量 1.变量
在C语言中,所有的变量都必须先定义后使用。这样做的原因是:编译系统会根据定义为变量分配内存空间,分配空间的大小与数据类型有关;未经过定义的标识符,系统将不允许其作为变量名使用,这样会给程序员调试程序带来方便;编译系统可以根据变量的类型检查对该变量的运算的合法性。
定义变量的格式为:类型说明符 变量名表;
使用逗号分隔变量名表中的多个变量,并使用分号结束语句;如果不使用变量名表,也可分别定义每个变量。
需要特别注意的是,在没有使用赋值符号对其赋值之前,其初始值为不定值。其原因是在分配给当前定义的变量的内存空间中存有之前占用此空间的程序的数据,故其初始值为不定值,将0赋给变量即可解决这个问题。
2.常量
定义常量的方法:在第二行写下指令即可,如定义常量π的指令是:#define
PI 3.1415926(define和PI是有间隔的)。我们可以把这种常量叫做符号常量。但是,这种符号常量与其他高级语言用const方法定义的符号还是有区别的。此外,还需注意用预处理命令#define为变量命名时,通常用大写字母,以区分变量名。
注:i++的含义是在i的基础上加上1,并且++号在i的前面和后面是有不同的含
义的,++在前,先加后用,++在后,先用后加。(需结合课件3.3) (3)C语言的数据类型
本节需注意的有三点,数据类型不同的变量在内存中的储存方式和所占的字节都有可能不同,一种高级语言支持的数据类型越多,程序设计时就越方便,越容易;当整数
超出int的表示范围时,可以使用double或float来表示数据;无意义的数字串视作字符处理。
详细的数据类型属性图见课本第20页。 (4)整型数据
1.整型数据在内存中的存储方式
一个整型数在内存中的存储方式与二进制有关:带符号的整数在计算机内部采用二进制补码存储,不带符号的整数则采用二进制原码存储。
不同位数的整型数据的取值范围是不同的,对于8位整型数据来说,表示带符号数的范围是-128~127,表示不带符号数的范围是0~255;对于16位整型数据来说,表示带符号数的范围是-32768~32767,表示不带符号数的范围是0~6535;而对于32位整型数据,表示带符号数的范围是-2147483648~2147483647,表示不带符号数的范围是0~4294967295.
2.整型变量
按照整型变量所占的二进制数来分类,整型变量分为短整型(short)、普通整形(int)和长整型(long)三种。而根据整型变量是否带符号来分类,可以分为不带符号的整型变量和带符号位的整型变量。无符号用关键字unsigned表示,用unsigned与短整型、 普通整型和长整型三种类型相匹配,又可以构成无符号短整型、无符号普通整型、无符号长整型三种类型。
3.整形常量
十进制表示不能以数字0开头,八进制以数字0开头,而十六进制以数字0和x开头。编译程序以开始的数字区分三种不同的进制。
如果不做特殊指定,整型常量按照普通整型变量的长度来存储。 4.用printf()显示整型数据
显示整型数的转换字符有d、o、x、u等。 %d:表示把数据按十进制整型输出。
%o:表示把数据按八进制整型输出。 %x:表示把数据按十六进制整型输出。 %u:表示把数据参数按无符号整型输出。
5.用scanf()输入整型数据 scanf()函数的使用格式:
scanf(”格式信息”,输入项1,输入项2,…);需要注意的是,输入项必须使用地址,普通变量的地址是在变量名前加取地址符&。 输入整型数的转换字符有d、o、x、u等。 %d:表示把数据按十进制整型输入。
%o:表示把数据按八进制整型输入。 %x:表示把数据按十六进制整型输入。 %u:表示把数据参数按无符号整型输入。
格式信息中除了有%开始的转换说明,还可以有普通字符,只是这些字符
不是显示在屏幕上,而是要求使用者在输入数据时,要在相应位置输入相同的字符(除了空格符、制表符或换行符)。 (5)浮点数
1.浮点数的表示范围: -3.4*10^32~3.4*10^32。(32位系统)。 2.浮点常量
C程序中的浮点常量由整数部分、小数部分、指数部分组成。浮点常量的构成规则是:整数部分可以不写,小数部分可以不写,但不能同时不写;指数部分可以省略(相当于是用小数表示法);若有指数部分,e(或E)两边都至少有一位数;指数的数字必须是整数(范围为1~3位的整数),可以为负或正号,正号可以省略。
3.用printf()显示浮点数据
输出浮点数据可以用的转换说明是%f和%e。%f显示小数表示的普通浮点
数,%e显示科学计数法表示的浮点数。输出双精度(double)类型时,还需要在转换字符前加上字母I。
注:域宽问题:域宽不是指整数位的宽度,而是指整个浮点数显示的宽度,
还包括了小数点,若不指定域宽和精度,默认的精度是6.如果指定的域宽大于所显示的域宽,未用的位置用空格填写,如果指定的域宽小于所显示的数实际域宽,按数的实际域宽显示。简单来说,域宽即整数位数,小数位数,与小数点的位数之总和。 (6)字符型数据
1.字符数据在内存中的存储方式
字符型数据在内存中所占位数是固定的,只占1字节(8位)。 2.字符变量与字符常量:
C语言中的字符常量的表示方法是用单引号将一个字符括起来。;例如’a’、’b’、’A’,可以使用字符常量为字符变量赋值此处要注意的问题是:单引号中的字符只能是一个字符;不能用双引号括起来一个的字符表示单个字符常量,即char beta;beta=”a”,这种情况是错误的;非图形字符,如退格、换行等,也可以表示成字符型常量。表示方法是使用转义符\\与一些特殊字符构成转义序列;除此以外,字符型常量可以像整型数据一样参与四则运算,其实质字符型对应的ASCII码之间进行的运算。 3.用scanf()输入字符:
当scanf()读入一组数据是,如果不使用%c进行转换,scanf()扫视输入信息,跳过空格符、制表符或换行符,寻找下一个输入域。但是若使用%c进行转换,情况则不同,scanf()不会跳过空格符、制表符、或换行符,而是直接把笑一个字符输入各参数,不论它是什么,即使是空格符等非正常值,也会被顺次赋给变量。 4.用getchar()输入字符和用putchar()输出字符
getchar()函数是接收一个从标准输入/输出设备上输入的字符。一般的标准输入设备是键盘。调用getchar()函数的方法是:字符变量=getchar()。
putchar()函数是向标准输入设备/输出设备上输入一个字符。一般的标准输出设备是屏幕终端。
Putchar()函数与getchar()函数不同,需要把输出字符作为函数的参数,放在括号里,括号里的内容是不能缺省的。调用的方法一般是:putchar(字符变量或字符常量)putchar()函数的括号中返回的数据类型是整型,返回值为字符的ASCII码值。 5.字符串常量
用双引号括起来的字符序列是字符串常量。需注意,形如”a”与’a’是完全不同的,前者是字符串常量,占的字节数是2;后者是字符常量。占的字节数是1。 字符串常量的输出有两种方法,一种是直接输出:“printf(“how are you”)”,另一种是使用%s转换说明:“printf(“%s”,”how are you”)”。 (7)不同数据间的混合运算 1.自动转换:
自动转换是指编译程序自己自发进行的转换,转换的原则是为两个运算对象的计算结果尽可能地提供多的存储空间,自动转换表见课本33页。
应注意:自动转换只针对两个运算对象,不能对表达式的所有运算符进行一次性的自动转换。例如:5/4+3.2的计算结果是4.20,因为5/4是按整型进行计算的,故5/4的值为1而非1.25,所以整个表达式的值是4.20而非4.45,并不因为3.2是浮点型而将整个表达式按浮点型计算。 2.强制转换
强制装换的格式为(数据类型名) 操作对象。 3.赋值表达式的类型转换
当赋值运算符左边的变量与赋值运算符右边的表达式的数据类型相同时,不需要进行数据类型的转换。
当赋值运算符左边的变量与赋值运算符右边的表达式的数据类型不相同时,系统负责将右边的数据类型转变为左边的数据类型。
编写程序时应该遵循的原则是尽量不要在不同的数据类型之间进行转换,如果一定要进行,可以在同种类的数据类型间进行长度增加的转换,但是不要进行长度减少的转换,以期避免数据丢失。
二、 顺序和选择结构程序设计 (1)结构化程序设计
1.结构化程序设计的三种基本结构
顺序结构:顺序结构就是一组逐条执行的可执行语句。按照书写顺序,自上而下执行。
选择结构(分支结构)。选择结构是一种先对给定条件进行判断,然后根据判断的结果执行相应的命令的结构。 循环结构。循环结构是指多次重复执行同一组命令的结构。具有循环结构的程序一般必须指定循环终止的条件,以便对程序的循环进行有效的控制,以免进入无限循环(或称死循环)状态。循环结构一般有两种,当型循环和直到型循环。当型循环的含义是:当条件P成立时,反复执行A,条件P不成立时,结束循环;直到型循环的含义是:反复执行A,直到条件P不成立。通常情况下,我们称条件P为循环条件,而将动作A称为循环体。
循环次数是指循环动作所进行的次数。有些程序在循环执行之前是无法预知循环次数的,而另一些程序在循环之前就知道循环次数。 (2)语句与分程序
1.复合语句与分程序结构
复合语句在语法上相当于一个简单语句,在程序中可以作为一个独立语句来看待,因此又称分程序。复合语句的执行按在其中的语句顺序执行。复合语句中的每个说明语句和执行语句都必须带分号,而在花括号的后面不用加分号。用复合语句代替多个简单语句是C语言的特征之一。其优点是:使用灵活,并可以在分程序中使用局部变量。 (3)顺序结构程序设计
顺序结构设计的步骤可以归纳为:
用预处理命令包含文件或进行宏定义;定义变量(即分配存储空间);为变量赋初值(可以用赋值语句或输入函数);计算;输出结果(用输出函数)。
如果在编译程序中如果有用到一些较为复杂的数学计算,应该在C的编译的
开头写上#include “math.h”
(4)算术运算符和赋值运算符 1.算术运算符的种类及运算
两个数相除,结果仍为整数,商向下取整数,相当于数学中的整除运算;
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库课堂笔记在线全文阅读。
相关推荐: