ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:74.45KB ,
资源ID:3618087      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3618087.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(长江教育c语言上机考试练习.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

长江教育c语言上机考试练习.docx

1、长江教育c语言上机考试练习1.填空题请补充函数fun( ),该函数的功能是求一维数组xN的平均值,并对所得结果进行四舍五入(保留两位小数)。例如:当x10=15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0,结果为:avg=15.030000。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:#include double fun(double x10) int i; long t; double avg=0.0; double sum=0.0; for(i=0;

2、i10;i+) _ 1_; avg=sum/10; avg=_2_; t=_3_; avg=(double)t/100; return avg;main( ) double avg,x10=15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0; int i; printf(nThe original data is :n); for(i=0;i10;i+) printf(%6.1f,xi); printf(nn); avg=fun(x); printf(average=%fnn,avg);答案及评析:【1】sum+=xi 【2】avg*1000 【

3、3】(avg+5)/10【解析】填空1:通过for循环求出10个数的累加和,存于变量sum中;填空2:为了实现四舍五入保留两位小数的功能,应将平均值先扩大1000倍;填空3:将平均值加上5,再除以10,实现四舍五入的功能。2. 改错题下列给定程序中,函数fun()的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之积。请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include int fun( ) int a33,mul=1,i,j; for(i=0;i3;i+) /*found*

4、/ for(i=0;j3;j+) scanf(%d,&aij); for(i=0;i3;i+)/*found*/ mul=mul*aij; printf(Mul=%dn,mul);main( ) fun( );答案及评析:错误1:for(i=0;j3;j+) 改正:for(j=0;j3;j+)错误2:mul=mul*aij; 改正:mul=mul*aii;【解析】错误1:循环结构中,要给变量j赋初值0;错误2:主对角元素的行号和列号相等,所以参加乘法的是aii,而不是aij。3. 编程题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:

5、把分数最低的学生数据放在h所指的数组中。注意:分数低的学生可能不只一个,函数返回分数最低学生的人数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #define N 16typedef struct char num10; int s;STREC;int fun(STREC *a, STREC *b)main( ) STREC sN=GA005,82,GA003,75,GA002,85,GA004,78, GA001,95,GA007,62,GA008,60,GA006,85, GA015,83

6、,GA013,94,GA012,78,GA014,97, GA011,60,GA017,65,GA018,60,GA016,74; STREC hN; int i,n; FILE *out; n=fun(s,h); printf(The %d lowest score :n,n); for (i=0;in;i+) printf(%s %4dn,hi.num,hi.s); /*输出最低分学生的学号和成绩*/ printf(n); out=fopen(out.dat,w); fprintf(out,%dn,n); for(i=0;in;i+) fprintf(out,%4dn,hi.s); fcl

7、ose(out);答案及评析:int fun(STREC *a, STREC *b) int i,j=0,min=a0.s; for(i=0;iai.s) min=ai.s; /*找出最小值*/ for(i=0;iN;i+) if(min=ai.s) bj+=ai; /*找出成绩与min相等的学生的记录,存入结构体b中*/ return j; /*返回最低成绩的学生人数*/【解析】该程序使用循环嵌套,第1个for循环的作用是找出最小值;第2个for循环的作用是找出与min相等的成绩,即最低成绩的学生记录,并将其存入结构体数组b中。二、程序编写题程序编写题占40分,需要将系统提供的程序补充完整,

8、一般是编写一个叫fun的自定义函数,下面以一个真题讲解程序编写题的做法。编写一个函数fun(),它的功能是:使实型数保留2位小数,并对第三位进行四舍五入(规定实数为正数)例如:例如:实型数为1234.567,则fun函数返回1234.57输出;实型数为1234.562,则fun函数返回1234.56输出。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include float fun(float)main( ) float a; printf(Enter a:);scanf(%f,&a); printf(The

9、 original data is:%fn,a); printf(The result is:%fn,fun(a); NONO( );NONO( ) int i; float a; FILE *rf,*wf; rf=fopen(C:Exam24010001in.dat,r); /*rf指向考生文件夹下in.dat文件*/ wf=fopen(C:Exam24010001out.dat,w);/*wf指向考生文件夹下out.dat文件*/ for(i=0;i20;i+) /*循环20次*/ fscanf(rf,%f,&a); /*每次循环,从rf所指文件中读一个数据给a赋值*/ fprintf(w

10、f,%fn,fun(a); /*调用fun函数,并且以上面读取的a的值作为实参 进行fun函数处理,把返回值写入到wf所指文件*/ fclose(rf); fclose(wf);参考答案:float fun(float h) long a; a=h*1000; a=(a+5)/10; return a/100.0;当在fun函数中写入如上答案后,进行编译、链接、运行后,输入数据1234.567后,会输出1234.570000;输入数据1234.562后,输出1234.560000,满足题目要求;如果发现输出的数据不能满足要求,说明编写的fun函数有错误,需要修改,再运行,直到满足题目要求。程序

11、运行完毕后,点击模拟系统的评分(注意:正式考试没有评分),编程题共20个得分测试点,每个得分测试点2.00分,考生共有20个得分测试点正确,合计得分40分。得分:1.340000得分:212.130000得分:341.210000得分:21.910000得分:87.900000得分:32.550000得分:455.310000得分:6656.210000得分:3232.210000得分:345.210000得分:21.320000得分:22.330000得分:2121.9100得分:2121.990000得分:22.000000得分:79.000000得分:90.000000得分:1020.0

12、00000得分:2121.990000得分:12.980000标准答案测试数据:1.340000212.130000341.21000021.91000087.90000032.550000455.3100006656.2100003232.210000345.21000021.32000022.3300002121.9100002121.99000022.00000079.00000090.0000001020.0000002121.99000012.980000这类题目我们可以手动算出计算结果,更为有趣的是,像这类可以手动算出结果的题目,如果我们不编写fun函数代码,而是做一个结果文件,只

13、要这个结果文件的数据和系统的评分数据是相同的,系统也会给我们满分,哪怕我们没有写一行程序!用这种方法的时候,首先要确定这个结果文件的文件名,如上例中的文件名是out.dat(绝大部分情况下也是out.dat)。然后我们在考生文件夹下手动建立这个结果文件out.dat。1. 手动建立out.dat打开考生文件夹C:Exam24010001,用鼠标右键单击in.dat,弹出如图7-1所示的菜单。用鼠标左键单击菜单中的“复制”子菜单。然后用鼠标右键单击考生文件夹的空白处,出现如图7-2所示的菜单。用鼠标左键单击“粘帖”子菜单。此时将在考生文件夹下生成一个名为“复件in.dat”的文件,用鼠标右键单击

14、这个文件名,单击“重命名”子菜单,然后将文件名重命名为out.dat。如果看不到文件的扩展名(即考生文件夹下为in,而不是in.dat),在考生文件夹的上方有一个“工具”菜单,选择“工具”菜单的子菜单“文件夹选项”,出现如图7-3所示的界面。在出现的选项板中选择“查看”选项板,用鼠标拉动中间的滚动条,在其中找到选项“隐藏已知文件类型的扩展名”,将前面小框中的小钩去掉(用鼠标单击它就去掉了),然后单击确定,这时候再看考生文件夹下的文件,就可以看到文件的扩展名了。建立out.dat文件,我们也可以在考生文件夹下点击鼠标右键,新建文本文档,然后对文本文件改名为out.dat即可,用这种方法建立out

15、.dat,同样要注意扩展名的问题。2. 向out.dat中写入数据建好结果文件后,就是怎样得到正确的数据了。有的题目没有办法得到,因此没有办法使用这种方法,我们可以通过综合分析得出正确的数据,例如上面例子。 如果存在in.dat文件(有的程序中不存在in.dat),则都是使用in.dat的数据作输入,然后对这些数据作处理,最后将处理的数据放入out.dat文件中。假如存在in.dat文件,用记事本方式打开in.dat和out.dat(鼠标右击文件in.dat,单击“打开方式”子菜单,出现如图7-4所示的界面,选择记事本方式打开文件)。 7-1 复制菜单 图7-2 粘贴菜单 图7-3 文件夹选项

16、 图7-4 选择记事本这样,in.dat文件就用记事本打开了,用同样的方法使用记事本打开out.dat。比如本例中,打开in.dat文件的内容为: 1.3421423 2121.134555 314.2121 21.90789 87.8999 32.545646 455.31232 6656.2121 3232.2121 345.2121 21.32324 22.334999 2121.909 2121.9899 21.9999 78.9999 89.9999 1019.999 2121.98999 12.9879那么我们一个一个数据进行分析。第一个数据1.3421423,根据题目要求是对它保

17、留两位小数,对第三位作四舍五入处理,因此得出数据1.34。注意输入到out.dat文件的格式,在本例中调用fprintf(wf,%fn,fun(a);来输出数据,采用%fn输出格式,也就是用%f的方式输出到文件中,输出结果是1.340000。注意小数总共有6位,如果你不记得了,可以运行VC,看看是输出几位。输出数据后还要输出一个回车符,也就是要换行。 我们将out.dat文件的第一行写为1.340000,然后保存文件。运行评分程序,看看评分情况。 我们发现,在考试得分情况的第一行有如下信息: 得分:1.340000 再看看分数,得分2分。 成功了!没有写任何程序! 将所有数据按相同的方法分析完

18、,把正确的数据输入到out.dat文件中,最后保存这个文件。这样,我们就可以在不编写程序的情况下做对这道题了。注意:不是每一道题都能使用这种方法,而且这种方法存在风险,如果数据的输出格式判断错误,将会使程序结果完全错误,如上面例子中少写一个0就不得分。但是,这确实是一个万不得已的办法。使用这种方法做题,需要特别注意的问题:(1)out.dat文件中的数据格式一定要正确。例如本例中在NONO函数中的语句fprintf(wf,%fn,fun(a);我们已经学过fprintf为一个文件函数,这条语句表示将调用函数返回的结果写入wf所指的文件中,本例中wf指向out.dat文件(由语句wf=fopen

19、(C:Exam24010001out.dat,w);可知;同时,这条语句可以知道考生文件夹为C:Exam24010001);fprintf函数双引号部分的内容决定了out.dat中的数据格式,本例为输出一个数据后换行。假如修改fprintf函数为:fprintf(wf,%f,fun(a);去掉换行,则所有数据在同一行内写。假如修改fprintf函数为:fprintf(wf,num=%fn,fun(a);则out.dat中的数据应为如下格式:num=1.340000num=212.130000num=341.210000num=21.910000num=87.900000num=32.55000

20、0num=455.310000num=6656.210000num=3232.210000num=345.210000num=21.320000num=22.330000num=2121.910000num=2121.990000num=22.000000num=79.000000num=90.000000num=1020.000000num=2121.990000num=12.980000(2)并非每套编程题目都有NONO函数,fprintf函数可以直接出现在main函数内,使用方法都相同。例如:实验七部分:模拟一套上机考试真题的编程题没有NONO函数。如果读者会自己编写程序,完全可以忽略N

21、ONO函数,通过我们前面给出的NONO函数的注释(考试不会给出注释),可以知道NONO函数是一个评分函数,与我们的程序编写没有关系。只有在使用本节介绍的方法时,需要注意NONO函数中的部分语句。(3)本例中是把in.dat中的数据按照题目要完成的功能写到了out.dat中;部分题目没有in.dat,此时必定是以程序中的数据作为参照数据,读者可以自己分析。三、程序编写题有以下几个特点(1)程序编写题必须要能正确运行才能得分。无论程序写了多少,如果不能运行或者运行的结果是错误的均不能得分。 (2)程序的运行结果以最后一次运行结果为准。在修改了程序之后,必须要重新运行程序才能有效。 (3)编写程序时

22、,不要对NONO函数和main函数做任何修改,以免引起不必要的错误。 (4)在编写程序时,可以使用任何可以调用的函数,完全不必要理会题目中禁止使用函数的那些条件。四、考试注意事项 在考试的一个星期之前将教材第四分册中的50套题目完全熟练练习,这些题目与上机考试模拟系统中的题目是一一对应的,然后自我随机抽查。如果能够完全做对,并且每道程序填空题都能在2分钟之内做完,每道程序修改题都能在2分钟之内做完,每道程序编写题都能在10分钟内做完,就算练习合格了。 考试时间为90分钟。一般情况下,考生最好提前半个小时到场,以便熟悉环境。 在考试过程中,如果出现死机等情况,不用慌张。这时应举手向监考老师反应,

23、由监考老师解决,排除故障的时间不会计入考试时间。 如果中途想重新做原来的题目,可以进入考试文件夹下目录,下在VC中重新打开,就可以重做题目了。 考试时题目由系统随机抽取,题库中由50套题。相邻两个人的题目一般是不相同的,所以上机不可能出现抄袭现象。抽出的题目难易程度并不相同,但是题目抽出之后就不能重新抽取了。二级C语言上机考试改错题总结 根据多年研究全国计算机等级考试二级C语言,发现很多考生对上机考试存在很大的问题。现将在教学过程中对二级C语言上机考试题库总结的经验和大家分享,希望能对我们考生的考试有所帮助,顺利通过考试!以下是对上机考试改错题的做题方法和总结,改错题的错误主要分为以下几类:1

24、. if或while语句若错误行是if或者while语句,则要注意以下点:1)首先判断是否正确书写if或while关键字;2)然后看有没有用小括号把整个表达式括起来,若没有则加上小括号;3)若条件表达式中有指针变量而且没有指针运算符时,则加上指针运算符*;4)若if条件表达式中只有一个等于号即数学等号(=),看是否需要改写成两个等于号即逻辑等号(=);5)若if条件表达式为其他的比较运算符,则一般是进行逆转或加一个等于号;6)do-while循环结构,while表达式最后有一个分号;2. for语句若错误行是for语句,则要注意以下几点:1)首先判断for有没有书写正确;2)然后看for中的表

25、达式是不是用分号(;)隔开,若不是则改为分号。记住是分号(;),不是逗号(,)!3)再者,分析for中的三个表达式,是否符合题意;第一个表达式表示起始条件,第二个表达式表示终止条件,第三个表达式表示循环变量的变化。3. return语句若错误行为return语句,则要注意以下几点:1) 首先看是不是正确书写return关键字;2) 然后看是不是缺少分号,若是则加上分号即可;3) 再者判断return后的变量或表达式是否正确;这种错误需要根据题意来分析,分析返回变量或表达式的值和类型。4. 赋值语句若错误行是赋值语句,则要看赋值是否正确,然后看赋值运算符是否写正确。5. 定义语句若错误行是定义语

26、句,则要注意:1) 首先分析变量类型名是否写对;2) 然后分析给变量赋初值是否正确;3) 若以上均不是,则看是不是少定义了某个变量或少了花括号;6. 表达式错误问题 若错误行中有整数1除以某个表达式或变量时,必须把整数1改为1.0;若变量或表达式是整型时,则只能进行强制类型转换。7. 字符串类问题若错误行中有字符串结束符,则特别要注意结束符有没有写错。但是要区分清楚字符o和数字0。8. 指针类问题若错误行中有指针变量,并且该变量名之前没有指针运算符,则一般都是加上指针运算符;9. 函数首部类问题若错误行是函数首部,则要注意:1) 首先看该行最后有没有分号,若有则删掉分号;若括号参数间是分号则要

27、改为逗号;2) 形参和实参类型不一致问题 若实参是个地址或数组名或指针变量名,则对应的形参肯定是指针或数组;若实参是二维数组名,则对应的形参应该是行指针或是二维数组; 若后面用到某形参时有指针运算符,则该形参必为指针类型; 若形参是二维数组或指向M 个元素的指针变量,则该二维数组的长度必须与main函数中对应数组的第二维的长度相同。3) 函数类型不一致问题 若函数中没有return语句,则函数类型为void; 若函数中有return语句,则函数的类型必须与rerun后的变量类型一致;10. 语法错误问题1)语句缺少分号。若错误号中语句没有以分号结束则加上分号;2)变量名不一致。C语言是区分大小写的,若错误行中有大写字母一般都改为小写字母;11. 逻辑错误问题这种题型主要是表达式错误,占的题量比较多而且我们没有统一的做题方法,需要我们具体问题具体分析。12. 书写错误问题特别注意我们的注释部分,注释是以/*开始,以*/结尾,不能有多余的,比如“/*注释部分*/*/”是错误的!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1