考试大纲.docx
《考试大纲.docx》由会员分享,可在线阅读,更多相关《考试大纲.docx(218页珍藏版)》请在冰豆网上搜索。
考试大纲
四川省普通高等学校
计算机应用知识和能力等级考试
考试大纲
(2008年修订)
四川省教育厅
计算机等级考试中心
2008年10月
二级
考试要求
二级考试包括笔试和上机考试,笔试包含软件技术基础和各语种的程序设计两部分,以程序设计为主。
考试时间
二级笔试考试时间:
120分钟
二级上机考试时间:
60分钟
考试内容
软件技术基础
一、掌握程序设计常用的数据结构与算法
1.数据结构与算法的基本概念
2.线性表的基本操作及存储结构
3.栈、队列、链表的定义、操作及存储结构
4.树、二叉树和图的概念
5.线性表的查找:
顺序查找、二分法查找、分块查找
6.内排序:
插入排序、选择排序、变换排序、归并排序
二、了解软件工程的基本思想及软件开发技术
1.程序、软件、软件工具、软件工程的概念
2.软件的生存期和开发模型
3.结构化分析方法(SA方法)、结构化设计方法(SD方法)、结构化程序设计(SP)的概念、任务和实现方法。
结构化程序设计的主要图示工具(程序流程图、方框图、问题分析图)及伪代码。
4.面向对象系统的基本概念:
类、对象、方法、消息、继承、多态性
5.面向对象程序设计与结构化程序设计的主要区别
6.基于构件的软件开发方法及软件复用的概念
7.软件测试的概念及基本方法
三、熟悉计算机软件开发的支撑环境——操作系统
1.操作系统的功能和类型
2.进程及处理机管理:
进程、进程的通讯、进程控制、进程调度及死锁等基本概念
3.存储管理、设备管理、文件管理的基本任务和方法
C语言程序设计
一、C程序的结构
1.C程序的构成,main()函数和其他函数。
2.头文件,数据说明,函数的开始和结束标志。
3.源程序的书写格式。
4.C语言的风格。
二、数据类型、运算符和表达式
1.C语言的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法。
2.C语言的运算符的种类和功能,运算优先级和结合性。
3.不同类型数据间的转换(自动转换与强制转换)与运算。
4.C语言的表达式(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。
三、程序设计初步
1.C语言的语句:
表达式语句,空语句,复合语句。
2.数据的输入/输出,输入/输出函数的使用。
3、选择结构程序设计
(1)用if语句实现选择结构。
(2)用switch语句实现多分支选择结构。
(3)选择结构的嵌套。
4.循环结构程序设计
(1)while和do-while循环结构。
(2)for循环结构。
(3)break语句和continue语句。
(4)循环嵌套。
5.编译预处理
(1)宏定义:
不带参数的宏定义;带参数的宏定义。
(2)文件包含命令。
四、数组
1.数组的含义和存储特点。
2.一维数组和二维数组的定义、初始化;数组元素的引用。
3.字符串与字符数组;常用的字符串处理函数。
五、函数
1.C语言库函数的调用。
2.函数的定义与声明。
4.函数的类型与返回值。
5.函数的形式参数与实在参数,参数值的传递。
6.函数的正确调用,嵌套调用与递归调用。
7.局部变量和全局变量。
8.变量的存储类型,变量的作用域和生存期。
六、指针
1.变量及数组元素的地址,指针与地址运算符,指针与指针变量。
2.指针变量的声明、赋值,通过指针变量来引用所指变量的值。
3.数组、字符串、函数、结构体的指针以及指向变量、数组、字符串、函数、结构体的指针变量。
通过指针引用以上各类型数据。
4.用指针作函数的参数。
5.返回指针值的函数。
6.指针数组,指向指针的指针。
7.main函数的命令行参数;有参main函数的程序运行。
七、结构体与共用体
1.结构体和共用体类型数据的定义和引用:
结构体变量,结构体数组,结构体指针等。
2.用指针和结构体构成链表,单向链表的建立、输出、删除与插入。
3.结构体和共用体类型的存储特点。
八、文件
1.文件类型指针(FILE类型指针)的定义。
2.文件的打开与关闭(FOPEN,FCLOSE)。
3.正确使用文件读写函数(FPUTC,FGETC,FPUTS,FGETS,FREAD,FWRITE,FPRINTF,FSCANF)进行文件的读写,文件定位函数(REWIND,FSEEK)的使用。
注:
只要求缓冲文件系统。
25次
(第一套)
(60分钟)
一、程序调试(文件名为test1-1.c40分)
下列程序其功能是:
计算并输出M以内最大的10个素数之和,M由主函数传给fun函数。
例如:
当M的值为100,则函数的值为732。
请修改程序中的错误,使之能输出正确的结果。
注意:
不得增加行或删行,不得更改原程序结构。
#include
intfun(intm)
{intsum=0,n=0,j,yes;
while((m>=2)||(n<10))
{yes=0;
for(j=2;j<=m/2;j++)
if(m%j==0)
{yes=0;
break;
}
if(yes)
{sum+=m;
n++;
}
m++;
}
return;
}
voidmain()
{intm;
printf("enterm:
\n");
scanf("%d",m);
printf("%d\n",fun(m));
}
二、编写程序(文件取名为test1-2.c60分)
磁盘上的test1-2.txt文件中以文本形式存放有10名学生的记录,每条记录由学号和一门课程成绩组成。
用函数调用方式编写程序,要求实现:
在main函数中读入10名学生记录,存入结构数组s,调用fun函数,把平均成绩和分数最低的学生记录输出到屏幕上。
被调函数fun求出10名学生的平均成绩并统计分数最低的学生记录(注意:
分数最低的学生可能不止一个),fun的参数是数组s的首地址和数组h的首地址(h中存放分数最低的学生记录),fun的返回值是分数最低的学生的人数。
一个学生记录放在如下结构中:
structstudent
{charnum[10];
ints;
};
(第二套)(60分钟)
一、程序调试(文件名为test2-1.c40分)
下列程序其功能是:
程序中fun函数的功能是在一个字符数组中查找一个指定的字符,若数组中含有该字符则返回该字符在数组中第一次出现的位置(下标值);否则返回-1,查询结果在main函数中输出。
请修改程序中的错误,使之能输出正确的结果。
注意:
不得增加行或删行,不得更改原程序结构。
#include
voidfun(char*a,charch)
{
inti,j;
for(i=0;;i++)
if(*(a+i)==ch)
{
j=i;
continue;
}
elsei=-1;
returnj;
}
voidmain()
{
charstr[100],ch;
intk;
printf("enterastring:
");
ges(str[100]);
printf("enteracharacter:
");
ch=getchar();
k=fun();
if(k==-1)printf("notfound!
\n");
elseprintf("found=%d\n",k);
}
二、编写程序(文件取名为test2-2.c60分)
已有一数据文件test2-2.dat,文件中的数据依次由:
准考证号、笔试成绩、上机成绩三项组成,中间由空格分开。
编程统计及格(笔试成绩和上机成绩均大于等于60分的为及格)的考生人数,以及及格率(即及格考生在总人数中占的百分比),并将获得及格的考生信息(准考证号、笔试成绩、上机成绩),考生总人数,获得及格的考生的考生人数和及格率输出到屏幕上同时写入到文件test2-2.out中。
(第三套)(60分钟)
一、程序调试(文件名为test3-1.c40分)
下列程序其功能是:
在程序中有一fun函数,其功能是:
在字符串s中的数字字符(不超过8个)取出,按原来顺序组成整数疳输出。
例如:
当s中的字符串为:
“A12C9D76EF”,由取出的正整数为12976。
请改正程序中的错误,使程序能得出正确的结果。
注意:
不得增加行或删行,不得更改原程序结构。
#include
#include
voidfun(char*s,char*t,intk)
{
inti;
k=0;
for(i=0;s[i];i++)
if(0<=s[i]&&s[i]<=9)
{t[*k]=s[i];
*k+=1;
}
}
voidmain()
{
chars[100],t[9];
longintn;
intI,k;
printf("\npleaseentetstrings:
");
scanf("%s",s);
fun(s,t,&k);
for(i=0,in+=(t[k-1-i]-'0'*pow(10,i);
printf("theresultis:
%d":
n);
}
二、编写程序(文件取名为test3-2.c60分)
已有一数据文件test3-2.dat,内容是9位评委为位艺术考生的艺术表演按考生编号的评分结果(第一行的第一列为考生编号,后9列为9位评委的打分),编写程序实现:
结考生考试成绩进行统计,去掉一个最高分和一个最低分作为最后得分,将7位评委打分的平均值作为考生的最后成绩。
将结果按test3-2.dat文件的格式,在第一行的最后加上平均他输出到屏幕上。
要求数据文件中的考生信息输入到如下结构数组中:
structdefen
{charksbh[10];
intcj[9];
}ks[10];
(第四套)(60分钟)
一、程序调试(文件名为test4-1.c40分)
下列程序其功能是:
在字符串中找出ASII码值最大的字符,将其入在第一个位置上,并郊该字符前的字符向后顺序移动。
例如:
输入字符串ABCeDEFG,调用fun函数后输出的字符串为:
eABCDFG.。
请改正程序中的错误,使程序能得出正确的结果。
注意:
不得增行或删行,不得更改原程序的结构。
#include
voidfun(charp)
{
charmax,*q;
inti=0;
max=p[i];
while(p[i]!
=0)
{if(max
{max=p[i];
p=q+i;
}
i++;
}
while(q
{
*q=*(q-1);
q++;
}
p[0]=max;
}
voidmain()
{
charstr[80];
printf("enterastring:
");
gets(str);
printf("\ntheoriginalstring:
');
puts(str);
fun(str);
printf("\nthestringaftermoving:
");
puts(str);
}
二、编写程序
编写程序求表达式的值:
s=a+aa+aaa+…..+aa…a(此处aa…a表示n个a,a和n的值均在1至9之间)。
例如:
a=3,n=4时,s=3+33+333+33333其值为3702。
要求用函数调用方式编写程序:
main函数中输入a和n,调用函数fun完成表达式值的计算(a和n作为fun函数的参数,表达式的值作为fun函数的返回值),然后main函数将结果显示在屏幕上,同时存放在test4-2.txt文件中。
25-1套参考答案:
一、程序调试题(文件名为test1-1.c)(40分)
#include
intfun(intM)
{intsum=0,n=0,j,yes;
while((M>=2)||(n<10))/*改为&&*/
{yes=0;/*改为1*/
for(j=2;j<=M/2;j++)
if(M%j==0)
{yes=0;
break;
}
if(yes)
{sum+=M;
n++;
}
M++;/*改为M--*/
}
return;/*改为returnsum*/
}
voidmain()
{intM;
printf("EnterM:
\n");
scanf("%d",M);/*改为&M*/
printf("%d\n",fun(M));
}
评分标准:
每改对一处得8分
二、编程题(程序文件取名为test1-2.c)(60分)
评分标准:
1、结构数组或指针定义正确10分2、平均成绩计算正确10分
3、分数最低的学生记录和人数统计正确10分4、函数调用和参数传递正确10分
5、文件打开、记录读入和关闭正确10分6、输出结果正确10分
参考程序:
#include
#defineN10
structstudent
{charnum[10];
ints;
};
floataverage;
intfun(structstudent*a,structstudent*b)
{inti,n=0,min;
floatsum=a[0].s;
min=a[0].s;
for(i=1;i{if(min>a[i].s)
min=a[i].s;
sum+=a[i].s;
}
average=sum/N;
for(i=0;iif(min==a[i].s)
{b[n]=a[i];
n++;
}
returnn;
}
main()
{structstudents[N],h[N];
inti,n;
FILE*fp;
if((fp=fopen("test1-2.txt","r"))==NULL)
{printf("Fileopenerrors!
\n");
exit(0);
}
for(i=0;ifscanf(fp,"%s%d",s[i].num,&s[i].s);
fclose(fp);
n=fun(s,h);
printf("Theaveragescoresis:
%5.2f\n",average);
printf("THe%dlowestscore:
\n",n);
for(i=0;iprintf("%s%4d\n",h[i].num,h[i].s);
}
25-2套参考答案:
一、程序调试题(文件名为test2-1.c)(40分)
#include
voidfun(char*a,charch)/*改为int*/
{inti,j;
for(i=0;;i++)/*改为a[i]!
=’\0’*/
if(*(a+i)==ch)
{j=i;
continue;/*改为break*/
}
elsej=-1;
returnj;
}
voidmain()
{charstr[100],ch;
intk;
printf("Enterastring:
");
ges(str[100]);/*改为gets(str)*/
printf("Enteracharacter:
");
ch=getchar();
k=fun();/*改为fun(str,ch)*/
if(k==-1)printf("Notfound!
\n");
elseprintf("found=%d\n",k);
}
评分标准:
每改对一处得8分
二、编程题(程序文件取名为test2-2.c)(60分)
评分标准:
1、文件指针定义、打开文件、关闭文件正确(10分)2、读文件内容正确(10分)
3、统计考生总人数,获得及格的考生人数方法正确(10分)
4、及格率计算正确(10分)5、写入文件正确(10分)
6、屏幕输出正确(5分)7、结构合理(5分)
参考程序:
#include
main()
{FILE*in,*out;
charc1[20];
intcj1,cj2;
intn=0,m=0;
if((fp=fopen("test2-2.dat","r"))==NULL)
{printf("Fileopenerror!
\n");
exit(0);
}
out=fopen("test2-2.out","w");
while(!
feof(in))
{fscanf(in,"%s",c1);
fscanf(in,"%d%d",&cj1,&cj2);
if(cj1>=60&&cj2>=60)
{printf("%s",c1);
printf("%d",cj1);
printf("%d\n",cj2);
fprintf(out,"%s",c1);
fprintf(out,"%d",cj1);
fprintf(out,"%d\n",cj2);
n++;
}
m++;
}
fclose(in);
printf("Thetotal:
%d\n",m);
printf("Thepassnumber:
%d\n",n);
printf("Thepassrate:
%02f%\n",(float)n/m*100);
fprintf(out,"Thetotal:
%d\n",m);
fprintf(out,"Thepassnumber:
%d\n",n);
fprintf(out,"Thepassrate:
%02f%\n",(float)n/m*100);
fclose(out);
}
25-3套参考答案:
一、程序调试题(文件名为test3-1.c)(40分)
#include
#include
voidfun(char*s,char*t,intk)/*改为*k*/
{inti;
k=0;/*改为*k=0*/
for(i=0;s[i];i++)
if(0<=s[i]&&s[i]<=9)/*改为'0'<=s[i]&&s[i]<='9'*/
{t[*k]=s[i];
*k+=1;
}
}
voidmain()
{chars[100],t[9];
longintn;/*改为n=0*/
inti,k;
printf("Pleaseenterstrings:
");
scanf("%s",s);
fun(s,t,&k);
for(i=0;in+=(t[k-1-i]-'0')*pow(10,i);
printf("Theresultis:
%d",n);/*改为%ld*/
}
评分标准:
每改对一处得8分
二、编程题(程序文件取名为test3-2.c)(60分)
评分标准:
1、文件指针定义、打开文件、关闭文件正确10分2、读文件内容正确10分
3、最高、最低分的确定正确10分4、平均分计算正确15分
5、输出结果正确10分6、结构合理5分
参考程序:
#include
main()
{FILE*in;
structdefen
{charksbh[10];
intcj[9];
}ks[10];
floataveg;
intmax,min;
inti,j,sum;
if((im=fopen("test3-2.dat","r"))==NULL)
{printf("Fileopenerror!
\n");
exit(0);
}
for(i=0;i<10;i++)
{sum=0;max=0;min=100;
fscanf(in,"%s",ks[i].ksbh);
for(j=0;j<9;j++)
{fscanf(in,"%d",&ks[i].cj[j]);
if(ks[i].cj[j]>max)max=ks[i].cj[j];
if(ks[i].cj[j]sum+=ks[i].cj[j];
}
aveg=(sum-max-min)/7.0;
printf("%s",ks[i].ksbh);
for(j=0;j<9;j++)
printf("%d",ks[i].cj[j]);
printf("%8.1f\n",aveg);
}
fclose(in);
}
第25-4套参考答案
一、程序调试题(文件名为test4-1.c)(40分)
#include
voidfun(charp)/*改为*p*/
{charmax,*q;
inti=0;
max=p[i];
while(p[i]!
='0')/*改为'\0'*/
{if(max
{max=p[i];
p=q+i;/*改为q=p+i*/
}
i++;
}
while(q
p*/
{*q=*(q-1);
q++;/*改为q--*/
}
p[0]=max;
}
voidmain()
{charstr[80];
printf("Enterastring:
");
gets(str);
printf("\nTheorginalstring:
");
puts(str);
fun(str);
printf("\nThestringaftermoving:
%s\n",str);
}
评分标准:
每改对一处得8分
二、编程题(程序文件取名为test4-2.c)(60分)
评分标准:
1、fun函数算法正确(15分)2、文件指针定义、打开文件、关闭文件正确(10分)
3、函数调用、参数传递、返回值正确(15分)4、a和n输入正确(5分)
5、数据输出到文件正确(5分)6、屏幕显示正确(5分)
7、程序结构合理(5分)
参考程序:
#include
longintfun(in