版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言期末复习之基础学问篇
—杨士帅
一C语言概述
>程序:一组计算机能够识别和执行的指令。指令的有序的集合。
>计算机语言:人和计算机沟通信息,计算机和人都能识别的语言
Ac语言的注释:
〃单行注释
/*……*/多行注释。
Ac语言的结构:
1.由一个或多个源程序文件组成。
2.函数是c程序的基本单位。
3.一个C程序至少含有一个main函数,也可以由一个main函数
和若干个其他函数组成。
4.c的这些特点简单实现程序的模块化。
5.C程序总是从main函数起先执行,而且不论main函数的位置
如何。
>每个语句和数据的定义后面必需有一个括号。
AC语言本身没有输入输出函数,输入输出操作是库函数scanf和
printf供应的。
二数据的类型和运算
(一)常量:在程序运行的过程中,其值不能被变更。
1.整型常量:1000.
2.实型常量:0.34,12.34e3.
3.字符常量:'a','\n'.
4.字符串常量:“boy”。
5.符号常量:ftdefinePI3.1416
(二)变量:在程序运行期间,变量的值是可以变更的。
1.变量必需先定义后运用。
2.刚定义尚未赋值的变量具有随机值。
3.定义变量要同时定义名字和类型。
4.变量名和变量值是两个不同的概念。
i.变量名实际是以这个名字代表一个内存地址。
ii.变量值就是该内存单元当前存储的值。
(三)标识符:一个对象的名字。
1.只能由字母,数字和下划线三种字符组成,而且第一个字符必
需为字母或下划线。
2.标识符的长度无限制,但不能以关键字作为标识符。
3.不合法的标识符:M.D.John,#33,3D64,Include。
(四)数据类型:就是对数据安排储存单元的支配,包括储存单
元的长度以及数据的存储形式。
数据类型宽度
CharIB
Shortint2B
Int4B
Longint4B
Float4B
Double8B
Longdouble80B
整数的默认时signed,各整数类型均可加修饰符unsigned表示无符
号整数类型,unsignedint可以简写成unsigned.
1.整型:
>一个十进制数是0到9的序列。
»十六进制应当加前缀Ox。如:Oxfa,0xAE03
A八进制应当加前缀0.如:030.
>运用科学记数法,e/E的后面肯定不能在跟小数,且E/e的前面
必需有值。
2.字符型:
A用单引号括起来的单个字符。如:'MJ0,.事实上存储的是
该数据的ASCII码。所以也可以把他们看成是整型量,C语言容
许对整型变量赋以字符型,也允许对字符变量赋以整形值。
3.转义字符:
转义字符含义
\bBackspace
\tTab
\n换行
(五)运算符:
1.算术运算符:
>整数除法:两个整数相除的结果为整数。
Ex:5/3=1,舍去小数部分。
-5/3=-1,向零取整。
>浮点除法:
保证除数和被除数中至少有一个是浮点数。
Ex:5/4.0=1.25.
A%模运算要求运算元为整数,结果也是整数。
Ex:5%3=2.
Ac语言没有乘方运算,但pow函数可以实现乘方运算。
pow(x,y)x的y次方。
#include<math.h>.
算数运算符的优先级及结合性:先乘除后加减,从左至右。
A不同类型数据的混合运算:类型的自动转换,编译系统会自动把
各操作系统操纵数转化为操作数中最长的类型。
EX:若int型及float或double型数据进行运算时,系统会自动把
int及float型数据转化为double型,然后在进行运算,结果时
double型。
2.自加自减运算符:
>i++,i--:在运用i之后将i的值加/减1.
>++I,—i:在运用i之前,先将i的值加/减1.
3.强制类型转换:
(double)a将a转化为double类型。
短类型->长类型平安
长类型->短类型有可能会丢失数据。
4.运算符的优先级:
1,()、{}、□、.、(结构体成员运算符)、->(指向结构体成员运
算符)
2,单目运算符!(非)、一一(自减)、++(自加)、〜(按位取反)、
正号(+)、负号(-)
3,算术运算符*、乐/,+、-
4,关系运算符<、>、>=、<=,=、!=
5,逻辑运算符&&和||
6,赋值运算符=
7,逗号运算符(表达式1),(表达式2),(表达式3)..・
还有就是左右运算依次
a+b+为双目运算符,(a>b)?a:b中?:为3目运算符.!a为单目
运算符.
单目,三目运算符都为自右向左结合,双目运算符除赋值运算符都为
自左向右结合.
5.关系运算符:
>,<,>S<S==,!二.用来比较两个操作数之间的关系,运算结果为1或
0.
6.逻辑运算符:
!,&&,IN用来实现逻辑运算和逻辑推断。
用非0表示逻辑值的true,用0表示逻辑值的false。
7.条件运算符:
三目运算符:表达式a?表达式b:表达式c
若表达式的值非0,则返回表达式b的值;若表达式的a的值为0,
则返回表达式c的值。
8.逗号运算符:
用来将若干独立的表达式分隔并连接构成一个逗号表达式。
9.赋值运算符:
变量二表达式。右结合性。
三输入输出函数
(一)限制台I/O:程序及外界沟通。
(二)C语言中全部的I/O都是由库函数完成的,要用include
将相关头文件包含在源文件当中。运用标准输入输出函数时要用
到stdio.h文件。
(三)格式输出函数:printf(“格式限制字符串”,表达式列表)。
格式字符意义
d,i以带符号的十进制输出整数
0以八进制形式输出无符号整数
(不带前缀0)
X,x以十六进制的无符号数输出整数
(不带前缀Ox)
U以无符号的十进制形式输出整数
f以小数的形式输出单,双精度实
数,隐含6位小数
E,e以指数的形式输出单,双精度实
数
G,g以%£或%2中较短的输出宽度输
出单、双精度实数
c输出单个字符
s输出字符串
格式修饰符:
O%-m.nlf,%-mld
字符说明
1用于输出长整形数据以及double型数
据
m数据显示的最小宽度
n对实数,表示输出n位小数。
对字符串,表示截取的字符个数。
—输出的数字或字符在显示宽度区域内
左对齐。
»未指定输出宽度m,则按实际位数输出。
»未指定小数位数,默认6位。
A宽度计算中小数点要占一位。
»若数据实际宽度比制定宽度要小,默认右对齐,即左补
空格。有修饰符-,则左对齐,即右补空格。
》若数据的实际宽度比指定宽度大,则按实际宽度输出。
<4>格式输入函数:用户用指定的格式从盘上把数据输入到指定的变
量中。
scanf(“格式限制字符”,变量地址列表);
>在scanf语句的格式字符串中,假如没有非格式字符在
"%d%d%dv之间做输入时的间隔,在输入时要用一个或
一个以上的空格或回车或TAB键作为输入数据之间的间
隔。
>scanf函数中的格式限制后面应当是变量地址,而不是变
量名。
>不能用格式限制来规定输入数据的精度。
O:scanf(z,%7.2f",&a);X
scanf("%f",&a);V
>假如输入在格式限制字符串中除了格式字符还有其它字
符,那么在输入时这些字符将被作为间隔符,要输入相
同的字符。
Ascanf(rta=%d,b=%d*,&a,&b)a=12,b=34
在输入数据时遇到以下状况,则认为是一个数据输入的结束:
遇到空格键,回车键,tab键。
满意域宽,如%4d,输入4位结束。
遇到非法字符。
>在输入字符型数据时,若格式限制字符中没有非格式字符,则认
为全部输入的字符均为有效字符。
O如:scanf&a,&b,&c);
•只有当输入为:def时(BP:不能有间隔),才能
把d赋于a,给予b,'f'给予c。
四流程限制
(一)依次:
>按语句的先后依次依次执行。
A复合语句:可用{}括起来的多个语句,构成一个复合语句。在c
语言中复合语句被认为是一条语句。
(二)分支:
if语句:实现两个分支的选择结构。
最常用的3种if语句的形式:
1.if(表达式)语句1(没有else子句)
2.if(表达式)语句1
else语句2(有else子句)
3.if(表达式1)语句1
elseif(表达式2)语句2
elseif(表达式3)语句3
I
I
elseif(表达式m)语句m
else语句m+1
IF嵌套:在if语句中又包含一个或多个if语句称为if语句的嵌套。
else总是及它上面最近的为配对的if配对。
if()
if()语句1
else语句2
else
if()语句3
else语句4
Switch语句:实现多分支的选择结构。
依据表达式的值,使流程跳转到不同的语句。
switch语句的一般格式:
switch(表达式)
{case常量1:语句1
case常量2:语句2
case常量n:语句n
default:语句n+1
)
switch电句中表达式和常量可以是整形以及字符型。
任何两个case后面的常量不行有相同的值。
先计算表达式的值,在依据表达式的值转向不同的分支。
每个case分支的语句无需用{}括起来。
每个case分支都是入口点。
break语句时转移语句,即跳出switch,无break语句,将执行入口
点之后的全部语句。
(三)循环:
>While(表达式)语句
先推断循环条件表达式的值,若为真,则执行循环体;若为假则不执
行循环体语句。
Ado
循环体语句
whilie(表达式)
先无条件执行一次循环体,然后在推断循环条件是否成立。
AFor(表达式1;表达式2;表达式3)
循环体语句。
表达式1:为循环变量设置初始值。
表达式2:推断是否接着循环。
表达式3:修改循环变量的值。
循环嵌套:一个循环体内又包含另一个完整的循环结构,称之为循环
嵌套。内层循环中还可以嵌套循环,这就是多层循环。3种循环可以
相互嵌套。
三种循环的比较:
»一般状况下,三种循环可以相互代替。
>循环中应包含使循环趋于结束的语句。
A用while和do…while循环变量操作应在while和do…while之
前完成。而for语句可以在表达式1中实现循环变量的初始化。
>Break:从循环体中强行退出,结束整个循环。
>Continue:停止本次循环,干脆起先下次循环。
五函数
运用角度来看函数包括库函数和用户自定义函数。
库函数:由C系统供应,用户无须定义,也不必在程序中作类型说明,
只需在程序中包含有该函数的头文件即可在程序中干脆调用。
用户自定义函数:用户依据须要自己编写的函数。
从函数形式来看:函数分为无参数函数和有参数函数。
无参数函数:无参数函数一般用来执行一组操作。无参数函数可以带
回或不带回函数值。
有参数函数:在调用函数时,主调函数要通过参数向被调函数传递数
据。函数可以带回或者不带回函数值。一般状况下,被调函数会返回
一个函数值,供主函数运用。
一个C程序由一个或多个程序模块组成,每一个程序模块作为一个源
程序文件。
对较大的程序,一般不希望将全部的内容都放在一个文件中,而是将
它们分别放在若干个源文件当中,由若干个源文件组成一个C程序。
一个源程序文件由一个或多个函数及其他相关语句组成。
一个源程序文件是一个编译的单位,在程序进行编译是以源程序文件
为单位进行编译的,而不死以函数为单位进行编译的。
C程序的执行是从main函数起先的,假如在main函数的执行过程中
调用其他函数,调用函数结束后流程返回到main函数,main函数结
束时整个程序运行结束。
全部函数都是平行和同等的,即在定义函数时是分别进行的,相互独
立的,一个函数并不从属于另一个函数,即函数不能嵌套定义。函数
间可以相互调用,但不能调用main函数,main函数是被操作系统所
调用。
定义函数:
C语言要求在程序中遇到的全部函数,必需先定义后运用。
函数的定义指明白函数名,函数返回值类型,函数实现的功能以及参
数的个数及类型,将这些信息通知给编译系统。
函数定义格式:
类型名函数名(形式参数表列)
函数体
类型说明白函数返回值的类型,它可以是任何有效类型,假如省略,
默认为int。
参数列表运用逗号分割变量表,各变量表由类型和变量名组成,参数
列表可以为空,表示无参,但此括号不能省略,不管定义还是声明时,
每个函数参数必需同时含有类型和参数名。
空函数:{}中类容为空,调用函数,什么也不做,目的时便利以后对
功能的扩充,而不会影响程序的结构。
函数的返回:return表达式。
用途:使得本函数马上退出,返回到调用语句的地方,返回一个值。
函数可以用两种方法停止运行并返回到调用它的地方:
执行到函数最终一个语句。
遇到return语句,函数的返回值是靠return
语句获得的。
假如不希望函数有返回值,将函数类型声明为void。
除了类型为void函数外,其他函数均有返回值,该值由return语句
确定,假如没有return语句函数将返回一个不确定的值。
假如函数没有指明函数返回值的类型,默认为int。
当函数的返回值不是整型时,应当:
明确说明函数的类型。
函数声明位于第一次调用之前。
参数传递:
C语言中的函数调用传递参数是按值传送。
假如实参的修改通过形参带回主调函数,用指针。
用数组作为函数参数时,就把数组的地址传给了参数。
函数的作用域:
每个函数都是一个独立的代码块,一个函数的代码属于该函数专有。
一个代码块中定义的变量成为局部变量,局部变量随代码块的产生而
产生,随代码块的退出而消亡。
函数的形参也是局部变量。
在任何一个函数之外定义的变量成为全局变量,可以被任何一个函数
访问,修改。
在函数内部用存储类型符Static说明变量不随函数的运行,退出而
产生,消亡。但仍旧只能在函数内部访问它。假如全局变量和局部变
量同名,局部变量屏蔽全局变量。
函数的嵌套调用:
C语言容许在一个在一个函数的定义中出现对另一个函数的调用c这
样就出现了函数的嵌套调用。即在被调函数中又调用其他函数。
六数组
数组是一组有序数据的集合,下标代表了数据在数组中的序号。
用数组名和下标唯一确定数组中的元素。
数组中每一个元素都必需属于同一个数据类型。
一维数组的定义:
类型数组名[常量表达式]
数组名的命名规则及变量命名规则相同,数组也必需先定义后运用。
数组类型事实上是数组元素的取值类型。对于同一数组,其全部元素
的数据类型都是相同的。
数组民是用户定义的标识符,不能及其他变量名相同。
定义数组时,方括号必需是一个常量表达式,表示数据的元素个数,
也称为数组长度。可以是符号常量或常量表达式,但不能时变量。
一维数组的运用:
运用数组就是运用他的元素。
数组的元素和一般变量一样,只不过是名字有些特殊。
数组元素的一般表示形式:
数组名[下标序号]
运用数组时,数组下标可以是常量,变量和表达式,从0起先。
一维数组的初始化:
Inta[10]={0,1,2,3,4,5,6,7,8,9};
可以只给部分元素赋值,当{}中元素少于元素个数时,系统自动给前
面元素赋值,其余元素自动赋0。
Inta[10]={l,2,3,4,5};
只能给逐个元素赋值,而不能给数组整体赋值。
O给十个元素全部赋3,只能写为:
inta[10]={3,3,3,3,3,3,3,3,3,3};
O而不能写为:inta[10]=3;
在定义数组时,若要给全部元素赋值,可以省略数组元素的长度。
O如:inta[5]={l,2,3,4,5};
O可写为:inta[]={l,2,3,4,5);
二维数组的定义:
类型变量名[常量表达式1][常量表达式2]
二位数组的运用:
数组名[下标1][下标2]
数组中元素依次:
C语言中,二维数组是按行储存的。
•inta[3][4]
a[0][0]a[0][l]a[0][2]aEO][3]
a[l][0]a[l][l]a⑴⑵a[l][3]a⑵[0]a⑵⑴
a⑵⑵a⑵[31
二维数组的初始化:
Inta[5][3]=]={{80,75,92},{61,65,71},{59,63,70},
{85,87,90},{76,77,85}};
如对全部元素赋值,行下表可以省略,但列下表不能省略。
inta[3][3]={1,2,3,4,5,6,7,8,9};
可以写为:
inta[][3]={1,2,3,4,5,6,7,8,9);
字符数组:chare[10];
字符数组的初始化:假如初始值小于数组长度,则将这些字符赋给数
组中前面的那些元素,其余元素自动定位空字符。
字符'\0'作为字符串的结束标记。
字符串处理函数:输入字符串到字符数组。
scanf("%s",字符数组名);
gets(字符数组名);
•charst[20];gets(st);scanf("%s”,st);
把字符数组中存放的字符串输出:
Oprintf(,字符数组名)
Oputs(字符数组名)
•charst[20]="China”;puts(st);
printf("%s”,st);
#include<string.h>
stract(字符串1,字符串2)
把字符串2链接到字符串1后面。
Strcpy(字符串1,字符串2)
把字符串2的内容拷贝的字符串1(覆盖)
strcmp(字符串1,字符串2)
依据ASCH码依次比较两个字符串,返回比较结果。
字符串1二字符串2,返回值二0;
字符串1>字符串2,返回值>0;
字符串k字符串2,返回值<0;
Strlen(字符串)
返回字符串中包含的字符个数(不包括结束标记'\0')
Strlwr(字符串)将大写字母转化成小写字母。
strupr(字符串)将小写字母转换成大写字母。
'A'V:41H-50H
'z-6111-7011
七结构体
定义结构体的类型:struct结构体名
(
成员列表二类型名+变量名;
);
结构体可以嵌套引用,即一个结构体的定义中可以引用其他结构体类
型。
structDate
{intmonth;intday;intyear;};
structStu
{intnum;charname[20];
charsex;intage;
structDatebirthday;
charaddr[30];
);
结构体类型及结构体变量是不同的概念,相当于变量类型和变量。
只能对变量赋值,存取或运算,而不能对一个类型赋值,存取或运算。
在编译时,对类型是不安排空间的,只对变量安排空间。
定义结构体类型的变量:
1.先声明结构体类型,再定义该类型变量
structstudent
(
intnum;charname[20];
charsex;intage;
floatscore;charaddr[30];
);
structstudentstul,stu2;
2.在声明类型的同时定义变量
structStudent
{intnum;
charname[20];
charsex;
intage;
floatscore;
charaddr[30];
}studentl,student2;
3.不指定类型名而干脆定义结构体类型变量
•其格式为:
struct
成员表列
}变量名表列;
结构体变量的初始化:
Structdate
(
Intmonth;
Intday;
Intyear;
);
Structdatebirthday={10,22,83};
运用结构体变量:只能通过成员运算符引用结构体变量的各个成员,
一般不能对结构体变量整体运用。
O结构体变量名.成员名
O如:stul.numbirthday,year
假如成员本身又是一个结构体类型,则要用若干个成员运算符,一级
一级找到最低一级的成员。
O如;
对结构体变量的成员可以像一般变量一样进行各种运算。
stul.num++;
类型定义在前,不安排内存,变量定义后,给变量安排一段连续的内
存单元。.
结构体成员名可及程序中的其他变量同名,二者占不同的内存单元互
不干扰。.
结构体数组:就是数组中的每一个元素都是一个结构体类型的变量。
structPerson
(
charname[20];
intnum;
}teacher[3]={"Li",1,"Zhang”,2,"Sun”,3};
指向结构体变量的指针:
指向结构体对象的指针变量既可以指向结构体变量,也可以用来指向
结构体数组中的元素。
指向结构图变量的指针,其类型必需及结构体变量类型相同。
structStudent*p;
为了运用便利和直观,C语言允许把(*p).num用p->num来代替。
结构体变量做函数参数:
用结构体变量的成员作参数:
例如,用num或stu[2].name作函数实参,将实参值传给形
参
用结构体变量做参数:
用结构体变量做实参时,将结构体变量所占的内存单元的内容全部按
依次传给形参,形参也必需是同类型的结构体变量。
用指向结构体变量:
指针做实参,将结构体变量的地址传给形参。
八指针
内存单元的地址称之为指针。
变量A中存放变量3的地址,称A是B的指针,即A指向B.
定义指针变量:
Type*name
type可以时C语言中的任何一种类型。
指针运算符:
&一元运算符,返回变量的内存地址。
*一元运算符,返回指针所指向变量的值。
指针指向变量:
Inta;
Int*p;
P=&a;
指针赋值:及其他变量一样,指针变量也可以出现在赋值语句中,将
一个指针变量的值赋给另一个指针变量。
指针运算:+和-
Int*p,当前p的值为2000,由于整型数占4个字节,p++的值将变
成2004,p—值将变为1996.p每递增一次就指向下一个整形数,递
减时也一样。
指针比较:
int*p=10,*q=20;
if(p<q)-
•比较的是两个指针所指向的内存地址的大小
指针及数组:
指针及数组是紧密相连的。一个变量有地址,一个数组包含若干
个元素,每个元素都有相应地址,指针变量可以指向数组元素。
Inta[10];
数组名a其实就是一个地址值,记录的数组起先的地址,即a[0]
地址。.
通过指针引用数组元素:
(1)下标法,如a[i]形式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 泌尿系感染患者的舒适护理与措施
- 泌尿外科患者膀胱癌护理
- 泪腺肿瘤口腔护理查房
- 出售转让锅炉协议书
- 婚纱退款协议书范本
- 窗户漏风密封维修服务合同
- 威远的期末考试题及答案
- 2026年心因性头晕脑病诊疗试题及答案(神经内科版)
- 2026年小学体育场地建设服务协议
- 5年(2021-2025)辽吉黑蒙高考政治真题分类汇编专题02 生产资料所有制与经济体制(解析版)
- GB/T 223.11-2025钢铁及合金铬含量的测定滴定法和分光光度法
- 2025年考试题库装饰装修施工员试题及答案
- 第二节 数据及其价值教学设计-2025-2026学年初中信息技术(信息科技)七年级下册甘教版
- 多元化纠纷解决机制研究-洞察与解读
- 道路工程安全生产管理体系及保证措施
- 酶制剂发酵工作业指导书
- 职业病尘肺防治知识培训课件
- 民族区域自治法课件
- 无人机巡查课件
- 2025年校医考试题库及答案讲解
- 机器人技术机械臂
评论
0/150
提交评论