计算机二级C语言复习资料.docx

上传人:b****5 文档编号:12124103 上传时间:2023-04-17 格式:DOCX 页数:36 大小:462.67KB
下载 相关 举报
计算机二级C语言复习资料.docx_第1页
第1页 / 共36页
计算机二级C语言复习资料.docx_第2页
第2页 / 共36页
计算机二级C语言复习资料.docx_第3页
第3页 / 共36页
计算机二级C语言复习资料.docx_第4页
第4页 / 共36页
计算机二级C语言复习资料.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

计算机二级C语言复习资料.docx

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

计算机二级C语言复习资料.docx

计算机二级C语言复习资料

C语言最重要的知识点复习资料!

总体上必须清楚的:

1)程序结构是三种:

顺序结构,循环结构(三个循环结构),选择结构(if和switch)

2)读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。

3)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是它的地址.

4)bit是位,是指为0或者1。

byte是指字节,一个字节=八个位.

5)一定要记住二进制如何划成十进制。

概念常考到的:

1、编译预处理不是C语言的一部分,不占运行时间,占编译时间。

C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2、每个C语言程序中main函数是有且只有一个。

3、在函数中不可以再定义函数。

4、算法的是一定要有输出的,他可以没有输入。

5、break可用于循环结构和switch语句,continue只用于循环。

6、逗号运算符的级别最低。

第一、二章C语言基础及简单程序设计

1.c语言由什么构成;(函数:

一个C语言程序由一个至多个函数组成,)

2.main()是主函数,该函数既是入口又是出口(一个入口,一个出口)

3.数据类型:

基本数据类型(整型,字符,实型,枚举型),占用内存的字节数,表示范围

4.常量:

123,0101(没有8和9),0x41,'1',-2.30,-1.2E+5

5.在一个字节内,字符通整型,整型通字符

6.合法的用户标识符考查:

合法的要求是由字母,数字,下划线组成,并且第一个必须为字母或则是下划线。

关键字不可以作为用户标识符号。

main define scanf printf都不是关键字。

迷惑你的地方If是可以做为用户标识符。

因为If中的第一个字母大写了,所以不是关键字。

7.实型数据的合法形式:

考试口诀:

e前e后必有数,e后必为整数。

.

2.333e-1就是合法的,且数据是2.333×10-1。

8.字符和字符串数据的合法形式:

  '1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。

'0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。

9.转义字符的考查(p28):

转义符\:

'\n','\0','\ddd','\xdd'等

10.强制类型转换:

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

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

前是把a+b转型,后是把a转型再加b。

 

11.自加、自减表达式:

假设a=5,++a(是为6),a++(为5);

运行的机理:

++a是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,再放到变量a中。

进行了++a和a++后在下面的程序中再用到a的话都是变量a中的6了。

考试口诀:

++在前先加后用,++在后先用后加。

12.逗号表达式:

优先级别最低;表达式的数值逗号最右边的那个表达式的数值。

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

13.位运算的考查:

口诀:

先转二进制再运算

总的处理方法:

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

例1:

 chara=6,b;

b=a<<2; 这种题目的计算是先要把a的十进制6化成二进制,再做位运算。

例2:

 在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以2。

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//标准输入输出的头文件包含

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

21.printf("xxxxxxxxxxxxxxx");或printf("格式控制符",变量列表);变量列表不加&

22.scanf("格式控制符",地址列表),地址列表可为数组名、指针变量名及普通变量名(普通变量名前要加加&)。

23.printf("%m.nf",32.6789)

24.scanf的格式控制符中,除了逗号,一般不加其他字符;一定要记住,有逗号时输入要加逗号,否则:

数据用空格隔开,字符连着输入;没有"%m.nf"的写法,只有"%mf"的写法,float型用"%f",double型用"%lf",longdouble用"%Lf"

25.不同类型的数值型数据进行混合运算

不同类型的数值型数据进行混合运算时,先要把低数据类型向高数据类型转换,成为同一类型后才进行运算。

横向箭头表示必须进行的转换。

逗号运算符是最低的运算符

常量不能++、--;

例:

b=(a=1,a++,a++),

又例:

b=(a=2)+(a=3),

又例:

a=1;b=(++a)+(++a)

=与==的区别(赋值和等号)

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

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

28.运算符:

运算符的优先序(p246):

成单算移关于,异或逻条赋逗。

运算符的结合性(p246):

条件、单目、赋值运算符。

(printf输出也是自右而左运算)

『所有运算符』

 

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

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.{}:

用在函数,或复合语句

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

1.if分支结构

单分支:

if(表达式)语句;或if(表达式){语句组}

双分支:

if(表达式)语句1;

else语句2;

多分支if:

if(表达式1)语句1;

elseif(表达式2)语句2;

...

elseif(表达式n-1)语句n-1;

else语句n;

2.多分支switch:

switch(x)

{casex1:

语句1;[break;]

...

casexn:

语句n;[break;]

default:

语句;[break;]

}

例:

main()

{intc;

while((c=getchar())!

='\n')

{switch(c-'2')

{case0:

case1:

putchar(c+4);

case2:

putchar(c+4);break;

case3:

putchar(c+3);

default:

putchar(c+2);break;

}

}

printf("\n");

}

当输入:

247<回车>,程序的输出结果是()。

(A)689(B)6689(C)66778(D)66887

switch总结:

●其语义是:

先计算出表达式的值,用此值与哪个case后的常量表达式的值相一致,则执行那个case后的语句组,如果语句组后有break语句则直接退出switch结构,如语句组执行后没有break语句则继续执行后续case后的语句组,直到遇到break语句退出switch结构,如没有break语句则会执行后续所有case或default后的语句组再退出switch结构。

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

5.循环语句:

(1)for(表达式1;表达式2;表达式3)或for(表达式1;表达式2;表达式3)

{循环体语句组;循环体语句;

...

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

*/

...

[continue;]/*用于结束当次循环,跳过当次循环后面的语句,进入下次循环。

*/

...

}

(2)while(表达式)while(表达式)

{循环体语句组;循环体语句;

...

[break;]

...

[continue;]

...

}

(3)do

{循环体语句组;

...

[break;]

...

[continue;]

...

}while(表达式);

例:

for(i=1;i<=10;i++)for(i=1;i<=10;i++)

{{

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

printf(“%d”,i);printf(“%d”,i);

}}

6.循环嵌套:

从外循环进来,内循环结束后,再到外循环,如此反复,直到外循环结束)

x=0;或x=0;

for(i=1;i<=2;i++)for(i=1;i<=2;i++)

for(j=1;j<=i;j++){j=1;

x+=i*j;while(j<=i)

{x+=i*j;j++;

}}

7.break可用于switch和循环语句,一个break只退出一层;而continue只对循环有效

8.记住:

质数的判断,斐波那契数列,辗转相除法,求数列的和(有正符号如何处理?

置标志位)

循环总结:

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

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

表达式1通常用来给循环变量赋初值;表达式2通常是循环条件;表达式3用来更新循环变量的值

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

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

•break语句用在循环中时,可以直接终止当前循环,将控制转向循环后面的语句

•continue语句的作用是跳过循环体中剩余的语句而执行下一次循环

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

第五章函数

1.系统函数:

数学类函数(math.h),输入输出函数(stdio.h),字符串类函数(string.h)

2.自定义函数:

格式

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

{

函数体

}

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

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

5.

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

声明:

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

6.函数的递归:

直接或者间接调用自身。

(如阶乘)

7.全局变量:

在函数外定义的变量,如果定义时没给值,默认为0

8.局部变量:

在函数内定义的变量、形式参数、复合语句中定义的变量,如果没给具体的值,该值不确定

9.对于全局变量和局部变量主要观察在函数中是否被重新定义,若全局变量和局部变量同名,则自动屏蔽掉全局变量。

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

(1)按值传递:

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

(若有返回值将值带回,否则带回控制流,函数的返回值类型与函数类型一致);

(2)按地址传递:

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

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

11.如果一个函数名为:

fun(x),严禁出现:

fun(x)=…,不管递归与否(满足标识符命名)

12.returny;或return(y);不要写成returny1,y2;

13.静态变量:

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("%d\n",n);

}

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

14.宏定义:

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

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

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

[无参宏定义]举例

若有定义:

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

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

解释:

N*2=3+2*2=3+4=7。

[带参宏定义]举例

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

#defineMIN(m,n)m

m:

n

main()

{inta=3,b=5,c;

c=2*MIN(a,b);

printf("%d",c);

}

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

解释:

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

a:

b2*3<5?

3:

5。

第六章数组

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

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

inta[10];

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

例如,下面这样定义数组是不行的:

•举例:

1intn;scanf(“%d″,&n);inta[n];

2intk,M=5,a[k],b[M];/*不能用变量说明数组大小*/

3floata[0];/*数组大小为0没有意义*/

4intb

(2);/*不能使用圆括号*/

2.数组元素下标可以是整型常量、变量、变量或整型表达式。

3.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]。

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

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

没有赋值的元素:

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

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

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

不能写成:

intm[5]=2;

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

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

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

数组名[下标1][下标2];

6.二维数组元素的初始化

(1)分行初始化:

存储类型符数据类型数组变量名[行常量表达式][列常量表达式]={{第0行初值表},{第1行初值表},……,{最后1行初值表}};

Eg:

若有定义:

ints[3][4]={{1,2},{0},{3,4,5}};则s[2][1]的值为(B)。

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

(2)省略一维大小:

存储类型符数据类型数组变量名[行常量表达式][列常量表达式]={初值表};

Eg:

inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};printf("%d\n",a[1][2]);

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

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

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

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

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

有两种方式:

(1)按单个字符的方式赋初值,其中必须有一个字符是字符串的结束标记(但字符数组可以不包括’\0’)。

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

10.

(2)直接在初值表中写一个字符串常量。

如chars[]={“123”};{}可以省略

chars[]={‘1’,’2’,’3’,’\0’};<=>chars[]={“123”};<=>chars[]=“123”;

11.设已定义chars[]="\"Name\\Address\023\n";,则字符串所占的字节数是(B)。

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

12.字符串的常用串函数

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

•格式:

strlen(字符数组);

•功能:

测试指定字符串的实际长度(不含字符串结束标志‘\0’),并返回字符串的长度

其中,函数的参数可以是字符型数组名或字符串常数,函数的返回值是字符串的长度。

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

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

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

格式:

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

功能:

把字符数组2中的字符串连接到字符数组1中字符串的后面,同时删去字符串1的串标志‘\0’,组成新的字符串。

该函数返回值是字符数组1的首地址

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

格式:

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

功能:

字符串1和字符串2可以是字符型数组名或字符串常量。

按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果

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

格式:

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

功能:

把字符数组2中的字符串拷贝到字符数组1中。

字符串结束标志‘\0’也一同拷贝。

字符数组2也可以是一个字符串常量,这时相当于把一个字符串赋予一个字符数组

注意:

字符数组1必须定义的足够大,以便能容纳被复制的字符串,字符数组1的长度不应该小于字符串2的长度;

字符数组1必须写成数组名形式,字符数组2可以是字符数组名,也可以是一个字符串常量;

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

如:

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

13.冒泡排序、直接排序、交换排序

14.杨辉三角、矩阵转置(矩阵转置只要循环一半就可以)。

15.一维数组倒序存放、矩阵转置只要循环一半就可以

第七章

指针

⏹本章主要内容:

指针的概念、定义和引用、指针与函数、指针与数组、指针与字符串、指针数据类型小结

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

int *p中  *p和p的差别:

*p可以当做变量来用;*的作用是取后面地址p指向的数值,p是当作地址来使用。

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

改错题目中很重要

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

2.指针变量的定义:

一般形式为:

类型符*指针变量名;如:

int*p;

3.指针变量的引用。

两种基本的指针运算:

☐&:

取变量的地址

☐*:

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

4.指针变量作函数参数

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

voidswap(int*p1,int*p2)

{int*t;

t=*p1;*p1=*p2;*p2=t;

}

main()

{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;}

main()

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

p=max(&x,&y);

*p=0;

printf("x=%d,y=%d\n",x,y);

}

6.函数指针(用一个指针变量存储一个函数入口地址,即指向函数,这样的指针称函数指针)

1.定义形式为:

类型符(*函数指针变量)();如:

int(*p)();

2.使函数指针指向一个函数,一般的格式为:

函数指针变量=函数名;如:

p=max;

3.调用函数。

一般格式为:

(*函数指针)(实参表)如:

c=(*p)(a,b);

[例7.5]通过函数指针调用函数

intmax(intx,inty){returnx>y?

x:

y;}

intmin(intx,inty){returnx

x:

y;}

main()

{inta=5,b=9,c,d;

int(*p)();//定义函数指针

p=max;//指向函数

c=(*p)(a,b);//调用函数

p=min;d=(*p)(a,b);

printf(“Max=%d,Min=%d\n”,c,d);

}

7.指针与数组的关系

一个变量有地址,一个数组包含若干个数组元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址,这个地址就可以用指针来实现存储。

如有:

inta[5],*p,*q;

p=&a[0];q=&a[2];

*p=5;*q=8;则a[0]和a[2]值分别为5和8。

8.C语言规定:

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

因此:

a&a[0]。

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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