论文部分内容阅读
根据全国考生的答题情况,教育部考试中心最新统计出了全国计算机等级考试(NCRE)各级各科不同题目的得分情况。在最近的几期里,本刊已独家发布教育部考试中心对于二级C++、VB、VF、Access,三级数据库、网络等科目的重难点真题进行的权威点评,欢迎大家把自己的备考心得用邮件告诉CFan(E-mail:[email protected])。
2008年下半年二级C语言程序设计的全国报考人数为50.99万人,笔试试卷的整卷难度为0.57,整卷的信度达到了0.89。本次考试二级C全国取证率为32.3%。全卷的难度适中,信度较好。现就将本次考试中的部分难题做简要分析,以帮助考生复习备考,取得满意的成绩。
选择题第32题:
有以下程序
#include
void fun( int a, int b )
{intt;
t=a; a=b; b=t;
}
main()
{intc[10]={1,2,3,4,5,6,7,8,9,0}, i;
for (i=0; i<10; i+=2)fun(c[i], c[i+1]);
for (i=0;i<10; i++)printf("%d,", c[i]);
printf("\n");
}
程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,0,
B)2,1,4,3,6,5,8,7,0,9,
C)0,9,8,7,6,5,4,3,2,1,
D)0,1,2,3,4,5,6,7,8,9,
【答案】A
【分析】
(1)该题考生答对率只有29.6%,59.1%的考生选择了错误项B。
(2)这是一道典型的调用函数与被调用函数之间数据传递的问题。在调用函数时,实参的值将传送给对应的形参,但形参的变化不会影响对应的实参。教材例7.3(P.82)深刻地说明了这个过程。估计很多考生知道这一点,但理解不够深刻,故一旦试题更换格式,就会出错。
(3)这道题区分度较高,达到0.347,说明是一道好题。
选择题第40题:
有以下程序
#include
main()
{ FILE *pf;
char *s1="China", *s2="Beijing";
pf=fopen("abc.dat","wb+");
fwrite(s2,7,1,pf);
rewind(pf); /*文件位置指针回到文件开头*/
fwrite(s1,5,1,pf);
fclose(pf);
}
以上程序执行后abc.dat文件的内容是
A)China B)Chinang
C)ChinaBeijing D)BeijingChina
【答案】B
【分析】
(1)只有28.5%的考生答对,有37.9%的考生选择了D。属于本套试卷里最难的选择题。
(2)在文件使用方式上,本题使用的是“wb+”,意思是为写建立一个新的二进制文件,并在读和写过程中,可以由位置函数设置读和写的起始位置。为降低试题难度,本题特地在语句rewind(pf);后面有注解提示:文件位置指针回到文件开头。因此,在写入字符串“Beijing”后,文件指针回到文件头,再写入“China”,文件的内容就成为“Chinang”,正确答案是B。
(3)该题区分度0.375,属好题。
填空题第8题:
以下程序的输出结果是___。
#include
main()
{int i,j,sum;
for(i=3;i>=1;i--)
{sum=0;
for(j=1;j<=i;j++)sum+=i*j;
}
printf("%d\n",sum);
}
【答案】1
【分析】
(1)本题只有19.2%的考生答对。
(2)该题考核考生做题时的细心。在第一个for循环体中,由于每次循环都将sum置0,因此,影响sum值的因素就只与最后一次循环语句相关,此时,i为0,j为1,sum只能是1了。
(3)这道题本身不难,如果考生能够仔细阅题,掌握关键点,就不会出错了。
填空第9题:
以下程序的输出结果是___。
# include
main()
{ intj, a[]={1,3,5,7,9,11,13,15}, *p=a+5;
for(j=3;j;j--)
{switch ( j )
{ case1:
case2:printf("%d", *p++);break;
case3:printf("%d", *(--p));
}
}
}
【答案】9911
【分析】
(1)本题只有16.3%的考生答对,是难题。
(2)该题主要考核考生三个方面的知识,一是选择结构switch语句,一个是自加减运算,另一个是指针。j=3时,执行printf("%d", *(--p));语句,结果是输出9;j=2时,执行printf("%d", *p++); break; 结果是输出9,这是答对本体的关键!*p++指的是使*p作为表达式的值,然后使指针变量p本身增1;j=1时,执行空语句后,继续执行case2语句,此时输出11。所以本题的答案是9911。
(3)属于综合题,需要考生较深的基本功。
2008年下半年二级C语言程序设计的全国报考人数为50.99万人,笔试试卷的整卷难度为0.57,整卷的信度达到了0.89。本次考试二级C全国取证率为32.3%。全卷的难度适中,信度较好。现就将本次考试中的部分难题做简要分析,以帮助考生复习备考,取得满意的成绩。
选择题第32题:
有以下程序
#include
void fun( int a, int b )
{intt;
t=a; a=b; b=t;
}
main()
{intc[10]={1,2,3,4,5,6,7,8,9,0}, i;
for (i=0; i<10; i+=2)fun(c[i], c[i+1]);
for (i=0;i<10; i++)printf("%d,", c[i]);
printf("\n");
}
程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,0,
B)2,1,4,3,6,5,8,7,0,9,
C)0,9,8,7,6,5,4,3,2,1,
D)0,1,2,3,4,5,6,7,8,9,
【答案】A
【分析】
(1)该题考生答对率只有29.6%,59.1%的考生选择了错误项B。
(2)这是一道典型的调用函数与被调用函数之间数据传递的问题。在调用函数时,实参的值将传送给对应的形参,但形参的变化不会影响对应的实参。教材例7.3(P.82)深刻地说明了这个过程。估计很多考生知道这一点,但理解不够深刻,故一旦试题更换格式,就会出错。
(3)这道题区分度较高,达到0.347,说明是一道好题。
选择题第40题:
有以下程序
#include
main()
{ FILE *pf;
char *s1="China", *s2="Beijing";
pf=fopen("abc.dat","wb+");
fwrite(s2,7,1,pf);
rewind(pf); /*文件位置指针回到文件开头*/
fwrite(s1,5,1,pf);
fclose(pf);
}
以上程序执行后abc.dat文件的内容是
A)China B)Chinang
C)ChinaBeijing D)BeijingChina
【答案】B
【分析】
(1)只有28.5%的考生答对,有37.9%的考生选择了D。属于本套试卷里最难的选择题。
(2)在文件使用方式上,本题使用的是“wb+”,意思是为写建立一个新的二进制文件,并在读和写过程中,可以由位置函数设置读和写的起始位置。为降低试题难度,本题特地在语句rewind(pf);后面有注解提示:文件位置指针回到文件开头。因此,在写入字符串“Beijing”后,文件指针回到文件头,再写入“China”,文件的内容就成为“Chinang”,正确答案是B。
(3)该题区分度0.375,属好题。
填空题第8题:
以下程序的输出结果是___。
#include
main()
{int i,j,sum;
for(i=3;i>=1;i--)
{sum=0;
for(j=1;j<=i;j++)sum+=i*j;
}
printf("%d\n",sum);
}
【答案】1
【分析】
(1)本题只有19.2%的考生答对。
(2)该题考核考生做题时的细心。在第一个for循环体中,由于每次循环都将sum置0,因此,影响sum值的因素就只与最后一次循环语句相关,此时,i为0,j为1,sum只能是1了。
(3)这道题本身不难,如果考生能够仔细阅题,掌握关键点,就不会出错了。
填空第9题:
以下程序的输出结果是___。
# include
main()
{ intj, a[]={1,3,5,7,9,11,13,15}, *p=a+5;
for(j=3;j;j--)
{switch ( j )
{ case1:
case2:printf("%d", *p++);break;
case3:printf("%d", *(--p));
}
}
}
【答案】9911
【分析】
(1)本题只有16.3%的考生答对,是难题。
(2)该题主要考核考生三个方面的知识,一是选择结构switch语句,一个是自加减运算,另一个是指针。j=3时,执行printf("%d", *(--p));语句,结果是输出9;j=2时,执行printf("%d", *p++); break; 结果是输出9,这是答对本体的关键!*p++指的是使*p作为表达式的值,然后使指针变量p本身增1;j=1时,执行空语句后,继续执行case2语句,此时输出11。所以本题的答案是9911。
(3)属于综合题,需要考生较深的基本功。