您好,欢迎访问三七文档
12012年3月计算机等级考试必考点汇集(一)、C语言部分1、C语言的基础知识1)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。有其它元素就错了。并且第一个必须为字母或则是下划线。第一个为数字就错了。关键字不可以作为用户标识符号。maindefinescanfprintf都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。2)实型数据的合法形式:2.333e-1就是合法的,且数据是2.333×10-1。考试口诀:e前e后必有数,e后必为整数。.3)字符数据的合法形式::'1'是字符占一个字节,1是字符串占两个字节(含有一个结束符号)。'0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。一般考试表示单个字符错误的形式:'65'1字符是可以进行算术运算的,记住:'0'-0=48大写字母和小写字母转换的方法:'A'+32='a'相互之间一般是相差32。4)整型一般是两个字节,字符型是一个字节,双精度一般是4个字节:考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节,字符型是一个字节,双精度一般是4个字节就可以了。5)转义字符的考查:在程序中inta=0x6d,是把一个十六进制的数给变量a注意这里的0x必须存在。在程序中inta=06d,是一个八进制的形式。在转义字符中,’\x6d’才是合法的,0不能写,并且x是小写。‘\141’是合法的,0是不能写的。‘\108’是非法的,因为不可以出现8。6)算术运算符号的优先级别:同级别的有的是从左到右,有的是从右到左。7)强制类型转换:一定是(int)a不是int(a),注意类型上一定有括号的。注意(int)(a+b)和(int)a+b的区别。前是把a+b转型,后是把a转型再加b。8)表达式的考查:是表达式就一定有数值。赋值表达式:表达式数值是最左边的数值,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了。考试口诀:++在前先加后用,++在后先用后加。逗号表达式:优先级别最低;表达式的数值逗号最右边的那个表达式的数值。(2,3,4)的表达式的数值就是4。例题:2main(){intx,y,z;x=y=1;z=x++,y++,++y;printf(“%d,%d,%d\n”,x,y,z);}程序运行后的输出结果是A)2,3,3B)2,3,2C)2,3,1D)2,2,19)位运算的考查:会有一到二题考试题目。总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。例1:chara=6,b;b=a2;这种题目的计算是先要把a的十进制6化成二进制,再做位运算。例2:一定要记住,异或的位运算符号。0异或1得到1。0异或0得到0。两个女的生不出来。1异或1得到0。两个男的生不出来。考试记忆方法:一男(1)一女(0)才可以生个小孩(1)。例3:在没有舍去数据的时候,左移一位表示乘以2;右移一位表示除以2。10)018的数值是非法的,八进制是没有8的,逢8进1。11)%符号两边要求是整数。不是整数就错了。12)三种取整丢小数的情况:1、inta=1.6;2、(int)a;3、1/2;3/2;13)字符型和整数是近亲:chara=65;printf(“%c”,a);得到的输出结果:aprintf(“%d”,a);得到的输出结果:652、输入和输出1)printf函数的格式考查:%d对应整型;%c对应字符;%f对应单精度等等。宽度的,左对齐等修饰。%ld对应longint;%lf对应double。2)scanf函数的格式考察:注意该函数的第二个部分是&a这样的地址,不是a;scanf(“%d%d%*d%d”,&a,&b,&c);跳过输入的第三个数据。3)putchar,getchar函数的考查:chara=getchar()是没有参数的,从键盘得到你输入的一个字符给变量a。putchar(‘y’)把字符y输出到屏幕中。4)如何实现两个变量x,y中数值的互换(要求背下来)不可以把x=y,y=x;要用中间变量t=x;x=y;y=t。35)如何实现保留三位小数,第四位四舍五入的程序,(要求背下来)这个有推广的意义,注意x=(int)x这样是把小数部分去掉。main(){doublehui;intxy;scanf(“%f”,&hui);scanf(“%d”,&xy);printf(“%f,%d”,hui,xy);}如果从键盘上输入的数据的值是:23回车34.789回车,则最后的输出结果是:3、选择结构特别要注意:c语言中是用非0表示逻辑真的,用0表示逻辑假的。1)关系表达式:表达式的数值只能为1(表示为真),或0(表示假)当关系的表达是为真的时候得到1。如98这个是真的,所以表达式的数值就是1;2)逻辑表达式:只能为1(表示为真),或0(表示假)a)共有&&||!三种逻辑运算符号。b)!&&||优先的级别。c)注意短路现象。考试经常考到。d)要表示x是比0大,比10小的方法。0x10是不可以的(一定记住)。是先计算0x得到的结果为1或则0;再用0,或1与10比较得到的总是真(为1)。所以一定要用(0x)&&(x10)表示比0大比10小。3)if语句else是与最接近的if且没有else的相组合的。嵌套的if….else语句的配对的原则:else总是和之前的最近的没有和其他的else成对的if成对。main(){inta=5,b=4,c=3,d=2;if(abc)printf(%d\n,d);elseif((c-1=d)==1)printf(%d\n,d+1);elseprintf(%d\n,d+2);}执行后输出结果是()。A)2B)3C)4D)编译时有错,无结果4)条件表达式:表达式1?表达式2:表达式3注意是当表达式1的值为:非0时候是表达式2的数值,当为0是就是表达式2的数值。考试口诀:真前假后。5)switch语句:a)一定要注意有break和没有break的差别,书上(54页)的两个例子,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swiche语句。b)switch只可以和break一起用,不可以和continue用。4c)switch(x)x:是整型常量,字符型常量,枚举型数据。{case1:….case后面的只能是常量不能是变量。case2:….}注意:break可以用在循环语句中,也可以用在switch语句中。但是continue语句只能用在循环语句中。例题:main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf(“a=%d,b=%d\n”,a,b);}4、循环结构1)三种循环结构:a)for();while();do-while()三种。b)for循环当中必须是两个分号,千万不要忘记。c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。d)do-while()循环的最后一个while();的分号一定不能够丢。(当心上机改错),do-while循环是至少执行一次循环。复习:三个循环结构的执行过程。while是先判断后执行。do….while是先执行后判断。for()先执行表达式1,判断表达式2,执行循环体中的内容,在执行表达式3.例题:2)break和continue的差别记忆方法:break:是打破的意思,(破了整个循环)所以看见break就退出真个一层循环。continue:是继续的意思,(继续循环运算),但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环。3)嵌套循环就是有循环里面还有循环,这种比较复杂,要一层一层一步一步耐心的计算,一般记住两层是处理二维数组的。4)while((c=getchar())!=’\n’)和while(c=getchar()!=’\n’)的差别先看a=3!=2和(a=3)!=2的区别:(!=号的级别高于=号所以第一个先计算3!=2)第一个a的数值是得到的1;第二个a的数值是3。考试注意点:括号在这里的重要性。main()5{inti=0,s=0;for(;;){if(i==0||i==5)continue;if(i==6)break;i++;s+=i;}printf(“%d”,s);}A、10B、13C、21D、程序进入死循环5、函数函数:是具有一定功能的一个程序块;是C语言的基本组成单位。1)函数的参数,返回数值voidf(intv,intw){intt;t=v;v=w;w=t}main(){intx=1,y=3,z=2;if(xy)f(x,y);elseif(yz)f(y,z);elsef(x,z);printf(“%d,%d,%d\n”,x,y,z);}2)函数的调用:实参和形参之间传数值,和传地址的差别。(考试的重点)按数值传替,形参的变化不会改变实参的变化。(单向传替)按地址传替,形参的变化就会有可能改变实参的变化。(双向传替)3)函数声明的考查:一定要有:函数名,函数的返回类型,函数的参数类型。不一定要有:形参的名称。4)要求掌握的库函数:sqrt()fabs()pow()sin()其中pow(a,b)是重点。23为pow(2,3)。以及sqrt()表示的是一个表达式或者是一个数值的开方。5)函数最后返回值的类型决定于函数的定义类型。6、指针1)、指针变量的本质是用来放地址,而一般的变量是放数值的。int*p中*p和p的差别:*p可以当做变量来用;*的作用是取后面地址p里面的数值p是当作地址来使用。*p++和(*p)++的之间的差别:改错题目中很重要*p++是地址会变化。(*p)++是数值会要变化。若有说明:intn=2,*p=&n,*q=p;则以下的非法的赋值语句是:()6A、p=qB、*p=*qC、n=*q;D、p=n2)、三名主义:(考试的重点)数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。(考了很多次)函数名:表示该函数的入口地址。字符串常量名:表示第一个字符的地址。考试重要的话语:指针变量是存放地址的。并且指向哪个就等价哪个,所有出现*p的地方都可以用它等价的代替。例如:inta=2,*p=&a;*p=*p+2;(由于*p指向变量a,所以指向哪个就等价哪个,这里*p等价于a,可以相当于是a=a+2)指针变量两种初始化方法一:inta=2,*p=&a;(定义的同时初始化)方法二:inta=2,*p;(定义之后初始化)p=&a;3)、给指针变量赋空值之后,不能对该变量进行指针运算。#include“stdio.h”main(){intn,*p=NULL;*p=&n;printf(“请输入数据:”);scanf(“%d”,&p);printf(“结果是:”);printf(“%d\n”,p);}该程序试图通过指针p为变量n读入数据并输出数据,但是程序中有多处错误,以下语句正确的是:()A、intn,*p=NULL;B、*p=&n;C、scanf(“%d”,&p);D、printf(“%d\n”,p);4)返回指针的函数:格式:函数返回值类型*函数名(形式参数列表)int*f(int*x,int*y){if(*x*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*
本文标题:计算机二级必考点
链接地址:https://www.777doc.com/doc-3358084 .html