C语言上机考试

2024-06-27

C语言上机考试(精选五篇)

C语言上机考试 篇1

若采用系统自动评分,不但将考生作弊的可能大幅减小,并且智能化的给学生的程序进行评分,以取代教师的低效率的、机械的阅卷模式,改变了院校人工批阅上机考试的现状,更加直观地反应学生的学习水平和教师的教学成果。因此,自动评分技术的研究与实现,在高等教育领域和计算机考试中具有十分重要的实际意义。本文以C语言程序设计为例,给出一种利用LD算法实现自动评分的方法。

1 填空改错题的评分

C语言上机考试系统的题型一般情况下,不外乎有填空题、改错题和编程题,其中填空题和改错题的评分完全可以将比较来判定成绩,即通过比较原题和学生答题找到最长不同字符串,然后将该字符串同标准答案比较即可。其实现方法在VB6.0中可以用以下源代码实现:函数名为CompStrFun,形参indata、dindata表示学生答题结果、试题标准答案,均为字符串类型。该函数返回两个参数最长不同字符串的长度。

2 编程题的评分

对C语言考试系统中的编程题,因为不同学生考虑问题的角度和解决问题的思路与方法存在差异,于是同样的问题学生给出的争取答案多种多样,从而造成系统无法给出标准的答案。

目前,多数程序设计类课程的上机考试系统对于编程题的评判,多是采用比较程序运行所输出结果的文件,而不考虑学生所编写程序。虽然这样能够确保编程完全正确的学生获得该题满分,但是这样造成了以下两种不合理的情况存在。第一种情况,完全不编程而直接通过编辑输出文件来获取满分的情况;第二种情况:编写的程序大部分正确,但程序无法运行得零分的情况。

对于第一种情况,在学生提交考试结果时的时候通过重新生成结果文件来避免。即先删除学生答题所产生的结果文件,再调用编译系统重新编译连接学生编写的程序,生成可执行的exe文件并运行产生最新的结果文件,然后和标准结果进行比较。这样即使学生直接编辑结果文件正确,但没有编写程序,也无法获取成绩。此情况在VB6.0中可以编写如下函数代码来实现。

‘函数名:AgainExe()

‘参数:形参FileName表示学生所编写的源程序文件(包含路径)。

‘返回值:True表示成功重新生成exe文件,Flase表示生成exe文件失败。

Public Function AgainExe(ByVal FileName As String)As Integer

Shell"VCVARS32.BAT"'设置运行环境参数

AgainExe=Shell("Cl.exe"&App.Path&FileName,vbNormalFocus)

End Function

对于第二种情况,因学生的主观因素造成学生的答题结果存在着差异,而编程题的答案并不是唯一的。这样造成该类型的题目并不能采用上述填空改错题的方式来评分。本文通过文本相似性来实现编程题的评分,即借助距离编辑(LD)算法,将学生答案和标准答案进行比较获得答案相似度作为得分比例,然后乘以该题总分作为学生该题的得分。

3 距离编辑算法实现

距离编辑算法(简称LD算法)是以一个字符串A转换成另一个字符串B的过程中,所进行的插入、删除、替换等操作的次数表示两个字符串的相似度。在上机考试系统中,从学生答案读取程序行作为字符串A,而标准答案读取程序行作为字符串B,然后即可按行执行LD算法。

例如学生程序行“x=a[j]”如何变成标准程序行“x=b[++i]”呢?第1步,a替换成b,x=a[j]→x=b[j];第2步,j替换成i,x=b[j]→x=b[i];第3步,在i前插入++,x=b[i]→x=b[++i]。故x=a[j]和x=b[++i]的编辑距离为3。

在VB6.0中实现该算法的函数源代码如下:其中函数名为LD,形参StrA、StrB表示学生答题结果、试题标准答案,均为字符串类型。该函数返回两个参数的编辑距离。

4 结论

本文提出的计算机自动评分方法,已经应用于程序课上机考试系统中。不但可以将该系统作为《C语言程序设计》课程的期末上机考试系统,另一方面还可以让学生熟悉二级语言考试环境,从而提高计算机等级考试通过率。

摘要:在程序设计课的上机考试系统中,如何实现自动评分是最为关键的部分。该文对不同题型给出了不同的评分方法,其中编程题的评分,采用学生答案和标准答案之间的编辑距离作为评分依据,将LD算法用于考试系统的自动评分,并给出用VB6.0实现的函数代码。

关键词:自动评分,考试系统,VB6.0,LD算法

参考文献

[1]吴宗东,李兵元.浅谈SHELL函数使用新法[J].新疆石油科技,2000,21(2):76-80.

[2]王振明,李俊龙.一种简易的文本内容比较算法及在VB中的实现[J].计算机应用与软件,2007,24(8):199-221.

二级C语言上机考试改错题总结 篇2

根据本人多年研究全国计算机等级考试二级若错误行中有整数1除以某个表达式或变量时,必C语言,发现很多考生对上机考试存在很大的问须把整数1改为1.0;若变量或表达式是整型时,题。现将本人在教学当中对二级C语言上机考试题则只能进行强制类型转换。

库总结的经验和大家分享,希望能对我们考生的考

试有所帮助,顺利通过考试!以下是对上机考试改

错题的做题方法和总结,改错题的错误主要分为以

7、字符串类问题

下几类: 若错误行中有字符串结束符,则特别要要注意结束

1、if或while语句 符有没有写错。但是要区分清楚字符‘o’和数字’若错误行是if或者while语句,则要注意以下点: 0’。

1)首先判断是否正确书写if或while关键字;

8、指针类问题

2)然后看有没有用小括号把整个表达式括起来,若错误行中有指针变量,并且该变量名之前没有指若没有则加上小括号; 针运算符,则一般都是加上指针运算符;

3)若条件表达式中有指针变量而且没有指针运算

9、函数首部类问题:

符时,则加上指针运算符; 若错误行是函数首部,则要注意:

4)若if条件表达式中只有一个等于号即数学等号1)首先看该行最后有没有分号,若有则删掉分号;(=),则要改写成两个等于号即逻辑等号(= =); 若中间有分号则要改为逗号;

5)若if条件表达式为其他的比较运算符,则一般2)形参和实参类型不一致问题

是进行逆转或加一个等于号;① 若实参是个地址或数组名或指针变量名,则对

2、for语句 应的形参肯定是指针或数组;

若错误行是for语句,则要注意以下几点:②若实参是二维数组名,则对应的形参应该是指

1)首先判断for有没有书写正确; 针数组或是二维数组;

2)然后看for中的表达式是不是用分号(;)隔开,③若后面用到某形参的时候有指针运算符,则该若不是则改为分号。形参比为指针类型;

记住是分号(;),不是逗号(,)!④若形参是二维数组或指向M 个元素的指针变

3)再者,分析for中的三个表达式,是否符合题量,则该二维的长度必须与main中对于数

意; 组的第二维的长度相同。

第一个表达式表示起始条件,3)函数类型不一致问题

第二个表达式表示终止条件,①若函数中没有return语句,则函数类型为第三个表达式表示循环变量的变化。void;

3、return语句 ②若函数中有return语句,则函数的类型必须若错误行为return语句,则要注意以下几点: 与rerun后的变量类型一致;

1)首先看是不是正确书写return关键字; 记住,调用函数的类型与main中的该函数的类型

2)然后看是不是缺少分号,若是则加上分号即可; 一致!

3)再者判断return后的变量或表达式是否正确; 10.语法错误问题:

这种错误需要根据题意来分析,分析返回变量或表1)语句缺少分号。若错误号中语句没有以分号结达式的值和类型。束则加上分号;

2)变量名不一致。C语言是区分大小写的,若错

4、赋值语句 误行中有大写字母一般都改为小写字母; 若错误行是赋值语句,则要看赋值是否正确,然后11.逻辑错误问题:

看赋值运算符是否写正确。这种题型主要是表达式错误,占的题量比较多

5、定义语句 而且我们没有统一的做题方法,需要我们具体问题若错误行是定义语句,则要注意: 具体分析。

1)首先分析变量类型名是否写对; 12.书写错误问题:

2)然后分析给变量赋初值是否正确; 特别注意我们的注释部分,注释是以/*开始,以

3)若以上均不是,则看是不是少定义了某个变量或*/结尾,不能有多余的,有也只能在/*和*/里面。少了花括号; 注意,比如“/***注释部分*****/*/”是错误的!

C语言上机考试 篇3

【摘要】随着教育改革的深入和计算机网络技术的发展,计算机自动化考试已经成为一种趋势,针对目前考试系统只具备组卷评分功能,缺乏教师与学生的沟通互动及用户使用范围受限的问题,本系统采用B/S网络结构模式扩展了用户使用区域,并增加评价与推送功能,完善了教学反馈环节。本系统首先进行组卷、阅卷、评分,完成对学生知识点的考核,然后统计每个学生知识点的得分、错题率等信息,生成教学方案反馈给老师以促进教学改革,同时把错题知识点汇总,通过APP客户端发送给学生。

【关键词】无纸化考试 B/S架构 C语言考试系统

【基金项目】2013年,省级教研项目:基于“理实贯通、多元协作”的信息与通信工程学科教学创新研究,项目编号:2013286;2015年,湖北工业大学校级项目:基于PBL教学模式的智能考试、评估、推送C语言学习方案研究,项目编号:校2015062;2014年,湖北工业大学校级项目:面向电子信息类专业的一体化CDIO工程教育改革实践,项目编号:校2014013;2013年,湖北工业大学校级项目:电气卓越工程师培养程序设计类课程改革研究,项目编号:校2013011;2015年,华中师范大学中央高校基本科研业务费项目:基于设备指纹的数字音频被动取证关键技术研究,项目编号:CCNU15A05054;大学生创新创业训练计划项目(201510500035)。

【中图分类号】G64【文献标识码】A 【文章编号】2095-3089(2016)04-0211-02

一、引言

C语言作为国际上广泛流行的计算机高级程序设计语言,在广大高校的计算机及相关专业中是一门必修课程。对于C语言的考核虽然已经走向计算机自动化阅卷的道路,但目前的考试系统的设计局限于技术细节改善,如客观题评分标准的完善、随机组建算法设计,而忽视了教学的本质——考试只是教学的一个环节,而不是终极目标。

(一)系统需求分析

根据现在考试系统的现状,针对目前考试系统只具备组卷、评分功能,缺乏教师和学生的沟通互动,信息反馈及用户使用范围受限等问题,本系统强化考试后的反馈环节,在题库的数据库组建时,考虑题目与知识点的对应关系,题目的难度分级。学生在预习时,通过查看其它学生的考试结果,可以预判学习的重难点,合理分配学习时间。

(二)系统设计分析

二、系统的设计与实现

(一)系统总体设计

根据系统需求分析,在线并发C语言考试系统由两个PC客户端和一个Android客户端组成,设计分为两个阶段实现:(1)先完成基于B/S模式的教师和学生的PC客户端系统;(2)在PC客户端的基础上开发基于Android手机平台的反馈和师生交流系统,在线并发C语言考试系统采用B/S架构,用户可以在PC客户端进行系统访问,PC端进行数据的读取和存储,并提供完善的考试管理系统,该系统采用Basic语言在VB开发环境下实现。

(二)学生考试模块

1.考生登录模块

首先判断考生输入的账号和密码是否正确,若账号或密码错误则给出相应的错误警告,验证通过后进入后台数据库提取相关数据转入答题界面,并且记录登录次数,限制只能登录一次,否则给予相应警告。

2.考试答题模块

在后台数据库中抽取题目,将题目以选择题、判断题、填空题和程序设计题的形式在不同窗口中显示,并提示考试时间和答题结果,在时间完成后自动交卷,并将考试数据自动存入后台数据库。

3.分数显示和本地推送模块

在考试完成并提交答案后将激活分数显示和推送模块,首先将考生的答案和数据库标准答案进行比对,对比正确答案进行统计,然后将考生答案和得分情况存入后台数据库并显示到本界面,反馈给相应的考生,推送模块只有考生在点击本页面的推送按钮时才被激活,然后根据统计结果将相应的知识点和学习方案推送到本地客户端,同时将反馈的内容一并上传到教师端数据库,供教师端进行整体统计使用。

4.管理模块

在学生端管理模块部分主要实现对账号和密码的修改,考生可以在管理界面对自己的信息进行修改,首先输入初始设置的账号和密码,确认正确后就可以修改为更加安全的账号密码,保证个人的信息安全。

(三)教师管理模块

教师端登录模块与学生端基本相似,在此不做另外介绍,着重介绍几个主要的模块。

1.记录工具模块

在登录完成后便激活记录工具模块,并获得相应记录ID,初始记录为空,教师可在此记录相关的工作日志等信息,并只有相同ID才可以访问其内容,保障其安全性,另本系统工具模块自带浏览器,相关问题可随时上网查询而无需切换界面。

2.导入试题模块

点击进入导入试题模块,可以进行选择题、判断题、填空题和程序设计题的导入工作,教师输入完成并确认后系统将自动分配题号并存入后台数据库。

3.试题浏览模块

本模块主要对数据库中生成的临时temp表进行显示,点击确认后生成正式试题表并发送至学生考试客户端。

4.考生信息查询模块

考生信息查询模块主要对学生端反馈的信息进行汇总后在本地显示并供教师端查询使用,查询方式为单条件方式查询和组合式查询,查询结果在本界面进行显示。

三、系统的实现

(一)学生端功能实现流程

参加考试的考生首先进入一个登录界面,考生输入正确的账号和密码登录,进入登录界面后系统自动开始进行倒计时,考生选择相应的试题类型进入相应答题界面,答完题后返回并选择其他未作答的试题,直到答题结束后,点击提交试卷,系统自动进行处理和判断,得出考试分数并显示出来,考试分数会自动存入相应数据库的表中,考试系统会自动在本地的数据库中链接生成推送的知识点内容和相应的方案,考生可以在本地浏览或者在连接的APP客户端中进行浏览。

(二)教师端功能实现流程

教师在输入正确的账号后登录教师端,首先是组卷界面,教师可以在这个界面选择自动组卷或者人工组卷,组卷完成后可以点击预览模式进行对试卷的预览,确认无误后就可以点击确定来发布生成的试卷到学生端供考试使用。

参考文献:

[1]李雪玲,管群. 基于 PHP技术的在线考试系统设计与实现[J]. 计算机与现代化, 2009,(2): 118-121

[2]张朋. 用数据库编程开发考试系统[J]. Computer Knowledge and Technology 电脑知识与技术, 2009,(6): 1374-1375

作者简介:

C语言上机考试 篇4

二级C语言考试由笔试和上机两部分。笔试考察的是应试者对基础知识和基本理论的掌握情况,而上机考试主要测试的是应试者的逻辑思维能力和运用C语言的能力,一般包括3种题型:填空题、改错题、编程题。该文对考试题库中编程题作出归纳,总结,希望对应试者有所帮助。

1 上机编程题的知识点

上机考试的知识点大概可以有5个,分别是:基本运算、循环、数组、字符串、结构体。以下对这5个知识点分别举例说明。

1.1 基本运算

例如有以下编程题:

编写函数fun,它的功能是:将两个两位正整数a, b中个位数和十位数合并成一个新的整数放在c中。合并的方式是:将a中的十位和个位依次放在变量c的百位和个位上,b中的十位和个位依次放在变量c的十位和千位上。

例如:当a=45, b=12。调用函数后c=2415。

注意:部分源程序存在文件PROG1.C中,数据文件IN.DAT中的数据不得修改。请勿改动主函数main () 和其他函数中的任何内容,仅在函数fun的花括号中填写编写的如干语句。

程序如下:

分析:这类基础题主要是考察应试者对基本运算的掌握。针对这个题关键是把这两个数的个位和十位求出来,然后再重新组合成一个新数。表示两位数a的个位数的方法是:a对10取余,即a%10;表示两位数a的十位数的方法是:a先除10后在对10取余,即a/10%10。

本题的答案为:c=b%10*1000+a/10*100+b/10*10+a%10;

1.2 循环

循环中最主要的应用就是迭代和遍历。迭代一般是用来解决累加、累乘的问题,可用for语句来实现。

例如有以下编程题:

编写函数fun,它的功能是计算并输出以下多项式的值:

例如:当在主函数中从键盘给n输入5,则输出为:s=-0.28333。

注意:要求n的值大于1但不大于100。部分源程序存在文件PROG1.C中,数据文件IN.DAT中的数据不得修改。请勿改动主函数main () 和其他函数中的任何内容,仅在函数fun的花括号中填写编写的如干语句。

程序如下:

分析:这类题主要是考察应试者对迭代的掌握。关键是找出迭代公式、变量的起始值和最大值。本题中表达式的每一项是都是一个分数,分子都是1,分母初始值是2,最大值是n, 而且每项增1,所以可设一整型变量i, 用for语句实现:for (i=2;i<=n;i++) 。表达式的值用变量s表示,s的初始值为1,每一项之间用减号连接,所以迭代公式,也就是循环语句可表示为s=s-1/i。除此以外,还应注意两点1。变量s的类型,因为表达式的值是实数,所以变量s应定义为double。2.注意基本算术运算中,两整数相除结果为整数,而题目中每一项要得到的结果为实数,所以应用算术运算中数据类型的转换将s=s-1/i改为s=s-1.0/i。

本题的答案为:

1.3 数组

数组可以分为一维数组和二维数组。

1.3.1 一维数组

编写函数fun, 它的功能是:找出一位整型数组中元素的最大值和它所在的下标,最大值和下标通过形参传回。数组元素中的值已在主函数中赋予。

主函数中的x是数组名,n是x中的数据个数,max存放最大值,index存放最大值的下标。

程序如下:

分析:这类题是遍历在数组中的应用。要找出数组中的最大值,必须对数组中每一个元素查找一遍,同时要进行比较。编程思想:可设一变量max, 假设数组中的第一个元素a[0]是最大的,然后后面的元素依次和max进行比较,只要比当前max的值大,就把它放在max中。

本题的答案为:

1.3.2 二维数组

编写程序,实现矩阵的转置。

例如:输入下面的矩阵:

分析:这类题是关键是解决两个问题:1.怎样对二维数组元素的遍历。2.怎样完成矩阵的转置法。因为二维数组元素表示要用到两个下标即行标和列标,所以遍历数组元素用到两层循环。矩阵的转置就是对应行和变成对应列,换句话说就是关于主对角线的对应元素交换。

本题的答案为:

1.4 字符串

例如有以下编程题:

规定函数中只包含字母和*。请编写函数fun, 它的功能是:删除字符串中的所有*。在编写函数时,不得使用字符串函数。

例如:字符串中的内容为:****A*BC*DEF*G*****,删除后,字符串中的内容为:ABCDEFG。

分析:这类题要对字符串中所有字符遍历,把不是*的字符保留下来。本题要解决两个问题:1.怎样判断字符串结束。2.怎样把不是*的字符放在原来的字符串中。字符串都是以’�’作为结束标志,可以把字符串中元素是不是’�’作为判断字符串结束的依据。可设一变量j作为字符串的新下标,初始值为0,只要原字符串中的元素不是’�’, j就加1,特别注意要在最后加上’�’最为字符串结束标志。

本题的答案为:

1.5 结构体

例如有以下编程题:

学生的记录是有学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun, 它的功能是:把分数最低的学生数据放在数组b中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。

程序如下:

分析:这类问题其实编程思想和前面的没有太大的差别,主要考察的是对结构体成员的引用,其引用形式为:结构体变量名.成员名。

本题的答案为:

2 结论

本文只是对计算机等级考试二级C语言的上机题作了简单的分析和总结,仅过分析可以看出,考察的知识点总共有5个,但是基本上都是循环的两方面的应用:迭代、遍历。

参考文献

[1]未来教育与教学研究中心.全国计算机等级考试二级C语言上机考试题库[M].北京:金版电子出版社, 2007.

C语言上机考试 篇5

无忧id 81题按金额从小到大进行排列

已知在文件in.dat中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数readdat是读取这100个销售记录并存入结构数组sell中。请编制函数sortdat(),其功能

要求:按产品代码从小到大进行排列,若产品代码相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数writedat()把结果输出到文件out9.dat中。

部分源程序存在文件prog1.c中。

请勿改动主函数main()、读数据函数readdat()和输出数据函数writedat()的内容。

#include

#include

#include

#include

#include

#define max 100

typedef struct{

char dm[5]; /*产品代码*/

char mc[11]; /*产品名称*/

int dj; /*单价*/

int sl; /*数量*/

long je; /*金额*/

}pro;

pro sell[max];

void readdat();

void writedat();

void sortdat()

{int i,j;

pro xy;

for(i=0;i<99;i++)

for(j=i+1;j<100;j++)

if(strcmp(sell[i].dm,sell[j].dm)>0||strcmp(sell[i].dm,sell[j].dm)==0&&sell[i].je

{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}

}

void main()

{

memset(sell,0,sizeof(sell));

readdat();

sortdat();

writedat();

}

void readdat()

{

file *fp;

char str[80],ch[11];

int i;

fp=fopen(“in.dat”,“r”);

for(i=0;i<100;i++){

fgets(str,80,fp);

memcpy(sell[i].dm,str,4);

memcpy(sell[i].mc,str+4,10);

memcpy(ch,str+14,4);ch[4]=0;

sell[i].dj=atoi(ch);

memcpy(ch,str+18,5);ch[5]=0;

sell[i].sl=atoi(ch);

sell[i].je=(long)sell[i].dj*sell[i].sl;

}

fclose(fp);

}

void writedat()

{

file *fp;

int i;

fp=fopen(“out9.dat”,“w”);

for(i=0;i<100;i++){

printf(“%s %s %4d %5d %5dn”, sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);

fprintf(fp,“%s %s %4d %5d %5dn”, sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);

}

fclose(fp);

上一篇:积极体验教育下一篇:嵌合基因