二级C语言笔试案例分析解答
二级C语言笔试只有两种题型:选择题和空题。两种题型有不同的解题方法。考生要加深对基本概念和知识点的理解,备考时要注意实践。同时要做一些针对性的练习,尤其是历年真题,找出规律性的东西和解题技巧。
一、多项选择题
这种题型要求考生从四个待选答案中选择一个正确答案。候选人可以综合运用直选、排除等方法。但是这些题的知识点往往比较细,容易出错。考生在做这些题的时候,要避免不加分析就一眼做出选择,从而错过正确答案。比如2003年9月笔试第49题:
有以下程序
麦( )
{ int a[3][3],p,i;
p = & & a[0][0];
for(I = 0;i printf("%d ",a[1][2]);
}
运行程序后的输出结果是
(A)3 (B)6 (C)9 (D)2
这道题的主要知识点是:(1)数组和指针的关系;(2)数组的初始化和数组元素的引用。在C语言中,数组与指针密切相关。任何可以用数组下标完成的操作也可以用指针完成。语句" p = & & a[0][0];"P指向数组中的第0个元素,即a[0][0],指针变量P存储数组元素a[0][0]的地址。由于数组元素在内存中是连续存储的,所以我们可以通过指针变量p来访问数组中的任意元素,在这个问题中,“for(I = 0;二。填写空问题
填空题主要考察考生对基础知识的准确理解。对于这类题型,考生要深刻理解题意,明确题型要求,运用相关知识做出正确答案。在往年的考试中,考生这部分题目的分数直接决定了考试成绩。因为这部分有20 空,算40分,所以有的考生能拿到35~40分,有的考生拿不到10分,直接拉开了最后的分数。在阅卷过程中,发现考生常犯的错误如下:
1.基础知识不扎实,概念理解不准确。
例如,2003年9月,填写空问题8:
主( )
{int a=1,b=3,c = 5;
if(c = a+b)printf(" yes ");
else printf(" no ");
}
问一下程序运行后的输出结果,答案应该是肯定的。因为“if(c = a+b)printf(" yes ");”中的条件“c=a+b”是一个赋值语句。C的值是a+b=1+3=4,所以条件成立。但很多考生将赋值语句“c=a+b”解读为关系表达式“c==a+b”,即5=1+3在逻辑上是假的,所以回答没有。
2.答案不准,但会做的题不计分或少计分。
例如,问题12:
主( )
{int i,n[ ]={0,0,0,0,0 };
for(I = 1;我{n[i]=n[i-1]2+1;
printf("%d ",n[I]);
}
}要求程序运行,输出结果是_ _ _ _。答案是“1 3 7 15”。很多考生虽然写对了,但是在每个数字后面加了标点符号,所以无法归类为“1,3,7,15”或者“1。3.7.15".
另一个例子是问题19:
下面这个程序的作用是将字符串S中的数字字符放入数组D中,最后输出D中的字符串;比如输入字符串:abc123edf456gh,执行后输出:123456。请填写空:
#包括
#包括
主( )
{char s[80], d[80]; int i, j;
{char s[80],d[80];int i,j;
0条评论