C语言基础知识点总结Word文档格式.docx

上传人:b****7 文档编号:22835910 上传时间:2023-02-05 格式:DOCX 页数:20 大小:27.81KB
下载 相关 举报
C语言基础知识点总结Word文档格式.docx_第1页
第1页 / 共20页
C语言基础知识点总结Word文档格式.docx_第2页
第2页 / 共20页
C语言基础知识点总结Word文档格式.docx_第3页
第3页 / 共20页
C语言基础知识点总结Word文档格式.docx_第4页
第4页 / 共20页
C语言基础知识点总结Word文档格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C语言基础知识点总结Word文档格式.docx

《C语言基础知识点总结Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言基础知识点总结Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。

C语言基础知识点总结Word文档格式.docx

注意int的最大表示范围是-32768――+32767,当超过这个范围的时候,即以%d输出+32768时结果为-32768

长整型(long)表示方法是在数字后面加L,如果一个变量a=3,那么表示的是一个整型的3,如果是a=3L,那么就是长整型的3;

当分别以%o,%ld,%x(8进制,长整型,16进制)输出的时候,结果没有前面的0,0X,和后面的L

例:

inta=075,b=ox14;

longintc=5L;

printf(“%o,%x,%ld”,abc);

结果为(75,14,5)

P22第5、11、9题等

2.转义字符:

\n\t\\\’\”\ddd(1-3位八进制所代表的字符)\xhh(1-2位十六进制所代表的字符)这个书上习题特别多,P25第19题,P120第3题,P138第16题P147第14题P152第2题等

3.sizeof()和strlen():

sizeof()测试字符串的存储长度;

strlen()测试字符串长度,只计算遇到的第一个\0前面的字符个数。

strlen(“abc\089”)=3strlen(“abc\012”)=4

注意这个例题:

chara[30]=“abc\0b”;

sizeof(a)=30;

sizeof(“abc\0b”)=6;

strlen(a)=3strlen(“abc\0b”)=3;

4.运算符和表达式:

记忆书上附录里的运算符优先级(一定要记住常用的)

(1)算术运算符和算术表达式:

注意自增++,自减--,自反-,

++,--,当++,--,在变量后面的时候表示在本次运算的时候不会改变,在下次引用或者参与运算的时候才会自变;

当++,--,在变量的前面的时候则是在本次运算就会发生自变(顺便掌握++,--结合性是右结合,若i+++j等价于(i++)+j;

(2)关系运算符:

>

,<

=,>

=,==,!

=,==和!

=优先级最低。

注意=与==的区别:

=是赋值的意思,表达式的值是对变量赋的值,==是关系运算符,关系运算表达式的值为0或者1(关系运算的结果本应是逻辑值,但C语言中没有逻辑数据类型,因此用整型数据来表示关系运算的结果)。

(3)逻辑运算符:

&

,||,!

在这几个中优先级!

大于&

大于||,优先级是体现在结合性上而不是运算的先后性上。

例如

a=b=c=1;

d=++a||++b&

++c

在这个里面&

最高那就是加粗部分先看成一个整体,运算顺序还是从++a开始,即做完这个运算后,可以依次判断出后边的运算式子没有必要计算了,所以d=1,a=2,b=1,c=1

(4)赋值运算符:

简单赋值运算符“=”其左边必须是变量。

一般形式:

变量名=表达式

复合赋值运算符:

+=、-=、*=、/=、%=、<

<

=、>

=、&

=、^=、|=。

注意当等号后面接的是表达式的时候要把表达式看成一个整体即x*=y+8等价于x=x*(y+8),y+8是一个整体

(5)条件运算符:

由两个符号“?

”和“:

”构成,

表达式1?

表达式2:

表达式3

先计算表达式1的值,如果值为真(非0),则将表达式2的值作为条件表达式的值,否则将表达式3的值作为条件表达式的值。

(6)逗号运算符和逗号表达式

表达式1,表达式2,……,表达式n

求值时从左至右依次计算,最后计算表达式n的值,并将表达式n的值作为逗号表达式的值。

#include<

stdio.h>

voidmain()

{inta;

printf(“%d\n”,(a=3*8,a*4,a+5));

}该程序的输出结果为29,变量a的值为24,注意此处考察了逗号表达式、逗号和赋值符号的优先级。

=优先级高于,的优先级。

(7)位运算符和位表达式(参考教材P17-18)

位运算符有|(或)即只要有一个1就是1,&

(与)要全部为1才为1^(异或)要不相同才为1;

注意的是当向左移动n位就是乘以2的n次方;

向右移动n位就是除以2的n次方。

(8)强制类型转换运算符

强制类型转换的一般形式:

(类型名)表达式

表达式(double)(x+y),是将x+y的值转换为double类型后得到的值,变量x,y和表达式x+y都保持原来的数据类型。

C程序的输出

printf()函数的一般形式为:

printf(“格式控制字符串”,输出表列);

格式控制包括两种信息:

(1)格式说明:

由%和格式字符组成。

如%d、%f等。

作用是将输出的数据转换为指定的格式输出。

格式说明总是由%字符开始。

(2)普通字符:

即需要原样输出的字符。

如逗号、空格和换行符。

所以在写程序输出结果时,这种字符要原样写出来。

putchar()函数的作用是向终端输出一个字符。

putchar(c),输出字符变量c的值,c可以是字符型变量或整型变量。

%d,%md,%m.nd,%e,以及相应的几种格式是什么意思

C程序的输入

scanf()函数的一般形式为:

scanf(“格式控制字符串”,变量地址表);

这里的格式控制与printf()中的一样。

变量地址表是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。

getchar()函数的作用是从终端输入一个字符。

gechar函数没有参数,一般形式:

getchar()

常用数学类标准库函数的简单应用:

abs()、fabs()、fmod()、sin()、cos()、tan()、exp()、pow()、log()、log10()、sqrt()。

参考教材

第二部分C程序的基本控制结构

分支结构

1.if语句与程序的单分支结构

形式:

if(表达式)

语句

功能:

若表达式的值为真,则执行语句。

注意,当函数作为if里面的表达式的时候即if(printf(“*”))的时候,则是以函数的返回值判断if的真假,printf输出以1个字符则返回为1,所以这个if是真的;

2.if……else语句与程序的双分支结构

语句1

else

语句2

若表达式的值为真,则执行语句1,否则执行语句2

3.复合语句及其在程序中的使用

复合语句是用一对花括号“{}”将若干条C语句括起来形成的语句序列。

复合语句的基本形式如下所示:

{语句1;

语句i;

语句n;

}

注意:

C语言的复合语句右括号“}”后不需要用分号“;

”结尾,如果在程序中有如下形式的语句格式出现,则应认为是复合语句后面跟了一个空语句:

{语句序列;

};

/*最后的分号是空语句*/

4.if语句的嵌套与程序的多分支结构

C语法规定else必须与最近的if相匹配。

5.switch语句与程序的多分支结构

switch(表达式)

{case常量表达式1:

语句组1;

case常量表达式2:

语句组2;

………

case常量表达式n:

语句组n;

default:

语句组n+1;

a)常量表达式必须为整型、字符型或者枚举型,且值必须互不相同

b)case后可包含多个可执行语句,且不必加{}

c)多个case可共用一组执行语句

d)当表达式的值和某个case后面的语句相匹配时,则执行相应case后面的语句,并继续执行之后的语句。

若不希望继续执行之后的语句,则使用break语句跳出switch语句。

参考P40,11题

循环结构(执行过程参考课件)

1.while型循环

while(表达式)

语句

注意在while()后面没有;

号,当函数或者赋值表达式放在while的()中时与if的判断方法一样,判断函数的返回值或表达式值的逻辑值;

若表达式的值为真(非0),则执行语句(循环体),否则结束循环;

2.do….while型循环

do

while(表达式)

先执行语句(循环体)一次,再判断表达式的值是否为真(非0),若为真,则继续循环否则终止循环。

同while()型循环相比,while()是先判断条件后执行语句,而do…while则是先执行语句后判断条件,无论如何都会先执行一次。

3.for型循环

for(表达式1;

表达式2;

表达式3)

for(i=1;

i<

100;

i++)

s=s+i;

(注意for括号的后面没有;

号)

当有两个for语句即嵌套的for循环的时候

4;

for(j=0;

j<

5;

j++)

s=s+i;

这个时候是先做i=1;

然后判断i;

然后做加粗的部分,即是把加粗部分看成一个整体做完之后才会回到i++;

所以s=s+i;

这个语句做了20次。

不论是笔试的编程还是上机题,都会考到循环。

所以一定要认真复习控制结构这一部分内容。

如下面的一段程序,输出结果是什么?

我们学习一定要把每一个知识点牢固掌握。

书上的练习特别多,大家要学会举一反三。

{

inta[5]={1,2,3,4,5};

inti,j;

for(i=0;

i++)

{

for(j=i;

j++)

printf("

%d"

a[j]);

if(j==5)

for(j=0;

i;

printf("

\n"

);

}

4.空语句及其在程序中的使用

所谓的空语句就是说没有执行代码,只有一个语句结束的标志:

分号

例如模拟题选择第15题

5.循环的嵌套(只要求到3层)这类题,书上有很多的习题,主要是掌握程序的执行过程。

参考课件,书上的习题多做练习

6.总结if,for,whlie,后面如果没有{}的时候,即是只有一个简单的语句的时候,if,for,whlie的作用效力范围是到与之最近的分号结束;

当有{}的时候即是把{}看成一个整体,控制范围是整个{}里面的所有语句。

其他简单控制结构(重点)

1.break(参考课件)

在循环语句和switch语句中,终止并跳出循环体或开关体

break只能终止并跳出最近一层的结构

break不能用于循环语句和switch语句之外的任何其它语句之中

2.continue(参考课件)

结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断

仅用于循环语句中

控制结构应用举例(重点)

1.累加、累乘、最大公约数、最小公倍数、阶乘、素数等简单问题求解方法

参考书上P36-38

2.穷举思想及程序实现

3.迭代思想及程序实现(其中包括:

一元高阶方程求根的二分迭代解法)。

第三部分函数与程序结构

函数的定义与调用

1.

(1)定义:

(看课件、C语言教材)

无参函数的定义:

[类型标识符或void]函数名()

说明语句;

执行语句;

有参函数定义:

[类型标识符或void]函数名(类型形参1,类型形参2,…)

当主函数里面带参数的形式,main(intargc,char*argv[])中argc是表示参数的个数,argv这个数组储存的是具体的参数个数。

例,

voidmain(intargc,char*argv[])

{char**p;

while(--argc)

{*p=argv[argc];

puts(*p);

}

若输入为chinaBeijingflie则结果为:

flieBeijing;

(2)声明经常考填空题,无论是上机还是笔试

(3)调用常考题,容易考填空和写输出结果题,注意在调用的时候,函数名(实参列表)括号里面一定是实参,要特别注意哦,参考书上的习题认真练习。

(4)返回值(包括基本类型、空类型)参考课件及相关教材

2.函数调用时的值参数传递,一定要注意,做这种题,要先弄清楚形参和实参。

(1)分清形参和实参的区别:

✧形参是在定义或声明中,实参是在引用当中;

当函数名前有int,float,char等类型名时是定义或者声明,但是要排除省略类型名的情况;

一般引用出现在主函数中,

✧形参是不确定的值,因此不能为常量,实参是确定的值所以可以为常量。

(2)当实参是一个变量的时候,实参向形参传递值,只是个简单的值传递,不会改变实参的值;

当是实参是地址传递的时候就要改变

(1)intsub(intx,inty)

{intc=x;

x=y;

y=c;

voidmain()

{inta=3,b=2;

sub(a,b);

printf(“%d,%d”,a,b);

}结果是3,2

(2)intsub(int*x,int*y)

{intc=*x;

*x=*y;

*y=c;

{inta=3,b=2;

sub(&

a,&

b);

}结果是2,3

书上这类题特别多,认真练习!

注意形参和实参必须赋值兼容,也就是说形参和实参维数必须一样;

注意区别void和return;

(参考教材和课件)

3.嵌套调用

常考阅读程序题,理解书上P75的图

4.递归调用理解概念,会做模拟题选择第18题类似题目

5.简单问题的递归函数设计(例:

阶乘、Fibonacci数列、整型数据的数字拆分处理等)

书上有很多关于数字拆分、阶乘的题目,一定要掌握。

变量的作用域和生存期

1.作用域(全局变量的定义和使用、局部变量的定义和使用)

要严格区分全局变量和局部变量,分清楚各自的作用范围

2.生存期(存储类别符extern和static对全局变量的作用;

存储类别符auto和static对局部变量的作用)

特别注意static和extern

编译预处理

1.宏定义预处理命令的概念和简单应用(包括带参和不带参宏定义);

(1)宏替换的时候只是简单的字符替换,不要加任何东西,宏名中不能包含空格;

#definexx(m)m*m

……inti=5;

i=i+xx(4+5);

结果为i=5+4+5*4+5=34;

(2)宏替换是在预编译的时候进行,所以不占用程序运行时间;

宏名是无类型的;

2.文件包含预处理命令的使用方法;

文件包含命令的一般形式为:

#include“文件名”或者#include<

文件名>

,注意这两种表示形式是有区别的。

第四部分指针与函数

指针变量的定义和引用

1.指针变量的定义、初始化、赋值和引用;

基本概念参考书上,注意指针变量的初始化和赋值。

例inta,*p=&

a,这是定义了一个指针变量并进行了初始化,特别注意这个时候的初始化用的是*p=&

a,这里面的*代表的是指针类型,而不是取值。

例inta,*p;

p=&

a,定义完变量之后再引用的话就不要加*了。

我们的*有两种含义,一种是定义变量的时候,是我们的指针标志,除了定义之外,我们的*代表取指针变量所指地址中的内容,与&

为互逆运算。

2.C语言中的地址运算;

取变量的地址。

单目运算符、优先级为2、右结合性。

i=5;

pi=&

*:

取指针变量所指地址中的内容,与&

单目运算符、优先级为2、右结合性

指针变量作函数的参数

1.函数调用时的地址参数传递;

P91第13、14、15、16等,这类例题特别多,要特别注意

2.指针变量与指针指向变量的区别;

(1)存放变量地址(指针)的变量称为指针变量。

int*i_pointer;

则变量i_pointer就是指针变量,它的值是某个整型变量的地址,即i_pointer可指向一个整型变量。

到底指向哪一个整型变量,应由i_pointer中赋予的变量地址来决定。

(2)若一个指针或指针变量指向某个变量,可通过该指针访问这个变量,这种访问称为间接访问。

如将i的地址(指针)赋给i_pointer,即i_pointer=&

i,则i_pointer所指向的变量就是i,用*i_pointer表示,此时与i(直接访问)等价。

函数的指针

1.指向函数的指针变量的定义;

用于存储函数指针的变量称为指向函数的指针变量,定义方法为:

类型说明符(*指针变量名)(形式参数列表)

int(*p)(int,int);

表示定义了一个指针变量p,能够指向的函数特征是由两个整型形式参数,返回值是整型数据

2.用指向函数的指针变量来调用函数;

调用方法(*p)(实参表)

3.指向函数的指针变量作函数参数;

P90,第11题

4.返回指针值的函数;

P94第1题

区别函数指针和指针函数的技巧:

1.函数指针和指针函数都是偏正短语。

函数指针的中心词是指针,保存函数的地址。

而指针函数的中心词是函数,是一个返回值是指针的函数。

在判断时,按照优先级的结合性来判断:

2.如:

int*p()因为()的优先级高,先与p结合,所以p()是一个函数,函数作为中心词,又因为前有*,所以是一个返回值是指针的函数。

3.int(*p)()因为*先与p结合,所以整体是一个指针,指针是中心词,又因为后面有(),所以是一个函数指针,保存函数的地址。

如执行语句p=&

a;

1.&

*p的含义是什么?

和*两个运算符的优先级别相同,但按自右而左方向结合,因此先进行*p的运算,它就是变量a,再执行&

运算。

因此,&

*p与&

a相同,即变量a的地址。

2.*&

a的含义是什么?

先进行&

a运算,得a的地址,再进行*运算,即&

a所指向的变量,也就是变量a。

*&

a和*p的作用是一样的,他们都等价于变量a,即*&

a与a等价。

3.(*p)++相当于a++。

注意括号是必要的,如果没有括号,就成为了*p++,而++和*为同一优先级别,而结合方向为自右而左,因此它相当于*(p++)。

由于++在p的右侧,是“后加”,因此先对p的原值进行*运算,得到a的值,然后使p的值改变,这样p不再指向a了。

第五部分数组及简单应用

数组

1.一维数组的输入输出,当数组是int(整型的时候)

一个有n个元素的一维数组:

输入:

n;

scanf(“%d”,&

a[i]);

输出:

printf(“%d”,a[i]);

注意int类型要以%d的格式

2.一个有n行m列的二维数组:

for(i=0;

i<

i++)(这里i控制行,j控制列)

for(j=0;

m;

scanf(“%d”,&

a[i][j]);

i++)

for(j=0;

j<

j++)

printf(“%d”,a[i][j]);

(注意在输入的时候才有&

符号,输出的时候没有)

3.对一个有n个元素的数组的遍历(既是说从第一个成员访问到最后一个成员)有以下两种方式:

(1)for(i=0;

i++)

(2)for(i=0;

a[i]!

=’\0’;

a[i];

(都是指从a[0]访问到a[n-1])a[i];

4.chara[10];

while(a[i])和while(a[i]!

=’\0’)都是表示当a数组不结束的情况下继续循环,一般就是指访问整个数组

5.自编函数实现求字符串的长度:

intfun(char*a)intfun(char*s)

{intk;

{char*p;

p=s

whlie(a[k])whlie(*p)

k++;

p++;

retrun(k-1);

}retrun(p-s);

}

6.维数的判断,当*,[]前面有int,char,float等常见的类型名的时候表示是在定义,一个*或者[]表示升一维,当表达式前面没有int,char,float的时候则是在引用(或称为使用)一个*或者[]表示降一维;

数组的简单应用(本部分内容参考书上程序)

1.数组元素值的随机生成法(标准库函数srand.rand.和time的使用方法);

2.常用排序方法(冒泡排序法和选择排序法);

3.常用查找法(直接查找法和二分查找法);

第六部分字符数据、字符串(字符数组)数据及其简单应用

C语言字符串表示方法

1.字符串(字符数组)的定义和初始化方法;

2.字符串数据的输入方法(scanf函数和gets函数的使用);

一个字符数组即chara[10];

对这个的输入有两种方式

scanf(“%c”,&

(2)gets(a);

scanf(“%s”,a)(注意这两种方式的括号里面的只能是一个数组名)

3.字符串数据的输出方法(printf函数和puts函数的使用);

输出也对应有两种方式:

(1)for(i=0;

printf(“%c”,a[i]);

(2)puts(a);

printf(“%s”,a);

(注意这两种方式的括号里面的只能是一个数组名);

字符串的常用处理方法(本部分内容参考书上程序)

1.字符类别的判断方法和大小写字母的转换方法;

2.字符串中有效数字字符的统计方法;

3.字符串的复制方法;

4.字符串的连接方法;

5.字符串中字符的查找、插入和删除方法;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1