0993C语言程序设计课程基于网络考核方案.docx
《0993C语言程序设计课程基于网络考核方案.docx》由会员分享,可在线阅读,更多相关《0993C语言程序设计课程基于网络考核方案.docx(16页珍藏版)》请在冰点文库上搜索。
0993C语言程序设计课程基于网络考核方案
C语言程序设计课程
基于网络考核改革试点方案(2016年春修订)
一、考核改革的目的
1.通过本课程考核的改革,积极探索在基于网络的开放教育中,针对成人业余学习的特点,利用网络进行课程考核的基本模式;
2.通过本课程考核的改革,积极探索基于网络的C语言程序设计课程的具体考核内容、形式和措施;
3.通过本课程考核的改革,进一步强化教学过程的落实,指导学生在学习过程中理解和掌握课程内容,引导学生实现各个学习环节和步骤,有效地达到学习目标。
4.探索远程成人考核的信度和效度,保证学习质量。
二、考核对象
本课程适合计算机科学与技术(本科)专业使用。
此次基于网络考核改革首先采用试点,待总结经验后再逐步推开。
从2012年春季开始选择具备条件的部分省级电大参加试点。
三、考核目标
通过考核重点检测学生对C语言程序设计课程基本语法规则的掌握程度和在上机操作环境下进行分析、设计和调试程序的实际能力。
四、考核方式
采用基于网络的考核方式,包括形成性考核和终结性考试,均安排在国家开放大学网上考试平台上进行。
本课程的相关考核材料将按时提交到该课程的网络考核平台上。
形成性考核和期末终结性考核分别占课程总成绩的60%和40%,并且要求各自达到及格,才能够被认定为课程考核及格,可取得该课程的4学分。
形成性考核主要考核学生在相应阶段的学习效果和上机操作能力,期末终结性考核主要考核学生对基本语法知识掌握的程度和进行程序分析和设计的综合能力。
形成性考核为相继四次作业,期末终结性考试为期末一次试卷(闭卷)。
参加本课程网考试点的学生,要在整个学期的学习过程中,注意登陆在国家开放大学考试平台网站上建立的该课程的网络考试平台,并按时完成和提交相应的作业(试卷)。
通过该课程的形成性考核网络平台,一方面可以加强对地方电大教师教学过程的引导、指导和管理,督促按进度完成教学任务,实现教学目标;另一方面可以加强对学生平时自主学习过程的指导和监督,提醒学生按照每个阶段的教学要求和学习任务安排学习计划和提交作业(试卷)。
从而调动学生的学习积极性和主动性,以及上机操作的能力,达到顺利通过该课程学习任务的目的,以及提高进行程序分析和设计的能力。
五、形考说明
形成性考核将相继安排为四次作业,每次作业内容将由国家开放大学按时发布到国家开放大学形成性测评系统。
按照学习进度,形成性考核将考核学生每个阶段的学习效果和相应的上机操作能力,每次形考的内容和时间安排如下表所示。
序号
内容
形式
发布时间
最迟提交
时间
权重
1
对应教材第1、2章内容,包括C语言常量、变量、函数、表达式的表示与求值,系统头文件stdlib.h和数学头文件math.h的使用,系统函数printf和scanf的作用,上机操作环境的使用。
在计算机上输入、编辑、编译、连接和运行一个给定的C语言程序(包含多个文件),把运行结果依次拷贝到一个文本文件(记事本)中,将其压缩(rar或zip)后提交到形成性考核平台的该课程网站上。
5周
8周
25%
2
对应教材第3、4章内容,包括各种流程控制语句的定义和使用,一维数组和二维数组的定义和使用,字符串的定义和使用等。
根据已知要求进行程序设计,编写出相应的C语言程序,上机运行程序,最后把程序文本和运行结果依次拷贝到一个文本文件中,将其压缩(rar或zip)后提交到形成性考核平台的该课程网站上。
9周
12周
25%
3
对应教材第5、6章内容,包括指针定义和使用,指针和一维数组的关系,用户函数的定义和使用,变量的作用域等。
根据指定要求进行模块化程序设计,上机运行程序和输入数据,最后把整个程序和运行结果(包括输入的数据行)拷贝到一个文本文件中,将其压缩(rar或zip)后提交到形成性考核平台的该课程网站上。
13周
15周
25%
4
对应教材第7、8章内容,包括结构类型的定义和使用,文本文件的定义和使用等。
在计算机上输入和运行带有文件处理功能的程序,并能够根据要求修改程序,把添加的语句和运行结果(即运行时写入到文本文件的内容),将其压缩(rar或zip)后提交到形成性考核平台的该课程网站上。
15周
16周
25%
附四次形成性考核任务样例
第一次形考任务样例:
目的:
了解和熟悉VC++6.0集成开发环境,能够调试和运行具有多文件结构的C语言程序。
内容和步骤:
1、在一个逻辑盘(如D盘)或给定的目录下,使用VC++6.0环境中的“文件→“新建”命令,利用打开的“工作区”选项卡界面,建立名为“C语言形成性考核”的工作区(文件夹);
2、在上述工作区下建立一个内容为空的项目(目录),假定项目名用“xkzy1”表示;
3、在上述项目内建立一个具有如下内容的、名称为“main.c”的程序主文件;
#include
#include"head.h"
voidmain()
{
inta,b,c;
printf("请输入任意三个整数:
");
scanf(“%d%d%d”,&a,&b,&c);
printf("求和:
%d\n",Sum(a,b,c));
printf("乘积:
%d\n",Product(a,b,c));
}
4、同时在上述项目内建立一个具有如下内容的、名称为“next.c”的程序次文件;
intSum(inta,intb,intc)
{
returna+b+c;
}
intProduct(inta,intb,intc)
{
returna*b*c;
}
5、同时在上述项目内建立一个具有如下内容的、名称为“head.h”的用户头文件;
intSum(int,int,int);
intProduct(int,int,int);
6、分别编译上述程序主文件和次文件,均无误后再进行连接,自动生成与项目名相同的可执行文件;
7、选择编译菜单中的“执行”命令运行程序,按要求输入三个整数后,得到运行结果。
三、提交内容
程序执行时,在输出屏幕上呈现的所有内容。
四、评分标准
本次任务占形成性考核成绩的25%。
由于在程序运行时,输入的三个整数是随意的,所以运行结果因输入数据的不同而异。
只要是第2和3行的数据分别是第1行3个整数的和与积,就是正确结果。
第二次形考任务样例:
目的:
会使用流程控制语句和数组,编写出进行数据处理的程序,并能够上机调试和运行。
内容和步骤:
1、利用第一次作业所建立的工作区,或另建一个新工作区;
2、在工作区下建立一个内容为空的项目,假定项目名用“xkzy2”表示;
3、编写一个C语言程序,要求实现的功能为:
从键盘上输入一行包含数字的字符串,假定该字符串的长度不超过50,试统计出该串中每一种十进制数字字符的个数并输出。
4、在上述项目内建立一个能够实现上述功能的、名称为“main.c”的程序文件,并输入、编译、连接和运行此C语言程序文件。
提交内容
你所编写出的程序,以及在程序执行时,其输出屏幕上呈现的所有内容。
评分标准
本次任务占形成性考核成绩的25%。
由于在程序运行时,输入的一个字符串是随意的,所以运行结果因字符串不同而异。
只要程序的逻辑正确,即能够统计和输出字符串中每个数字字符出现的次数,就是正确的运行结果。
参考程序(谨供老师参考):
#include
voidmain()
{
chars[51];
inti,c[10]={0};
printf("输入一个包含数字的字符串:
");
scanf("%s",s);
for(i=0;s[i];i++)
if(s[i]>='0'&&s[i]<='9')c[s[i]-48]++;
for(i=0;i<10;i++)printf("%d:
%d\n",i,c[i]);
}
第三次形考任务样例:
目的:
会使用函数定义编写出具有一定功能的模块,学会进行结构化和模块化的程序设计。
内容和步骤:
1、打开第一次作业所建立的工作区,或另建一个新工作区;
2、在工作区下建立一个内容为空的项目,假定项目名用“xkzy3”表示;
3、在上述项目内建立一个名称为“main.c”的程序文件,程序内容如下;
#include
#include
int*contrary(inta[],intn);
voidmain()
{
inta[8]={2,5,8,1,4,9,6,7};
inti,*b;
for(i=0;i<8;i++)printf("%d",a[i]);
printf("\n");
b=contrary(a,8);
for(i=0;i<8;i++)printf("%d",b[i]);
printf("\n");
for(i=0;i<8;i++)printf("%d",a[i]);
printf("\n");
}
4、根据程序中的函数声明,在其程序下面编写出该函数的定义,此函数的功能是:
首先利用calloc函数动态分配一块数组空间,数组长度为n,元素类型为int,接着把参数a数组中的元素值按相反次序复制到新得到的动态数组空间中,最后返回这个动态数组空间的首地址。
5、编译、连接和运行上述程序,得到的运行结果应当为:
25814967
76941852
25814967
提交内容
你所编写的contrary函数的定义模块。
评分标准
本次任务占形成性考试成绩的25%。
只要程序运行结果正确就可以给满分。
参考程序(只供老师参考)
int*contrary(inta[],intn)
{
int*b=calloc(n,sizeof(int));
inti;
for(i=0;ireturnb;
}
第四次形考任务样例:
目的:
会利用数据文件存储数据,并学会分析带有文件处理功能的程序。
内容和步骤:
1、打开第一次作业所建立的工作区,或另建一个新工作区;
2、在工作区下建立一个内容为空的项目,假定项目名用“xkzy4”表示;
3、在上述项目内建立一个名称为“main.c”的程序文件,程序内容如下;
#include
#include
voidmain(void)
{
intx;
FILE*f1;//定义一个文件指针
f1=fopen("data.txt","w");//在程序所在目录内建立一个空文件
if(f1==NULL){//当f1对应的文件没有建立和打开时则退出运行
printf("不能够打开文件!
\n");
exit
(1);
}
printf("从键盘向数据文件输入一批整数,直到输入-1时结束!
\n");
scanf("%d",&x);//从键盘读入一个整数
while(x!
=-1){//对每个有效地整数进行处理
inti=0,d[6];
if(x<0){//若为负数则向文件写入一个负号
fputc('-',f1);x=-x;
}
while(x/10!
=0){//用d数组保存整数中的每个数字位
d[i++]=x%10;x=x/10;
}
fputc(48+x,f1);//把整数的最高位数字写入文件中
while(--i>=0)//依次把整数的后续每位数字写入文件中
fputc(48+d[i],f1);
fputc('',f1);//每个整数后写入一个空格
scanf("%d",&x);//再从键盘读入一个整数
}
fclose(f1);//关闭f1所对应的data.txt文件
}
4、修改上述程序,使得从键盘输入到数据文件中的数据内容,每隔4个整数后增加一个换行;
提示:
在intx语句后,增加一条定义变量的语句,用该变量记录从键盘上输入的整数个数;在fputc('',f1)语句后,增加一条条件语句,用来记数和控制输出换行符。
5、编译、连接和运行上述经修改后的程序,要求从键盘上输入10个以上整数。
提交内容
经修改需要添加的两条语句,以及程序运行时所建立的数据文件的内容。
评分标准
本次任务占形成性考试成绩的25%。
程序应添加的两条语句为:
intj=0;//用来记录输入数据的个数
if(++j%4==0)fputc('\n',f1);//每输出4整数后输出一个换行符
在数据文件的内容中,整数之间有一个空格,每4个整数后有一个换行。
这样就是正确的结果。
请根据答题情况酌情给分。
参考程序(只供老师参考)
#include
#include
voidmain(void)
{
intx;
intj=0;//用来记录输入数据的个数
FILE*f1;//定义一个文件指针
f1=fopen("data.txt","w");//在程序所在目录内建立一个空文件
if(f1==NULL){//当f1对应的文件没有建立和打开时则退出运行
printf("不能够打开文件!
\n");
exit
(1);
}
printf("从键盘向数据文件输入一批整数,直到输入-1时结束!
\n");
scanf("%d",&x);//从键盘读入一个整数
while(x!
=-1){//对每个有效地整数进行处理
inti=0,d[6];
if(x<0){//若为负数则向文件写入一个负号
fputc('-',f1);x=-x;
}
while(x/10!
=0){//用d数组保存整数中的每个数字位
d[i++]=x%10;x=x/10;
}
fputc(48+x,f1);//把整数的最高位数字写入文件中
while(--i>=0)//依次把整数的后续每位数字写入文件中
fputc(48+d[i],f1);
fputc('',f1);//每个整数后写入一个空格
if(++j%4==0)fputc('\n',f1);//每4整数后写入一个换行符
scanf("%d",&x);//再从键盘读入一个整数
}
fclose(f1);//关闭f1所对应的data.txt文件
}
六、终结性考试说明
考核目的:
考察学生掌握C语言语法规则的程度和进行程序分析的能力。
考核方式:
终结性考试基于国家开放大学终结性考试系统进行,由国家开放大学统一编制试题,分部组织考试。
成绩比重:
占课程总成绩的40%。
考试时限:
60分钟(闭卷),考试日期由国家开放大学考试中心统一安排(另行通知)。
考核题型:
单项选择题、填空题和分析程序题。
考核题型样例:
单项选择题(每小题3分,共30分)
1.C语言程序中的基本功能模块为()。
A.表达式B.标识符C.语句D.函数
2.逻辑表达式(x>0||y==5)的相反表达式为()。
A.x<=0||y!
=5B.x<=0&&y!
=5
C.x>0||y!
=5D.x>0&&y==5
3.循环体至少被执行一次的循环语句为()。
A.forB.whileC.do-whileD.任一种循环
4.假定n的值为5,则表达式n++的值为()。
A.6B.5C.4D.7
5.假定一个二维数组的定义为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[2][0]的值为()。
A.0B.2C.4D.6
6.假定一个函数原型为“char*func(intn)”,则该函数的返回类型为()。
A.intB.int*C.charD.char*
7.假定a为一个字符数组名,则元素a[i]的指针访问方式为()。
A.a+iB.*(a+i)C.&a+iD.*a+i
8.假定有语句为“int*p=calloc(10+20,sizeof(int));”,则p所指向的动态数组中所包含的元素个数为()。
A.10B.20C.30D.40
9.十进制数50表示成符合C语言规定的八进制数为________。
A.20B.32C.62D.062
10.若要以读和写两种操作方式打开一个二进制文件,当文件不存在时返回打开失败信息,则选用的打开方式字符串为()。
A."r+"B."ab+"C."rb+"D."wb+"
填空题(每小题3分,共30分)
1.在一个C语言程序文件中,若要包含另外一个头文件或程序文件,则应使用的预处理命令为__________。
2.用于从键盘上为变量输入值的标准输入函数的函数名为________。
3.假定一个枚举类型的定义为“enumRA{ab,ac,ad,ae};”,则ac的值为________。
4.double类型的长度为________。
5.执行“intx=45,y=13;printf("%d",x/y);”语句序列后得到的输出结果为________。
6.把表达式x=x+y转换成复合赋值表达式为__________。
7.假定x的值为5,则执行“a=(!
x?
10:
20);”语句后a的值为________。
8.假定一维字符指针数组的定义为“char*a[8];”,则该数组占用的存储空间的字节数为________。
9.假定二维数组的定义为“doublea[M][N];”,则数组元素的行下标取值范围在_________之间。
10.空字符串的长度为________。
写出程序运行结果(每小题10分,共40分)
1.#include
voidmain(){
inti,j,k=0;
for(i=0;i<5;i++)
for(j=i;j<5;j++)k++;;
printf("%d\n",k);
}
2.#include
voidmain(){
intx=20;
inti=2;
while(iif(x%i==0){printf("%d",i);x/=i;}
i++;
}
}
3.#include
voidmain(){
inta[8]={76,63,54,95,40,75,90,66};
inti,s=0;
for(i=0;i<8;i++)
if(a[i]>=70&&a[i]<=90)s+=a[i];
printf("s=%d\n",s);
}
4.#include
intWF(intx,inty){
x=x+y;
y+=x;
returnx+y;
}
voidmain(){
intx=3,y=8;
printf("%d\n",WF(x,y));
}
参考答案:
单选题(每小题3分,共30分)
1.D2.B3.C4.B5.A
6.D7.B8.C9.D10.C
填空题(每小题3分,共30分)
1.#include2.scanf3.14.85.3
6.x+=y7.208.329.0~M-110.0
三、写出下列每个程序运行后的输出结果(每小题10分,共40分)
评分标准:
根据答案正确程度酌情给分。