计算机等级考试二级C语言考点精华

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机等级考试二级C语言考点精华
必须牢牢掌握的概念
总体上必须清楚的:
1)程序结构是三种:顺序结构,循环结构(三个循环结构),选择结构(if和switch)2)读程序都要从main。

入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择).
3)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是他的地址.
4)bit是位是指为。

或者1。

byte是指字节,一个字节=八个位.
5)一定要记住二进制如何划成十进制。

概念常考到的:
1、编译预处理不是C语言的一部分,不再运行时间。

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

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

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

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

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

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

第一章
1)合法的用户标识符考查:
合法的要求是由字母,数字,下划线组成。

有其它元素就错了。

并且第一个必须为字母或则是下划线。

第一个为数字就错了。

关键字不可以作为用户标识符号o main define scanf printf都不是关键字。

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

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

2)实型数据的合法形式:
2.333e-1就是合法的,且数据是2.333x10-1。

考试口诀:e前e后必有数,e后必为整数。

.
3)字符数据的合法形式::
,1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。

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

4)整型一般是两个字节,字符型是一个字节,双精度一般是4个字节:
考试时候一般会说,在16位编译系统,或者是32位系统。

碰到这种情况,不要去管,一样做题。

掌握整型一般是两个字节,字符型是一个字节,双精度一般是4个字节就可以了.
5)转义字符的考查:
在程序中inta=0x6d,是把一个十六进制的数给变量a注意这里的Ox必须存在。

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

在转义字符中,’\x6d‘才是合法的,。

不能写,并且x是小写。

741'是合法的,0是不能写的。

708‘是非法的,因为不可以出现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。

9)
位运算的考查:会有一到二题考试题目。

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

例1:char a =6,b;
b =a«2;这种题目的计算是先要把a 的十进制6化成二进制,再做位运算.例2:一定要记住,异或的位运算符号。

0异或1得到1。

0异或。

得到0。

两个女的生不出来。

1异或1得到0。

两个男的生不出来。

考试记忆方法:一男(1)一女(0)才可以生个小孩(1)。

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

10)
018的数值是非法的,八进制是没有8的,逢8进1。

11)%符号两边要求是整数。

不是整数就错了。

12)三种取整丢小数的情况:
1、int a =1.6;
2、(int)a;
3、
1/2;3/2;13)字符型和整数是近亲:
char a =65;
printf(“%c”,a);得到的输出结果:a
print*“%d”,
a);得到的输出结果:65
错了!!为什么,错误的原因是if语句管的范围,最容易误导我们的是if后面的几条语句使我们很常用的交换两个值的语句,使我们容易上当。

这题每个if只管到它之后的第一条语句。

所以在第二个if之后的b=c;c=t仍要执行,所以正确答案应该是2,3,1,15.注释
关于注释的题在二级中出现的次数较少,但是如果在程序分析题中出现,很容易误导考生,因为注释中的内容不进行编译,不会运行注释里面的内容。

int a=10,b=20,c;
c=a+b;
printf("%d",c);
/*注意:在下面的程序中改为
a=-10,b=-20;7
c=a+b;
printf("%d",c);
其实只要清楚注释的功能,这题的答案很显然就是3030,因为注释中的语句时程序不会有任何影响,我们完全可以去掉程序中的语句。

有些人一看到注释就会跳过去,这里出题者故意用“注意”这样的字眼让做题者看注释里面的内容,其实只要记着注释里面的内容与运行结果没有关系就可以了。

6.静态变量static
做题时遇到静态变量就要明白静态变量的生存期,从定义开始到整个程序的结束,也就是静态变量只有程序结束才销毁,这是与动态变量的本质的区别。

例如:
void fun(){
int sum=200:
static int i=0;
i++;
sum++;
printf(w%d,%d\n",i,sum);
}
void main(){
intj;
forO=0;j<5;j++)
fun();
}
结果为:
1,201
2,201
3,201
4,201
5,201
从上面的结果可以看出静态变量与动态变量的区别。

上面程序段中i是静态变量,所以在每次循环之后该变最一直存储在内存中,它的值一直增加。

而sum是动态变量,它每次随着fun函数的结束而销毁,所以for循环中每次执行fun时,sum的初值都为200,自增之后变为201.
7.等号与赋值符号
在C语言中,等于是双等号==,而我们平时用的=在C语言中是赋值符号,所以我们有时候很容易将赋值符号误认为是等于运算,从而导致错误。

在二级考试的时候,出题者往往从这
里做文章,如果一没注意就会使我们上当。

其实我们平时也很容易犯这样的错误。

int a=0;
if(a=l)printf(wyes*);
else printf("no");
如果不太细心,运行结果很容易写成no,答案应该为yes。

if条件a=l,意思不是我们平时说的a等于1,而是把1赋给a,只要把不为0的值赋给a,if条件都是成立的,因此运行结果为yes。

如果把条件改为a==l,那么运行结果就是n。

8.i++和++i
i++和++i对于初学者来说可能不太好理解,知道i++是先运算后自增,++i是先自增后运算,但是知道光知道,并不明白是什么意思。

如果学了C语言一段时间用的多了,可能会觉得比较容易了。

例如
int i=10,j=10;
printf("%d,%d,%d,%d",i,i++J,++j);
运行结果为10,10,10,11.我们主要看一下i++与++j的运行结果,我们写成乂三++,户+小i,j的初值都是10,i++是i先运算后自增,先赋给X,所以x的值是10,即i++的值为10,运算之后i的值变为11.而++j是先自增后运算,j先增1变为11,再运算赋给y,即y的值为11,也就是++j的值是11,运算之后j的值也为11。

当然熟练之后就不用添加变最x,y 了,刚才只是为了便于理解。

9.数据类型转换
C语言中进行运算时,同一表达式中各个变最数据类型要相同,如果不同系统就会自动转换,如整型和浮点型运算时系统会自动转换成浮点型。

如果系统不会自动转换,可以用强制类型进行转换。

像系统能够相互转换的数据类型在进行编译的时候会给出警告,但是考试时就不会有人给你提示了,自己就得小心一点。

例如:
int a=97;
printf("%c",a);
当然考试不会出这么简单的题,我只是举个例子说明一下。

如果不注意,结果可能就写成了97,注意%c,是输出一个字符,所以结果是ASCII为97对应的字符,结果就是a。

还有更容易出错的情况:
int a=6,b=4,c=8,d;
d=a/b*c;
printf("%d",d);
这个题嘛,简单!6/4*8=1.5*8=12。

错了,答案是8,6/4的结果不是1.5,而是1,所以结果是8。

在C语言中,整型数据除以整型数据结果还是整型数据,不可能。

相关文档
最新文档