C语言笔记Word文件下载.docx
《C语言笔记Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言笔记Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
C语言程序中出现的任何对象一般都要有一个名字,这些对象的名字就是C语言的标识符。
标识符有三类,保留字,预定义标识符和用户定义标识符。
第二章数据类型﹑运算符﹑表达式及数据的和输入/输出
数据类型可分为:
基本数据类型﹑构造数据类型﹑指针类型﹑空类型等四类。
构造类型有一下几种:
数组类型﹑结构体类型﹑共用体类型。
指针是一种特殊的,同时又是具有重要作用的数据类型。
其值用来表示某个量在内存储器中的地址。
空类型,调用后并不需要向调用者返回函数值,其类型说明符为Void。
C语言规定,常量是可以不经定义而直接引用的,但变量则必须先定义后使用。
定义符号常量的格式为:
#define标识符常量
定义变量的语法格式为:
类型标识符变量名表列
类型标识符是C语言中的数据类型,如整型类型标识符int,字符型类型标识符char。
实型常量又称实数或浮点数,有两种格式,小数形式和指数形式。
整型变量有6种类型:
整型int,短整型short,长整型long,无符号整型unsignedint,无符号短整型unsignedshort和无符号长整型unsignedlong。
实型变量分为单精度和双精度两种类型。
定义字符型变量的关键字是char。
字符型变量用于存放字符常量,即一个字符型变量可存放一个字符常量。
在C语言中,对数据的处理是由运算符和表达式来完成的。
要求:
掌握各种运算符运算规则及其所需运算对象个数;
掌握运算符的优先级和结和性。
两个整数相除,结果是整型。
如果不能整除,只取结果的整数部分,小数部分全部舍去。
两个实数相除,所得的商也为实数。
模运算符“%”称为求余运算符,要求两个运算对象都为整型,其结果是两整数相除后的余数。
算术表达式是由算术运算符﹑常量﹑变量﹑函数和圆括号组成。
用++﹑--运算(优先级为2级,结合性是自右向左)的变量只能是整型﹑字符型和指针型变量。
复合赋值表达式的一般形式为:
变量名复合赋值运算符表达式
复合赋值运算的作用等价于:
变量名=变量名运算符表达式
对两个数据进行比较的运算符称为关系运算符。
C语言提供了三种逻辑运算符,逻辑与&
&
(结合方向自左向右,11优先级),逻辑或II(结合方向自左向右,12优先级),逻辑非!
(结合方向自右向左,2优先级)
C语言提供了直接对二进制数进行按位操作的功能,称为位运算。
Sizeof运算符是单目运算符,优先级为2级,结合性是自右向左。
其运算的含义是:
得到运算对象在计算机的内存中所占用的字节数。
Char数据占一个字节,int数据占四个字节。
(type)是强制类型转换运算符,优先级为2级,结合性是自右向左。
类型转换
1.将浮点型数据赋给整型变量时,舍弃浮点数的小数部分。
2.将整型数据赋给单双精度变量时,数值不变,但以浮点数形式储存到变量中。
3.将一个double型数据赋给float变量时,截取其前面7位有效数字,存放到float变量的存储单元中。
4.字符型数据赋给整型数据变量时,由于字符只占1个字节,而整型变量占2个字节,因此将字符数据放到整型变量低8位,高8位补零。
5.将一个int,short,long型数据赋给一个char型变量,只将其低8位原封不动地送到char型变量。
6.将带符号的整型数据赋给long型变量时,要进行符号扩展,将整型数的16位送到long型低16位中,如果int型数据为正值,则long型变量的高16位补0;
如果int型变量为负值,则long型变量的高16位补1,以保持数值不改变。
反之,若将一个long型数据赋给一个int型变量,只将long型数据中低16位原封不动地送到整型变量。
7.将unsignedint型数据赋给longint,不存在符号扩展问题,只需将高位补0即可。
8.将非unsigned型数据赋值給长度相同的unsigned型变量,也是原样赋值。
数据的输入与输出
C语言程序通常由3部分构成:
输入原始数据部分,计算处理部分和输出结果数据部分。
格式化输出函数printf函数,一般调用格式为:
printf(格式控制字符串,输出项表);
格式控制字符串包括:
普通字符和格式说明符
格式说明符:
%(附加格式说明符)格式字符
格式化输入函数scanf函数,一般调用格式为:
Scanf(“格式控制字符串”,输入项地址表);
字符数据的输入/输出
字符输出函数putchar函数,其功能是在显示器上输出单个字符
字符输入函数getchar函数,其功能是从键盘上输入一个字符
第三章程序的控制结构
C语言的语句根据其在程序中所起的作用可分为说明语句和可执行语句。
可执行语句可分为:
表达式语句,函数调用语句,复合语句,空语句和流程控制语句。
表达式语句由运算符,常量,变量组成。
表达式后加分号就构成表达式语句。
流程控制语句:
1.条件判断语句,包括if语句,switch语句
2.循环执行语句,包括do...while语句,while语句,for语句
3.转向语句,包括break语句,goto语句,continue语句,return语句
第四章数组
在程序设计中,为了处理方便,对于大规模的数据,尤其是相互间有一定联系的数据,可以把这些数据按一定规则组成构造类型数据。
C语言中的构造类型有:
数组,结构体,共用体。
数组:
就是相同类型若干数据的有序集合。
数组元素:
数组中的每一个数据称之为数组元素,用一个统一的数组名和不同的下标来唯一确定。
数组元素可以作为单个变量使用,所以也称为下标变量。
数组的下标:
是数组元素在数组中位置的一个索引,数组下标从0开始。
数组的维数:
数组元素下标的个数。
只有一个下标的数组称为一维数组,用来存放一组同种类型的数据。
定义一维数组的一般格式为:
类型说明符数组名[整型常量表达式];
一维数组可以存放一个数列或者向量。
方括号[]中的常量表达式表示数组元素的个数,也称为数组的长度。
初始化赋值的一般形式为:
类型说明符数组名[整型常量表达式]={值,值,...,值};
例如:
inta[10]={0,1,2,3,4,5,6,7,8,9};
气泡法规律:
n个数排序,共n-1步排序处理,第i步进行n-i-1次比较和至多n-i-1次交换。
气泡法排序思路如下。
S0(第0步):
对n个数,从前到后,依次将相邻两个数进行比较(共比较n-1次),将小数交换到前面,大数交换到后面,直到将最大的数移到最后。
此时最大的数在最后,固定下来。
S1(第1步):
将前面n-1个数,从前到后,依次将相邻两个数进行比较(共比较n-2次),将小数交换到前面,将大数交换到后面,直到将次大的数移到倒数第二位。
此时次大的数在倒数第二个位置,同样也固定下来。
......
Si(第i步):
将前面n-i个数,从前到后,将相邻两个数进行比较(共比较n-i-1次),将小数交换到前面,将大数交换到后面,依次比较,直到将第i+1大数移到倒数第i+1个位置。
Sn-2(第n-2步):
将最后两个数,进行比较(比较1次),交换。
此时,所有的整数已经按照从小到大的顺序排列。
#defineN4
#include<
stdio.h>
Main()
{inta[10],i,j,t;
Printf(“pleaseinputd%numbers:
\n”,N);
for(i=o;
i<
N;
i++)
Scanf(“%d”,&
a[i]);
for(i=0;
N-1;
for(j=0;
j<
N-i-1;
j++)
if(a[j]>
a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
Printf(“3d%”,a[i]);
}运行结果如下:
pleaseinput4numbers:
9320
0239
有两个下标的数组称为二维数组,利用二维数组可以存放排列为行列形式的数据(矩阵,表格)。
定义二维数组的一般格式为:
类型说明符数组名【整型常量表达式1】【整型常量表达式2】;
二维数组元素的表示形式为:
数组名【行下标表达式】【列下标表达式】
二维数组初始化的格式为:
类型说明符数组名【整型常量表达式1】【整型常量表达式2】={初始化数据};
存放字符型数据的数组称为字符数组,其中每个数组元素存放的值都是单个字符。
C语言中常用字符数组存放字符串,各数组元素依次存放字符串中的各字符。
引用字符数组中的一个元素,可以得到一个字符。
凡是可以使用字符数据的地方均可以引用字符数组的元素。
C语言没有提供存放字符串的变量,通常用一个字符数组来存放一个字符串。
字符数组的输入/输出有3种方法。
1.使用scanf函数和printf函数逐个字符输入/输出
2.使用scanf函数和printf函数整体输入/输出字符数组中的字符串
当用scanf函数输入字符串时,字符串中不能含有空格﹑回车或跳格字符,因为空格﹑回车或跳格是输入数据的结束标志。
第五章函数
C语言是一种结构化程序设计语言,结构化程序设计的本质就是将一个大的程序按功能分割成若干个较小的模块,每个模块都具有相对独立的功能。
在c语言中,每个模块都是用函数来实现的。
函数是一段连续的程序代码的组合,用来完成特定的功能。
一个c语言程序往往是由多个函数组成,函数之间并列排放﹑相互调用﹑协同工作,完成一个大的任务。
在c语言中,用函数实现各功能模块的定义,通过函数之间的调用实现c程序的整体功能。
说明:
1.一个c程序可以由一个或多个源程序文件组成。
每个源程序文件是一个编译单位,可以独立编译,并可以被不同的程序使用。
2.每个源程序文件可以由一个或多个函数组成,函数是最小的功能单位,一个函数可以被不同源文件的其他函数调用。
3.一个c程序有且仅有一个主函数main,主函数可以放在任何一个源文件中,无论主函数在程序的什么位置,程序的执行总是从main函数开始,完成对其他函数的调用后再返回到main函数,最后由main函数结束整个程序。
4.所有函数都是平行的,相互独立。
一个函数并不从属于另一个函数,即函数不能嵌套定义。
从用户使用的角度来看,函数可分为标准库函数和用户自定义函数两种。
从函数的形式上看,函数可分为无参函数和有参函数两种。
函数定义的一般形式如下:
类型标识符函数名(【形参表说明】)
{
声明语句
执行部分
}
C语言中,除了主函数main外,其他函数都必须通过函数的调用来执行。
函数调用的一般形式为:
函数名(【实际参数表】);
按照函数在主调函数中的作用,函数调用可以有一下3种形式。
1.函数语句
2.函数表达式
3.函数实参
第六章指针
一个变量在内存中所占用的存储单元的地址称为该变量的指针。
即“指针”仅表示对象在内存中的地址。
在计算机中,内存是一个连续编号或编址的空间。
也就是说,每个存储单元都有一个固定的编号,这个编号称为地址。
不同的数据类型占用不同字节的存储空间,而每个字节都有一个地址,一般把每个数据的首字节地址称为该数据的地址。
如果一个变量专门用来存放其他变量的地址,那么就称这个变量为指针变量。
指针变量定义的一般格式为:
【存储类型标识符】数据类型标识符*指针变量名;
数据类型标识符是指该指针变量所指向的变量的类型。
存储类型标识符是指指针变量本身的存储类型,可为auto,static,register,extern,默认则为auto型。
定义一个指针变量必须用符号“*”,它表明其后的变量是指针变量。
指针变量初始化的一般形式为:
【存储类型标识符】数据类型标识符*指针变量名=初始地址值;
取地址运算符“&
”,取内容运算符“*”
1.取地址运算符“&
”是取操作对象的地址而不是其值。
2.取地址运算符“&
”后面只能跟变量或数组元素,而不能跟表达式或常量,也不能跟数组名。
取内容运算符“*”又称为间接存取运算符,功能是取指针变量所指向的变量的内容。
在运算符“*”之后跟的变量必须是指针变量。
指针变量的值是一个地址值,因此指针变量作参数就是在函数间传递变量的地址,是一种地址复制的值传递方式。
第7章结构图与共用体
结构体类型和数组类似,都属于构造数据类型。
数组是由相同数据类型的多个数据组成的,结构体是由不同数据类型的多个数据组成的,其中每个数据称为结构体中的一个成员。
访问数组中的元素是通过数组的下标,访问结构体中的成员则通过成员的名字。
对结构体的组成进行描述,称为结构体类型的定义。
结构体类型定义的一般格式为:
Struct结构体类型名
数据类型成员1;
数据类型成员2;
......
数据类型成员n;
};
结构体变量的定义方式有3种:
1.先定义结构体类型,再定义结构体类型的变量
2.在结构体类型定义的同时定义结构体类型的变量
3.直接定义结构体类型的变量
第三种方法特点:
不能在别处用来另行定义其他的这种结构体类型的变量,要想定义就得将“struct{......}”这部分重新写。
结构体变量的初始化和引用
结构体变量的常规引用就是对结构体变量中的各成员进行引用
结构体变量各成员的引用格式为:
结构体变量名.成员名
“.”是c语言中的一种运算符,称为成员运算符,它对应的运算称为访问成员运算。
它的优先级为第一级,结合方向为从左向右。