C语言程序设计重点知识文档格式.docx
《C语言程序设计重点知识文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计重点知识文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
3.模块化设计;
4.结构化编码。
第三章数据类型、运算符与表达式
1、C语言的基本数据类型和构造数据类型(P37)
类型
所占字节
int
2
long
4
float
double
8
char
1
在程序中对用到所有数据都必须制定其数据类型。
数据有常量和变量之分,它们分别属于以上这些类型。
2、字面常量和符号常量(P37-38)
在程序运行过程中,其值不能被改变的量称为常量,常量区分为整型常量和实型常量,常量一般从其字面形式即可判别,这种常量称为字面常量或者直接常量。
用一个标识符代表一个常量的符号,称为符号常量,即以标识符形式出现的常量(常量的表示用大写字母,变量的表示用小写字母),符号常量与变量不同,符号常量的值在其作用域内部能改变,也不能再被赋值,如果再用赋值语句给符号常量赋值是错误的。
使用符号常量的好处:
1.含义清楚2.在需要改变一个常量时能做到“一改全改”
3、标识符的命名规则(P39-40)
C语言规定标识符只能有字母、数字和下划线3中字符组成,且第一个字符必须为字母或下划线,合法的标识符可以作为变量名。
编译系统将大写字母和小写字母认为是两个不同的字符。
变量名的长度最好不要超过8个字符。
在C语言中,要求对所有用到的变量做墙纸定义,也就是“先定义,后使用”,1.凡未被事先定义的,系统不把它认作变量名,这就能保证程序中变量名使用得正确。
2.每一个变量被指定为一个确定类型,在编译时就能为其分配响应的存储单元。
3.指定每一变量数以一个类型,这就便于在编译时据此检查在程序中要求对该变量进行的运算是否合法。
例a%b是“求余”得到a/b的余数
4、整型常量的3种表示方式、整型变量的分类及其定义方式、整型常量的类型(P41-44)
整型常量即整常数的3种表示方式:
1.十进制整数;
2.八进制整数(以0开头);
3.十六进制整数(以0x开头)。
2进制
用两个阿拉伯数字:
0、1;
8进制
用八个阿拉伯数字:
0、1、2、3、4、5、6、7;
10进制
用十个阿拉伯数字:
0到9;
16进制
0~9然后用A,B,D,E,F表示10,11,12,13,14,15
整型变量的分类:
整型变量的基本类型符为int,根据数值的范围将变量定义为基本整型int、短整型shortint/short、长整型longint/long在实际应用中,变量的值常常是正的,为充分利用变量的值的范围,可以将变量定义为“无符号/unsigned”类型,以指定是“无符号数”,或者为“有符号/signed”。
如果前无符号,默认为有符号(signed)
归纳起来,可以用一下六种整形变量:
1.有符号基本整型[signed]int
2.无符号基本整型unsignedint
3.有符号短整型[signed]short[int]
4.无符号短整型unsignedshort[int]
5.有符号长整型[signed]long[int]
6.无符号长整型unsignedlong[int]
整型常量的类型:
1.一个整数,如果其值在-32768~2147483647范围内,则认为它是int型,它可以赋值给int型和longint型变量
2.一个整数,如果其值超过了上述范围,而在-2147483648~2147483647范围内,则认为它是长整型,可以将它复制给一个longint型变量
3.一个整常量后面加一个字母u或U,可以认为是unsignedint型,如123456u
4.在一个整常量后面加一个字母l或L,则认为是longint型常量,如123l、123L
5、浮点型常量的2种表示方式、浮点变量的分类及其定义方式、浮点常量的类型(P45-47)
浮点型常量的2种表示方法:
浮点数就是实数,有两种形式1.十进制小数形式。
(由数字和小数点组成,必须有小数点)2.指数形式。
如123e3或123E3代表123×
注意字母e/E之前必须有数字,且e后面的指数必须为整数,一个浮点数可有多种指数表示方法
浮点变量的分类:
1.单精度(float型):
有效数字6~7
2.双精度(double型):
有效数字158~16
3.长双精度型(longdouble型):
有效数字18~19
浮点变量的定义方式:
floatx,y;
类似
浮点常量的类型:
如果在数的后面加字母f或F(如1.65f),编译系统会把它们按单精度处理。
一个浮点型常量可以赋给一个float型、double型或longdouble型变量,根据变量类型截取实型常量中相应的有效位数字。
例如:
Floata;
A=111111.111;
由于folat型变量只能接受7位有效数字,因此最后两位小数不起作用。
如果a改为double型,则能全部接受上述9位数字,并储存在变量a中。
6、字符常量的2种形式、字符变量、字符串常量(P48-52)
字符常量的2种形式:
1.C语言的字符常量是用单撇号括起来的一个字符。
如‘a’
2.常用的以“\”开头的特殊字符如下
字符形式
含义
Ascii代码
\n
换行
10
\t
水平指标(跳到下一个tab位置)
9
\b
退格,将当前位置移到前一列
\r
回车,将当前位置移到本行开头
13
\f
换页,将当前位置移到夏夜开头
12
\\
代表一个反斜杠字符“\”
92
\’
代表一个单引号字符
39
\”
代表一个双引号字符
34
\ddd
1到3位八进制数所代表的字符
\xhh
1到2位十六进制数所代表的字符
字符变量:
字符变量用来存放字符常量,它只能放一个字符,不能存放字符串
例charc1,c2;
c1=‘a’;
c2=‘b’;
一个字符变量在内存中占一个字节。
小写字母的ASCII码比它的大写字母ASCII码大32,小大变为大小
7、变量初始化的时间(P53)
C语言允许在定义变量的同时使变量初始化。
(inta=3;
floatf=3.56;
charc=‘a’)
也可以使被定义的变量的一部分赋初值(inta,b,c=5;
)
如果对几个变量赋予同一个初始值,应写成:
inta=3,b=3,c=3;
不能写成inta=b=c=3;
初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋初值的,相当于有一个复制语句。
8、各类型数据间的混合运算(P54)
整型、浮点型、字符型数据间可以混合运算
9、C语言的运算符及其优先级和结合性(P55)
特殊%,模运算符或称求余运算符,%两侧均应为整型数据,且两个整数相除的结果为整数,如5%3为1,舍去小数部分
算术运算符的结合方向为自左至右或左结合性,并且先乘除后加减
10、强制类型转换(P56)
(double)a;
(int)(x+y);
11、自增、自减运算(P57)
i++或++i
1.自增自减运算符只能用于变量,不能用于常量或表达式。
例++(i-1)为错
2.++和—的结合方向是自右至左,例-i++合法,先输出-i再加一,(-i)++不合法
i=3;
a=i++;
b=i++;
c=i++;
d=a+b+c;
最终输出d=12.
3.i+++j相当于(i++)+j,尽可能多的自左至右
12、赋值运算符、复合赋值运算符、赋值表达式(P59-64)
赋值运算符就是“=”
1.将浮点型数据(单双精度)赋给整型变量时,舍弃浮点数的小数部分
2.将整型数据赋给单双精度时,数值不变,但以浮点数形式存储到变量中,如将23赋值给float就得到23.00000
3.将一个double型数据赋给float变量时,截取其前面7位有效数字,存放到float变量中。
floatf;
doubled=123.456789e100;
f=d;
就出现溢出错误
将一个float型数据赋给double变量时候,数值不变,有效位数扩展到16位,在内存中以8个字节存储
4.字符型数据赋给整型变量
5.int、short、long型数据赋给char变量
例如inti=289;
charc=‘a’;
c=i;
6.将带有逗号的整型数据int赋给long型变量时,啊哟进行符号扩展,将整型数据16位送到long型低16位中,如果int型数为正值,则long型变量的高16位补零;
如果int型变量为负值(符号位为1),则long型变量的高16位补1,以保持数值不变,反之如果将一个long型数据赋给一个int型变量,值将ong型数据中低16位原封不动地送到整型变量(截断)
7.unsignedint型数据赋给longint型变量时,不存在符号扩展问题
8.将非unsigned型数据赋给长度相同的unsigned型变量,也是原样赋值
复合赋值运算符:
a+=3等价于a=a+3;
a+=b+3等价于a+=(b+3)
9.赋值表达式一般形式<
变量>
<
赋值运算符>
表达式>
赋值运算符左边的叫左值,右边的叫右值,凡是左值都可以作为右值
赋值表达式作为左值时应加括号
赋值运算符按照“自右至左”的结合顺序
(a=3*5)=4*3先执行括号内能的运算,将15赋给a,然后执行4*3的运算,得12,再把12赋给a,故整个表达式的值为12
赋值表达式也可以包含复合的赋值运算符
a+=a-=a*a先进行右边赋值表达式的计算,相当于a=a-a*a将a初值带入计算a,再进行左边赋值表达式的计算
13、逗号运算符及其优先级、逗号表达式
逗号表达式一般形式表达式1,表达式2
赋值运算符的级别高于逗号运算符a=3*5,a*4a的值为15,表达式的值为60
x=(a=3,6*3)
赋值表达式,将逗号表达式的值赋给x,x的值等于18
x=a=3,6*3
逗号表达式,x的值为3,整个逗号表达式的值为18
第四章顺序结构程序设计
1、C语句的分类(P69-71)
1、控制语句9种
If…else…/for…/while…/do…while/continue/break/switch/goto/return
2、函数调用语句。
函数调用语句由一个函数调用加一个分号构成
printf(“456123”)
3、表达式语句。
表达式语句由一个表达式加一个分号构成,a=3
4、空语句
5、复合语句
2、赋值语句(P71)
If((a=b)>
0)t=a;
先将b的值赋给a,如果a大于0,则t=a
3、putchar()、getchar()函数(P73-74)
putchar函数(字符输出函数)作用是向终端输出一个字符。
其一般形式为
putchar(c)
putchar函数可以在屏幕上输出字符,也可以输出控制字符,如putchar(‘\n’)作用是输出一个换行符,使输出的当前位置移到下一行的开头
getchar函数(字符输入函数)的作用是从终端输入一个字符,其一般形式为getchar()例如charc;
c=getchar();
putchar(c);
此时屏幕上将输出c的输入值
4、printf()、scanf()函数及其对应的格式控制符(P74-86)
printf格式输出函数,作用是向终端输出若干个任意类型的数据
一般格式为printf(“格式控制”,输出表列)
例printf(“%d,%c\n”,i,c)
格式控制作用:
1.格式说明(%..):
将输出的数据转换为指定的格式输出
2.普通字符。
按原样输出
格式控制中的普通字符按原样输出
例printf(“%d%d”,a,b)
printf(“a=%db=%d”,a,b)
在第二个函数中双引号内的字符,除了两个%d以外,其他的普通字符按原样输出,如果a,b的值分别为3,4,则输出为a=3b=4中间有空格
3.格式字符:
1d格式符。
%d按十进制整数数据实际长度输出;
%md指定宽度(位数)m,如果数据位数小于m,则左端补空格;
%ld长整型数据
2o格式符。
以八进制整数形式输出
3x格式符。
以十六进制数形式输出
4u格式符。
以十进制整数形式输出无符号数
5c格式符。
用来输出一个字符,一个整数,只要它的值在0~255之间,也可以用%c使之按字符形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符;
反之,一个字符数据也可以用整数形式输出。
6s格式符。
用来输出一个字符串。
%s;
%ms,输出的字符串占m列,如果字符串本身长度大于m,则突破m限制,将字符串全部输出,如果小于m,则左补空格;
%-ms,如果串长小于m,则在m列范围内,字符串向左靠,右补空格;
%m.ns,输出m列,但只取字符串左端n个字符。
这n个字符输出在m列右侧,左补空格;
%-m.ns,取n个字符输出在m列范围的左侧,右补空格,如果n>
m,则m自动取n值,即保证n个字符正常输出
7f格式符。
用来输出实数(包括单双精度),以小数形式输出。
%f,不指定字段宽度,使整数部分全部输出,并输出6位小数。
但注意,在输出的数字中并非全部数字都是有效数字,单精度实数的有效数字一般为7位;
%m.nf,指定输出的数据共占m列,其中有n位小数。
如果数值长度小于m,则左端补空格;
%-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。
8e格式符。
以指数形式输出实数
9g格式符。
用来输出实数,根据数值的大小,自动选f格式或者e格式,且不输出无意义的零。
P80
格式字符
说明
d,i
以带符号的十进制形式输出整数
O
以八进制无符号形式输出整数
X,x
以十六进制无符号形式输出整数,用x则百偶是输出十六进制数的a~f时以小写形式输出。
用X时,则以大写字母输出
u
以无符号十进制形式输出整数
c
以字符形式输出,只输出一个字符
s
输出字符创
f
以小数形式输出单双精度数,隐含输出7位小数
e,E
以指数形式输出是说,用e时指数以e表示,用E时指数以E表示
g,G
选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0.用G时,若以指数形式输出,则指数以大写表示
字符
l
用于长整型整数,可加载个师傅d,o,x,u前面
m
数据最小宽度
n
对实数,表示输出n位小数,对字符串,表示截取的字符个数
-
输出的数字或字符在域内向左靠
注意:
除了X,E,G外,其他格式字符必须用小写字母;
可以在格式控制字符串内包含转义字符;
格式符之间可以加入修饰符;
用连续两个%来输出%
scanf(格式控制,地址表列)
scanf(“%d%d%d”,&
a,&
b,&
c)
&
为地址运算符,&
a指a在内存中的地址。
1.用%d%d%d输入数据时不能用逗号做两个数据间的分隔符可用空格
如果%d和%d之间有n个空格,则输入时对应的位置应该有多于n个空格来分隔
总之,%d与%d之间有什么简单符号,输入信息时候就要将这些符号加上,或者格式控制里是a=%d,则输入数据时候也得输入a=某个数据
2.用%c格式输入字符时候,空格字符和转义字符都作为有效字符输入
例如:
scanf(“%c%c%c”,&
c1,&
c2,&
c3);
若输入“a空格b空格c”则c1为a,c2为空格,c3为b,正确的输入法为“abc”字符间没有空格
3.在输入数据时候,遇到以下情况时,认为该数据结束①遇空格,或按回车,或跳格键;
②指定宽度结束,如%3d;
③遇非法输入
第五章选择结构程序设计
1、关系运算符及其优先级和结合性、关系表达式(P91-92)
优先级:
等不等于低于大小等于;
算术运算符>
关系运算符>
赋值运算符
理解:
关系表达式,表达式的值(1为真,0为假)
设a=3,b=2,c=1有d=a>
b则d的值为1;
f=a>
b>
c则f的值为0.
2、逻辑运算符及其优先级和结合性、逻辑表达式及其求值过程的特点(P91-92)
逻辑运算符与(&
)或(||)非(!
1非(!
)→与(&
)→或(||)谐音记为“飞鱼火”;
2逻辑运算符中的“&
”和“||”低于关系运算符,“!
”高于算术运算符
逻辑表达式:
C语言判断一个量是否为真时,以0代表假,以非0代表真,即将一个非0的数值认作为真。
若a=4则!
a的值为0;
4&
0||2的值为1
求值过程特点:
略
3、if语句的三种结构(P95-96)
第一种:
if(表达式)语句
if(x>
y)frintf(“%d”,x);
第二种:
if(表达式)语句1else语句2
y)printf(“%d”,x);
elseprintf(“%d”,y)
第三种:
if(表达式1)语句1elseif(表达式2)语句2…..
if(number>
500)cost=0.15;
elseif(number>
300)cost=0.10;
elsecost=0;
特点:
1.if(3)printf(“%d”,’a’);
2.第二,三种形式的if语句中,在每个else前面有一个分号,整个语句结束处有一个分号。
3.当if和else后面有多个操作语句时,用{}将几个语句括起来称为一个符合语句。
注意,花括号外面不需要再加分号,因为{}内是一个完整的复合语句
4、if语句的嵌套及if与else的配对关系(P99)
5、条件运算符及其优先级和结合性及其求值过程(P102-104)
例子:
max=(a>
b)?
a:
b;
“(a>
b”是一个条件表达式,如果(a>
b)为真,则条件表达式取值a;
否则取值b。
条件运算符优先级别低于关系运算符和算术运算符。
故上式中括号可以省略
条件运算符的结合方向为“自右至左”
a>
b?
c>
d?
c:
d相当于a>
(c>
d)
(a=100):
(b=100)a>
printf(“%d”,a):
printf(“%d”,b)
6、switch语句及其执行过程、break语句的作用(P102-104)
switch(grade)
{
case‘A’:
printf(“85~100\n”);
case‘B’:
printf(“0~84\n”);
defaule:
printf(“error\n”);
}
说明:
case只起语句标识作用,当语句执行时,此case一旦执行其后面的语句将就此开始全部执行下去,不再进行判断,为使在执行此case后跳出结构,用一个break语来达到刺目的。
故需在以上语句的每一个case语句分号后面加(break;
第六章循环控制
1、while语句(P114)
while(表达式)语句;
先判断表达式,后执行语句。
while(i<
=100){sum=sum+I;
i++;
2、do-while语句(P115)
do循环体语句while(表达式);
先执行循环体,后判断循环条件是否成立
do{sum=sum+I;
}while(i<
=100);
printf(“%d\n”,a);
3、for语句(P118)
for(表达式1;
表达式2;
表达式3)语句
for(循环变量赋初值;
循环条件;
循环变量增值)
for(i=1;
i<
=100;
i++)sum=sum+i;
1.表达式1可以省略(但分号不可以省略),此时应在for语句之前给循环变量赋初值;
2.如果表达式2省略,循环无终止地进行下去;
3.表达式3也可以省略,另找路径保证循环正常结束;
4.可以省略表达式1和表达式3而使只有表达式2循环条件。
如for(;
){sum=sum+i;
i++}
4、循环的嵌套(P121)
while循环,do…while循环,for循环三种循环可以嵌套
5、break、continue语句(P122)
break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环体下面的语句,不能用于循环语句和switch语句之外的任何其他语句中。
continue作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。
两者区别是continue语句只结束本次循环,而不是种植整个循环的执行。
而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。
6、辗转相除法求最大公约数的基本原理
第七章数组
1、数组的定义方式、下标范围(P131、135)
类型说明符数组名[常量表达式]例inta[3]表示定义了一个整数数组,数组名为a,有3个元素。
注意,下标是从0开始的(可以使整型常量或整型表达式),C语言不允许对数组的大小做动态定义。
inta[10];
t=a[6];
2、数组元素的引用方式、数组的初始化(P132、136)
全赋初值
inta[3]={1,2,3}在全赋初值的前提下可以写成inta[]={1,2,3}
赋初值一部分
inta[3]={1,2}
全部为0
inta[3]={0}
3、起泡法排序的原理(P134)
将相邻两个数比较,将大(小)的调到前边
4、二维数组相关
表示:
floata[3][4],b[5][10];
定义a为3行4列的数组,b为5行10列的数组。
(区别a[3,4])
引用:
数组名[下标][下标]例a[2][3],不要写成a[2,3]
初始化:
1分行给二维数组赋初值,例。
inta[3][2]={{4,5}{9,8},{4,2}};
2将所有数据写在一个花括号内,按数组排列顺序对个元素赋初值,例inta[3][2]={1,2,3,4,5,6,}
3对部分元素赋初值,例,inta[3][2]={{4},{},{7}}未赋值的元素自动为0
4第一维可以不指定,但第二维不能省略inta[][2]={1,2,5,6,8,9}系统会根据第二维的长度自动算出第一维
5还可以inta[][4]={