主题:浅谈二级C语言笔试应试技巧
http://www.csai.cn 二级C语言笔试只有选择题和填空题两种题型。这两种题型的解题方法有所不同,考生在备考时要深化对基本概念和知识点的理解,并注重实践,同时要作一些针对性的练习,特别是历年真题,从中找出规律性的东西以及解题技巧。
一、选择题 这种类型的题,要求考生从四个待选答案中选择一个正确答案。考生可综合运用直选法,排除法等多种方法。但是这类题目考的知识点往往都比较多且细,容易出错,考生在做这类题时,切忌不加分析,一看就选,从而漏掉正确的答案。如2003年9月笔试第49题: 有以下程序
mai( )
{ int a[3][3],?p,i;
p=&&a[0][0];
for (i=0;i<9;i++) p[i]=i+1;
printf("%d\n",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;i<9;i++) p[i]=i+1;”语句使a[3][3]={1,2,3,4,5,6,7,8,9},所以a[1][2]=6。这里要特别注意C语言中数组的下标从0开始,不要错选a[1][2]=3。
二、填空题 填空题主要考查考生对基础知识的准确理解。对于这类型的题,考生应深刻理解题意,明确题目要求,运用相关知识做出正确回答。在历年考试中,考生这部分试题的得分直接决定考试成绩。由于这部分共20个空,计40分,有的考生能得35~40分,而有的考生却得不到10分,直接拉开了最后成绩。在判卷过程中发现考生常犯的错误有以下几个方面:
1.基础知识掌握不扎实,概念理解不准确。 如2003年9月填空第8题:
main( )
{int a=1,b=3,c=5;
if (c=a+b) printf ("yes\n");
else printf("no");
}
题目问程序运行后的输出结果,答案应是yes。因为“if (c=a+b) printf ("yes\n");”中的条件“c=a+b”是一个赋值语句,c的值为a+b=1+3=4,所以条件为真。而许多考生却把赋值语句“c=a+b”理解为关系表达式“c==a+b”即5=1+3为逻辑假,故答no。
2.答案表述不准确,会做的题却不得分或少得分。 如第12题:
main( )
{int i,n[ ]={0,0,0,0,0};
for(i=1;i<=4;i++)
{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。请填空:
#include
#include
main( )
{char s[80], d[80]; int i, j;
gets(s);
for(i=j=0;s[i]!='\0' i++)
if( ) {d[j]=s[i];j++}
d[j]='\0'
puts(d);
}
答案应是s[i]<='9'&&&&s[i]>='0'或s[i]<=48&&&&s[i]>=57而许多考生却把“>=”,“<=”写成“≥”,“≤”导致不能得分。
3.注意答题卡的号码并不是试题卷上的题号,而是填空的顺序号。许多考生答题时将答案张冠李戴,位置写错,白白丢了分。
总之,只要考生能准确理解基本知识点,善于动手动脑多练习,举一反三,触类旁通,就能从中找出规律性的东西,轻松通过笔试。
一、选择题 这种类型的题,要求考生从四个待选答案中选择一个正确答案。考生可综合运用直选法,排除法等多种方法。但是这类题目考的知识点往往都比较多且细,容易出错,考生在做这类题时,切忌不加分析,一看就选,从而漏掉正确的答案。如2003年9月笔试第49题: 有以下程序
mai( )
{ int a[3][3],?p,i;
p=&&a[0][0];
for (i=0;i<9;i++) p[i]=i+1;
printf("%d\n",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;i<9;i++) p[i]=i+1;”语句使a[3][3]={1,2,3,4,5,6,7,8,9},所以a[1][2]=6。这里要特别注意C语言中数组的下标从0开始,不要错选a[1][2]=3。
二、填空题 填空题主要考查考生对基础知识的准确理解。对于这类型的题,考生应深刻理解题意,明确题目要求,运用相关知识做出正确回答。在历年考试中,考生这部分试题的得分直接决定考试成绩。由于这部分共20个空,计40分,有的考生能得35~40分,而有的考生却得不到10分,直接拉开了最后成绩。在判卷过程中发现考生常犯的错误有以下几个方面:
1.基础知识掌握不扎实,概念理解不准确。 如2003年9月填空第8题:
main( )
{int a=1,b=3,c=5;
if (c=a+b) printf ("yes\n");
else printf("no");
}
题目问程序运行后的输出结果,答案应是yes。因为“if (c=a+b) printf ("yes\n");”中的条件“c=a+b”是一个赋值语句,c的值为a+b=1+3=4,所以条件为真。而许多考生却把赋值语句“c=a+b”理解为关系表达式“c==a+b”即5=1+3为逻辑假,故答no。
2.答案表述不准确,会做的题却不得分或少得分。 如第12题:
main( )
{int i,n[ ]={0,0,0,0,0};
for(i=1;i<=4;i++)
{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。请填空:
#include
#include
main( )
{char s[80], d[80]; int i, j;
gets(s);
for(i=j=0;s[i]!='\0' i++)
if( ) {d[j]=s[i];j++}
d[j]='\0'
puts(d);
}
答案应是s[i]<='9'&&&&s[i]>='0'或s[i]<=48&&&&s[i]>=57而许多考生却把“>=”,“<=”写成“≥”,“≤”导致不能得分。
3.注意答题卡的号码并不是试题卷上的题号,而是填空的顺序号。许多考生答题时将答案张冠李戴,位置写错,白白丢了分。
总之,只要考生能准确理解基本知识点,善于动手动脑多练习,举一反三,触类旁通,就能从中找出规律性的东西,轻松通过笔试。