您的当前位置:首页正文

C语言复习

2022-08-19 来源:步旅网


1、程序结构是三种:顺序结构,循环结构(三个结构),选择结构(if和switch)

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

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

4、bit是位 是指0或者1。byte是指字节,1一个字节=8个位。

5、一定要记住二进制如何化成十进制

概念常考到的:

1、编译预处理不是c语言的一部分,不会占运行时间,c语言编程的程序称谓源程序,它以ASCII数值存放在文本中。

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

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

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

5、break可用于循环结构和switch语句

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

一、合法用户标识符考察

1、合法的要求是由字母,数字,下划线组成。有其他元素就错了。并且第一个必须由字符或下划线组成。第一个为数字就错了。

2、关键字不可以做为用户标识符号,main define scanf printf 都不是关键字。迷惑你得地方If是可以做为用户标识符,因为I发的第一个字母大写了,所以不是关键字

二、实行数据的合法形式

2.333e-1就是合法的,且数据是2.333*10-1。考试口诀:e前e后必有数,e后必为整数。

三、字符数据的合法形式

‘1’是占一个字节,“1”是字符串占两个字节(含有一个结束符号)‘0’的ASCII数值为48,‘a’的ASCII数值为97,‘A’的ASCII数值为65。

四、整型一般是两个字节,字符型是一个字节,双精度一般是4个字节

考试的时候一般会说,在16位编译系统或者在32位编译系统。碰到这种情况,不要去管,一样做题,掌握整型一般是两个字节,字符型是一个字节,双精度一般是4个字节就是了。

五、转义字符考察

在程序中int a=0x6d,是把一个16进制的数给变量a,注意这里的0x必须存在

在程序中int a=067,是一个八进制的形式。

在转义字符中,‘\\x6d’才是合法的,0不能写,并且x是小写。

‘\\141’是合法的,0是不能写的。

‘\\108是非法的,因为不可以出现8’8进制。

六、算数运算符的优先级别

同级别的有的是从左到右,有的是从右到左

七、强制类型转换

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

注意(int)(a+b)和(int)a+b的区别,前面是a+b转型,后面是a转型后加b。

八、表达式的考查

是表达式就一定有数值

赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。

自加、自减表达式:a=5,++a是6,a++是5

运行的机理++a是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,再放到变量a中,进行了++a和a++后在下面的程序中在用到a的话都是变量a中的6了。

考试口诀:++在前先加后用,++在后先用后加。

九、位运算的考查

总的处理方法:几乎所有位运算的题目都是按这个流程来处理的(先把十进制变成二进制再变成十进制)

例题:char a=6,b;

b=a<<2(a<>n数值上相当于a的十进制数除以2的n次方)

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

十、018的数值是非法的,八进制是没有8的,逢8进1

十一、%(求模)符号两边要求是整数,不是整数就错了

十二、三种取整丢小数的情况:

1、int a=1.6;

2、(int)a;

3、3/2

第四章

1、printf函数的格式考查

%d对应整型,%c对应字符型,%f对应单精度,-号为左对齐控制符,%ld对应long int,%f对应double。

2、scanf函数的格式考察

注意该函数第二部分是&a这样的地址,不是a

scanf(“%d%d*d%d”,&a,&b,&c)跳过输入的第三个数据

3、putchchar,getchar函数的考察

char a=getchar()是没有参数的,从键盘得到你输入的一个字符给变量a

putchar(“y”)把y输出到屏幕中

4、如何实现两个变量x,y中的数值的互换

不可以把x=y,y=x,要使用中间变量t=x x=y y=t

5如何实现保留三位小数,第四位四舍五入的程序,(int)(a*1000+0.5)/1000.0

注意x=(int)x时小数部分要去掉

第五章

1、关系表达式

表达式的数值只能为1(真)或0(假)

当关系的表达式为真的时候得到1,如9>8这个是真的吗,所以表达式的数值就是1

2、逻辑表达式

只能为1(真),或0(假)

或&&一错全错 与||一对全队 !非相反

!>&&>||优先的级别

注意短路现象,考试比较喜欢考到

要表示x是比0大,比10小的方法,03、if语句

else 是与最接近的if且没有else的相组合的

4、条件表达式

表达式1?表达式2:表达式3

注意当非0的时候是表达式2的数值,当为0的时候是表达式3的数值

考试口诀:真前假后

5、switch语句

一定要注意有break和无break的差别,没有break时候只要一个case匹配了,剩下的都要执行,有break则是跳出switch语句,default可以放在任何位置,也只起标号作用

第六章

1、三种循环结构

for();while()do-while()三种

for循环当中必须是两个分号,千万要记住

写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环

do-while()循环的最后一个while();的分号一定不能丢。这个循环不管条件如何都要先运行一次

2、break和continue的差别

break:是打破的意思,所以看见break就退出整个一层循环

continue:是继续的意思,但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环的开始,然后判断循环条件,进行新一轮的循环。

3、嵌套循环

就是有循环里面还有循环,这种比较复杂,要一层一层的耐心计算,一般记住两层是处理二维数组打的

4、while((c=getchar())!=“\\n”)和while(c=getchar()!=“\\n”)的差别

(!=号的级别高于=号) 注意这里的括号的重要性

第七章 数组

1、一维数组的重要概念

对a[10]这个数组的讨论

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

a是地址常量,所以只要出现a++或者是a=a+2赋值都是错误的

a是一维数组名,所以它是列指针,也就是说a+1是跳一列

2、对a[3][3]的数组讨论

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

a是地址常量,所以只要出现a++或者a=a+2赋值都是错误的

a是二维数组名,所以它是行指针,也就是说a+1是跳一行

a[0]、a[1] 、a[2]也是地址常量,不可以对它进行赋值操作,同时它们都是列指针,a[0]+1、a[1]+1、a[2]+1都是跳一列

注意a和a[0]它们是不同的,它们的基类型是不同的,前者是一行元素,后者是一列元素

3、二维数组做题目的技巧

如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目

步骤1 把他们写成 第一列 第二列 第三列

a[0] 1 2 3 第一行

a[1] 4 5 6 第二行

a[2] 7 8 9 第三行

步骤二

*(a[0]+1)我们就知道是第一行的第一个元素往后跳一列,那么这里就是a[0][1]元素,所以就是2

*(a[1]+2)我们就知道是第二行的第一个元素往后跳两列,那么就是a[1][2]元素,所以是6

数组的初始化,一维和二维的,一维的可以不写,二维的一定要写

int a[]={1,2}合法。int a[][4]={2,3,4}合法,但int a[4][]={2,3,4}非法

二维数组的行指针

int a[1][2]

其中a现在就是一个行指针,a+1跳一行数组元素,搭配(*p)[2]指针

a[0],a[1]现在就是一个列指针,a[0]+1跳一个数组元素,搭配*p[2]指针数组使用

记住脱衣法则

a[2]变成*(a+2) a[2][3]变成*(a+2)[3]再可以变成*(*(a+2)+3)

第八章 函数

函数:是具有一定功能的一个程序块

函数的参数,返回值

main()

{

int a=5,b=6,c;

c=add(a,b)

printf(\"%d\

}

调用函数

a,b是实参

整个函数得到一个数值就是add函数的返回数值

int add(int x,int y)

{

int z;

z=x+y;

return z;

}

被调用函数

x,y是形式参数

函数返回值是整型

1、z就是这个add函数计算后得到的结果,就是函数返回主程序的返回数值,程序是在从上往下顺序执行,当碰到了函数add后,把a,b的数值穿给调用函数,程序暂时中断等待返回数值,当得到了返回数值后,再顺序的往下执行

2、一定要注意参数之间的传递

实参和形参之间传数值和传地址的差别(考试重点)

传数值的话,形参的变化不会改变实参的变化

传地址的话,形参的变化就有可能改变实参的变化

3、一定要有:函数名,函数返回类型,函数的参数类型

不一定要有形参的名称

第十章 指针

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

int *p 中*p和p的差别

*p可以当变量来用,*的作用是取后面地址p里面的数值

p是当作地址来用的

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

4、三名主意

数组名:表示第一个元素的地址,数组名不可以自加,他是地址常量名

函数名:表示该函数的入口地址

字符串常量名:表示第一个字符的地址

第十一章

文件有两类:二进制文件和文本文件

文件指针:FILE *fp;不可忘,它是文件操作重要手段

文件操作有三步,打开文件,读写文件,关闭文件

打开文件:模式要注意,双引号“r”只读(文件要存在)“w”只写(文件必新建)“a”(只写)追加,加b是二进制文件操作,加+号是读写均可,另外fopen()函数失败返回0

读写文件事需注意;当前文件位置是否是文件末尾都用feof(fp)判断,是末尾0,不是非0;几种读写操作函数字符(fgetc,fputs)字符串(fgets,n-1个字符;fputs)数据(fread,fwrite。fprintf、fscanf)文件位置定位(fseek函数格式)

关闭文件;不能忘fclose(fp)成功0失败非0

因篇幅问题不能全部显示,请点此查看更多更全内容