福建省计算机二级C语言复习资料Word文件下载.docx

上传人:b****3 文档编号:16369678 上传时间:2022-11-23 格式:DOCX 页数:19 大小:419.68KB
下载 相关 举报
福建省计算机二级C语言复习资料Word文件下载.docx_第1页
第1页 / 共19页
福建省计算机二级C语言复习资料Word文件下载.docx_第2页
第2页 / 共19页
福建省计算机二级C语言复习资料Word文件下载.docx_第3页
第3页 / 共19页
福建省计算机二级C语言复习资料Word文件下载.docx_第4页
第4页 / 共19页
福建省计算机二级C语言复习资料Word文件下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

福建省计算机二级C语言复习资料Word文件下载.docx

《福建省计算机二级C语言复习资料Word文件下载.docx》由会员分享,可在线阅读,更多相关《福建省计算机二级C语言复习资料Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。

福建省计算机二级C语言复习资料Word文件下载.docx

10.强制类型转换:

一定是(int)a不是 

int(a),注意类型上一定有括号的。

注意(int)(a+b)和(int)a+b的区别。

前是把a+b算完结果转型,后是把a转型再加上b。

11.自加、自减表达式:

假设a=5,++a(先算a自增为6,后表达式6),a++(先表达式=5在自增a=6)。

++在前先自增后赋,++在后先赋值后自增。

12.逗号表达式:

优先级别最低;

表达式的数值逗号最右边的那个表达式的数值。

如(2,3,4)的表达式的数值就是4。

13.位运算的考查:

口诀:

先转二进制再运算

总的处理方法:

(先把十进制变成二进制再变成十进制)。

例1:

 chara=6,b;

b=a<

<

2;

这种题目的计算是先要把a的十进制6化成二进制,再做位运算P课本229。

14.%符号两边要求是整数。

不是整数就错了。

 

15.变量:

变量的命名规则满足标识符的命名规则,区分大小写,关键字(P7)除外,变量的定义一般都要放在函数或程序的开头位置(即先定义后使用)

16.分号:

表示一个语句结束

17.变量的定义:

类型名变量名列表;

(不同的类型要写成两句),定义的时候给值成为变量的初始化,初始化的时候不能连等(如inta=b=c=1;

是错的!

inta,b,c;

a=b=c=1;

是对的)。

18.变量的赋值:

变量名=表达式或变量名复合赋值运算符表达式(复合赋值运算符:

+=,*=,^=,...),如:

xyz+2=c行吗?

不行(赋值表达式左边只能是变量)!

赋值的时候可以连等。

19.输入一个字符:

x=getchar(),putchar(x),有这两个函数及FILE时一定要加上头文件

#include<

stdio.h>

//标准输入输出的头文件包含

20.getch(),表示暂停程序运行,可直接查看结果,否则运行完后不显示结果(需按ALT+F5)。

21.scanf("

格式控制符"

地址列表),地址列表可为数组名、指针变量名及普通变量名(普通变量名前要加加&

)。

inta;

charb[10];

(字符型char:

%c,字符串:

%s;

整形int:

%d长整型long:

%ld;

浮点型float:

%f,双精度double:

%if)scanf("

%d"

&

a);

scanf("

%s"

b);

数组名b=&

b[0]

22.保留小数点n位:

printf("

%m.nf"

32.6789)或者printf("

%.nf"

a)

23.scanf的格式控制符中,除了逗号,一般不加其他字符;

一定要记住,有逗号时输入要加逗号,否则:

数据用空格隔开,字符连着输入;

没有"

的写法,只有"

%mf"

的写法.

24.常量不能++、--;

=与==的区别(赋值和判断)

例:

b=(a=1,a++,a++),结果为2

又例:

b=(a=2)+(a=3),结果为5

a=1;

b=(++a)+(++a)结果为5

25.在C语言中,对于逻辑运算,非零的数(不管实数还是整数)都认为是真的,真的就是1,假的就是0;

26.关系运算的结果是逻辑值(真为1假为0)。

27.运算符:

运算符的优先序(课本最后一页):

括号,单目(++,--,!

,*,),算术(*,/,%,+,-),关系(<

=,>

,==,!

=之类),位运算(&

,|),逻辑(&

&

,||),条件(判断?

真:

假),赋值(+=,*=之类),逗号表达式

例如.以下程序的运行结果是D

structst

{intn;

floatx;

}*p;

voidmain()

{structstarr[3]={{10,5.6},{12,7.1},{14,6.7}};

p=arr;

printf(“%d\n”,++p->

n);

p++;

printf(“%d,%.2f\n”,p->

n,p->

x);

}

A)12B)11C)11D)12

12,7.1010,5.6012,7.1014,6.70

第三、四章选择和循环结构

1.C程序一般采用自顶向下的编写格式,模块化(函数)

2.C程序结构有三种:

顺序,选择(分支),循环

3.分支结构(或选择结构)[if结构和switch结构]

1.

x=y=z=1;

a=15;

if(!

x)

a--;

elseif(y);

if(z)

a=3;

else

a+=4;

printf("

%d\n"

a);

if分支结构(碰到if与else个数不相等时,从最后的一一搭配)

if(a>

b)

if(a>

c)

%d"

b);

c);

2.多分支switch:

(注意有没break;

main()

{intc;

while((c=getchar())!

='

{switch(c-'

2'

{case0:

case1:

putchar(c+4);

case2:

break;

case3:

putchar(c+3);

default:

putchar(c+2);

}

\n"

);

当输入:

247<

回车>

,程序的输出结果是()

switch(x)

{casex1:

语句1;

[break;

]

...

casexn:

语句n;

[break;

语句;

若计算出表达式的值与case后的所有常量表达式的值都不同则只执行default及之后的语句组一直执行到最后(若遇break则终止退出switch结构),如没有default语句则直接退出switch结构。

intb=10;

for(i=1;

i<

=10;

i++)for(i=1;

i++)

{if(i%2==0)break;

{if(i%2==0)continue;

printf(“%d”,i);

}printf(“%d”,i);

}

printf(“%d”,b);

printf(“%d”,b)

break;

/*用于结束当层循环,跳到当层循环后面的语句。

*/

上例中i=2时,执行break;

退出for循环,执行printf(“%d”,b);

语句。

continue;

/*用于结束当次循环,跳过本次循环后面的语句,进入下次循环,如执行i++。

右边中,i=2时,执行continue;

退出i=2循环,执行i++,即i=3语句,继续判断for循环。

直到不满足for的判断条件i<

=10,退出循环。

循环总结:

•for循环与while循环类似,属于先判断后执行;

dowhile,属于先执行后判断

•for语句中有三个表达式:

表达式1通常用来给循环变量赋初值;

表达式2通常是循环判断条件;

表达式3用来更新循环变量的值

•for语句中的各个表达式都可以省略,但要注意分号不能省略

•如果省略表达式2和表达式3需要在循环体内设法结束循环,否则会导致死循环

•嵌套循环时,必须将被嵌套的循环语句完整地包含在外层循环的循环体内。

一般外层循环控制趟次数或行个数,内层循环控制每行中*之类的个数。

第五章函数

1.系统函数:

数学类函数(出现sqrt,cos,sin等之类的)必须包含头文件#include<

math.h>

输入输出函数#include<

字符串函数(出现strcmp,strcpy,strcat等)#include<

string.h>

2.自定义函数:

格式

类型名函数名(形式参数列表)

{函数体}

3.不写函数类型名默认为整型

4.如果函数类型名为void表示无返回值函数(不写return)

5.

如果调用函数写在被调函数之前,且被调函数类型名不是整型(或字符型),则在调用函数中或调用函数之前应该先声明,如何声明?

声明:

类型名函数名(形式参数列表);

6.函数的递归:

直接或者间接调用自身。

(如阶乘)

7.全局变量:

在函数外定义的变量。

局部变量:

在函数内定义的变量、形式参数、复合语句中定义的变量。

若全局变量和局部变量同名且都有值,则自动屏蔽掉全局变量,使用局部变量值来计算。

8.函数调用时,实参向形参传递:

(注意实参跟形参不仅个数相等,类型也要完全相等)

(1)按值传递:

形参的变化不会改变实参的变化。

(若有返回值将值带回,否则直接返回主函数位置接着执行后续函数,函数的返回值类型与函数类型一致);

(2)按地址传递,一般是用指针来存放地址:

形参的变化就会有可能改变实参的变化。

(3)数组传递,通常就把数组名及数组元素传过去

9.returny;

或return(y);

不要写成returny1,y2;

10.静态变量:

staticintx;

(1)没给值,默认为0;

(2)始终占用内存,其值会保留下来(即只赋初值一次,)

[静态变量]举例

eg:

以下程序的运行结果是(C)。

fun3(intx)main()

{staticinta=3;

{intk=2,m=1,n;

a+=x;

n=fun3(k);

returna;

n=fun3(m);

}printf("

n);

A、3B、4C、6D、9

11.宏定义:

#define标识符字符串宏一定要先替换后计算

分带参和无参宏定义无参宏定义如#definePx*x//表示碰到P时用x*x替换

带参宏定义如#defineP(x)x*x//表示碰到P(x)时用x*x替换

若有定义:

#defineN3+2,则表达式N*2的值为(B)。

3+2*2

A、5B、7C、10D、0

以下程序运行后输出结果是(B)。

#defineMIN(m,n)m<

n?

m:

n

main()

{inta=3,b=5,c;

c=2*MIN(a,b);

A、3B、5C、6D、10

解释:

c=2*MIN(a,b)=2*a<

b?

a:

b2*3<

5?

3:

5。

第六章数组

1.一维数组的定义格式为:

类型说明符数组名[常量表达式];

例如:

inta[10];

或者#defineN5inta[N];

常量表达式可以是整型常量或字符常量或枚举值或符号常量表达式(注意不能包含变量).

2.C语言规定,下标的最小值是0,最大值则是数组大小减1。

eg:

m[8]中,表示数组m有8个元素,下标从0开始一直到7。

这8个数组元素分别是:

m[0]、m[1]、m[2]、m[3]、m[4]、m[5]、m[6]、m[7],注意没有m[8]。

3.对一维数组的初始化赋值

(1)可以只给部分元素赋初值。

没有赋值的元素:

对于数值型数组,自动赋初值为0;

对字符型数组,自动赋初值为空字符。

(2)只能给元素逐个赋值,不能给数组整体赋值。

intm[5]={2,2,2,2,2};

不能写成:

intm[5]=2;

(3)如果给全部元素赋值,则在数组说明中,可以不给出数组元素的个数,其长度等于初值表中数组元素的个数。

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

4.二维数组元素的引用形式:

数组名[行数下标][列数下标];

Eg:

若有定义:

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

则s[2][1]的值为(B)。

A.3B.4C.0D.1

(1)省略一维大小:

Eg:

inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

a[1][2]);

D

A.2B.3C.6D.7

5.字符数组的定义格式:

char数组名[常量表达式];

6.在c语言中,没有专门的字符串变量,通常是用一个字符数组来存放一个字符串,由于字符串总是以‘\0’作为串的结束标志,因此当把一个字符串存入一个数组时,也把结束符‘\0’存入数组,并以此作为该字符串结束的标志

7.C语言允许用字符串的方式对数组做初始化赋值。

有两种方式:

chars[]={‘1’,’2’,’3’,’\0’};

=>

chars[]={“123”};

chars[]=“123”;

8.设已定义chars[]="

\"

Name\\Address\023\n"

;

,则字符串所占的字节数是(B)。

A.19B.16C.18D.14

9.字符串的常用串函数

1strlen函数——测试字符串长度

•格式:

strlen(字符数组);

strlen得到的是有效字符的个数(不包括‘\0’)

sizeof得到的是整个数组的长度(包括‘\0’)

2.strcat函数——字符串连接函数

格式:

strcat(字符数组1,字符数组2);

3.strcmp函数——字符串比较函数

strcmp(字符串1,字符串2);

4.strcpy函数——字符串拷贝函数

strcpy(字符数组1,字符数组2);

⑤.有时只需要复制字符数组2中前面若干个字符,这些用strcpy函数也能实现。

如:

strcpy(m1,m2,3)表示将m2前面3个字符复制到m1中,从而取代m1中最前面的3个字符。

10.冒泡、选择等排序(自我选择掌握一种能够单独写出排序过程,备用编程题2)

第七章指针

1.指针变量的本质是用来放地址,而一般的变量是放数值的。

int 

*p中 

*p和p的差别:

*p可以当做变量来用;

*的作用是取后面地址p指向的数值,p是当作地址来使用。

*p++和(*p)++的之间的差别:

改错题目中很重要

*p++是地址会变化;

(*p)++是数值会要变化。

2.指针变量的定义:

一般形式为:

类型符*指针变量名;

int*p;

3.指针变量的引用。

两种基本的指针运算:

(*p)=p,两符号可以相抵消得

☐&

取变量的地址

☐*:

指针运算符(或称“间接访问”运算符)

4.指针变量作函数参数

[例7.3]用函数实现两个变量的交换

voidswap(int*p1,int*p2)

{int*t;

t=*p1;

*p1=*p2;

*p2=t;

a=9,b=5

{inta=5,b=9;

swap(&

a,&

b);

printf(“a=%d,b=%d\n”,a,b);

}

5.指针函数(函数的返回值为指针)

一般定义为:

类型符*函数名(参数表){……}

[例7.4]把两个数中的最大值设为0

int*max(int*q1,int*q2)

{return*q1>

*q2?

q1:

q2;

x=5,y=0

{intx=5,y=9,*p;

p=max(&

x,&

y);

*p=0;

x=%d,y=%d\n"

x,y);

6.C语言规定:

数组名代表数组的首地址,也就是第一个元素a[0]的地址。

因此:

a&

a[0]。

若:

p=a;

/*或写成p=&

a[0];

*/

则:

p+1&

a[1]*(p+1)a[1]p+i&

a[i]*(p+i)a[i]

【例7.5】指针运算符“*”与增1运算符“++”同时作用于一个指针变量的情况。

{inti,a[]={11,22,33,44,55,66},*p=a;

%3d,"

(*p)++);

11

*p++);

12

*++p);

33

%3d\n"

++*p);

34

for(p=a;

p<

a+6;

p++)

*p);

122234445566

getch();

7.通过指针引用二维数组元素(懂得判断什么时候指地址,什么时候表示值)

*(*(a+i)+j)<

*(a[i]+j)<

a[i][j]<

*(&

a[0][0]+5*i+j)

8.字符指针与字符数组的讨论

⏹占用的内存空间不同

charstr[80];

char*p;

⏹初始化的概念不同

charstr[80]=“abc”;

char*p=“abc”;

⏹数组名是常量,字符指针是变量

str=str+2;

/*Error*/p=str+2;

/*Ok*/

⏹字符数组有一块确定的、连续的内存单元;

而指针只有一个字的内存单元。

所以:

charstr[80],*p;

scanf(“%s”,str);

/*Ok*/scanf(“%s”,p);

/*error*/

⏹指针运算小结

1、指针变量加、减一个整数,指的是移到向上或向下一个单位的地址

例如:

p++、p--、p+i、p-i、p+=i、p-=i等。

2、指针变量赋值

如有:

inta,*p1,*p2,array[10],max(),(*p3)();

p1=&

a;

/*取变量a的地址,使p1指向a*/

p2=array;

/*p2指向array数组的起始地址*/

array[4];

/*p1指向array[4]元素*/

p3=max;

/*p3指向max函数*/

p2=p1;

/*p2的指向与p1的指向相同*/

p1=2000;

x/*error,类型不同*/

a=p2;

x/*error,类型不同*/

9.三名主义:

(考试的重点)

数组名:

表示第一个元素的地址。

数组名不可以自加自减,它是地址常量名。

函数名:

表示该函数的入口地址。

字符串常量名:

表示第一个字符的地址。

10.数组的初始化,一维和二维的,一维可以不写,二维第二个,即列数一定要写

inta[]={1,2}合法。

inta[][4]={2,3,4}合法。

但inta[4][]={2,3,4}非法。

11.两个地址(指针)可以比较大小,后面大前面小;

可以相减表示差几个元素

12.对字符数组或字符串的操作一般用:

while(*s)或while(s[i])或for(p=a;

a+n;

p++)

{…;

s++}{…;

i++}n表示数组长度,有时得用strlen(a)求得

注意:

新生成的字符串填空改错最后一空可能就是让你们补结束符’\0’。

结构体、共用体和枚举

1.记住数组也属于自定义类型

[structstaffa,b;

]//若定义的结构体无结构体名则只能直接定义结构体变量,不能间接定义。

2.通过指针访问结构体变量的成员

①结构变量名.成员名(名字引用);

②结构指针->

成员名(指针引用);

③(*结构指针).成员名(将指针转化为名字引用);

3.『结构变量占用内存情况』每个成员的占用内存的长度之和。

4.联合类型(union)

(1)首地址起共用

(2)共用体变量任何时刻-只有一个成员存在

(3)共用体变量定义分配内存,长度=最长成员所占字节数(即字节数取最大的)

5.枚举类型

enumweekdays{Sun,Mon,Tue,Wed,Thu,Fri,Sat};

(1)枚举型仅适应于取值有限的数据。

(2)取值表中的值称为枚举元素,枚举元素是常量。

在C编译器中,按定义的顺序取值0、1、2、...。

所以枚举元素可以进行比较,比较规则是:

序号大者为大。

例如,上例中的Sun=0、Mon=1、……、Sat=6,所以Mon>

Sun、Sat最大。

(3)枚举元素的值也是可以人为改变的:

定义时由程序指定。

例如,如果enumweekdays{Sun=7,Mon=1,Tue,Wed,Thu,Fri,Sat};

则Sun=7,Mon=1,从Tue=2开始,依次增1。

第九章文件操作与位运算

1.6个位运算符:

位左移<

、位右移>

>

、按位取反~、位与&

、位或|、位异或^。

2.位运算题目计算是先要把十进制化成二进制,再做位运算。

在没有舍去数据的时候,<

左移n位表示乘以2的n次方;

右移一位表示除以2的

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

当前位置:首页 > PPT模板 > 其它模板

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

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