全国计算机等级考试二级C语言上机答题技巧
- 格式:pdf
- 大小:17.74 KB
- 文档页数:14
二级学员考试资料考试流程和技巧:1.按照要求登陆考试系统,填写准考证号验证信息正确后就开始答题,点击左上角的“答题”,下拉菜单共3种题,点击程序填空题开始依次答题!2.程序填空题:将答案填在相应的题号这里,注意把序号和下面的横线也删除!3.程序改错题:一般有2—3处错误,均在以“*******found*******”下,把它下面那行删除,写上答案即可!4程序设计题:就是将答案照搬填在题目大空处即可!5.每道题,程序输入完成,写完答案后,一定要先点击左上角的下拉菜单的“保存“按钮,再点击右上角的“编译”(第二个按钮),“运行”(红色叹号按钮),这3个按钮必须要依次点击,不然零分!6.注:点击“编辑”按钮后,弹出的对话框一律都点击“是”按钮。
7. 二级C语言上机考试经典题分析:一、程序填空题1、给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。
例如,有9个正整数:1 5 7 23 87 5 8 21 45按升序排列时的中间数为:8处理后主函数中输出的数列为:8 8 8 23 87 8 8 21 45请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!#include <stdio.h>#define N 9int fun(int x[]){ int i,j,k,t,mid,b[N];for(i=0;i<N;i++) b[i]=x[i];for(i=0;i<=N/2;i++){ k=i;for(j=i+1;j<N;j++) if(b[k]>b[j]) k=j;if(k != i ){/**********found**********/t=b[i]; b[i]=___1___; b[k]=t;}}/**********found**********/mid=b[___2___];for(i=0; i<N; i++)/**********found**********/if(x[i] ___3___ mid) x[i]=mid;return mid;}main(){ int i, x[N]={1,5,7,23,87,5,8,21,45};for(i=0; i<N; i++) printf("%d ",x[i]);printf("\nThe mid data is: %d\n",fun(x));for(i=0; i<N; i++) printf("%d ",x[i]);printf("\n");}二、程序修改题1、给定程序MODI1.C中,fun函数的功能是:删除b所指数组中小于10的数据。
计算机等级考试二级C语言题型分析与应试技巧计算机等级考试二级C语言题型分析与应试技巧以下是应届毕业生店铺提供的计算机等级考试二级C语言题型分析与应试技巧,帮助考生在最后阶段考前冲刺,为考试做好准备。
一、命题原则全国计算机等级考试大纲明确规定:二级C语言考试由“二级公共基础知识”和“二级C语言程序设计”两大部分组成,考试内容严格按照“宽口径、厚基础”的原则设计,主要考核我们对该学科的基础理论、基本知识和基本技能的掌握程度,以及运用所学理论和知识解决实际问题的能力。
二、考试要求根据命题原则,大纲对我们如何复习应试也提出了相应的要求。
主要强调了两个方面:一是强调我们对基本概念、基本理论和基本知识点的掌握;二是强调我们综合运用所学知识进行实际应用到程序编写中的能力。
也就是说,我们要想通过二级C语言考试,不仅要熟练地掌握该学科的基本理论知识和操作技能,还要具有较强的分析与解决实际问题的能力,真正做到学以致用。
应做到以下两点:1.学好基础知识这里所说的基础知识是指C语言中基本概念、基本原理和规定关键字、基本结构等基本知识点。
二级C语言考试中,概念性的知识点比较多。
我们对这些基础知识要用心理解、记忆。
这一类型题目一般都是考察教材中的概念,如果这样简单的题目都丢分,那就实在可惜。
2.掌握操作技能和综合运用能力二级C语言考试注重对程序设计实际操作能力的考察,要求我们运用所学理论知识和操作技能解决实际问题。
二级C语言考试考核的主要内容就是程序设计的基本操作和把所学理论知识和操作技能综合起来,并能在实际应用中加强对这些知识的熟练掌握。
三、应试对策我们在备考时,要针对考试大纲和考试要求进行复习,主要应注意以下几个方面:1.牢固、清晰地掌握基本知识二级C语言考试的重点是基本知识的掌握情况和实际编程应用,但其前提条件是对基本知识点的掌握。
因此,我们正确地理解、熟记基本概念和原理是通过考试的前提条件。
那么我们要如何才能做到这一点呢?我们可以通过以下3方面来实现:① 在考前冲刺阶段要注意“比较总结”学习成果,特别是对一些关系复杂的知识点,通过比较、总结更容易理解、牢记。
全国计算机二级C语言考试答题策略及技巧计算机二级C语言考试是广大计算机专业学生必须要应对的一项考试。
为了帮助大家更好地应对这个考试,本文将介绍一些答题策略和技巧,希望能为大家提供一些帮助。
以下是具体的内容:一、了解考试大纲和考试要点在准备考试之前,首先要详细了解考试大纲和考试要点。
考试大纲会明确列出考试的内容范围,而考试要点则会告诉我们在考试中需要重点关注的知识点和考点。
通过对这些内容的了解,我们可以以针对性的方式进行备考,提高考试效率。
二、刷题是关键在备考过程中,刷题是非常关键的一步。
通过解决大量的真题和模拟题,我们可以熟悉考试的题型和难度,掌握解题思路和方法,提高我们的答题水平。
此外,刷题还有助于我们发现自己的薄弱环节,并有针对性地进行复习和强化,从而更好地应对考试。
三、合理安排备考时间备考时间的合理安排对我们备考的效果起到至关重要的作用。
首先,我们要合理划分时间,进行系统而有条理的学习。
其次,要根据自己的实际情况,合理安排每天的学习时间,保证高效率地进行学习和复习。
此外,还要留出一定的时间进行模拟考试和自我检测,检验自己的学习成果。
四、注重基础知识的掌握在备考过程中,要注重对C语言基础知识的掌握。
这些基础知识是我们应对考试的基础,也是我们进行进一步学习和解题的前提。
例如,掌握C语言的语法规则、常用的数据类型和相关操作,以及常见的控制语句和函数等。
通过对这些基础知识的深入理解和掌握,我们可以更好地应对考试中的各类题目。
五、注意细节和常见错误在解答题目的过程中,我们要注意细节和常见错误。
在C语言中,一些小错误常常会导致程序的错误或逻辑的混乱,从而影响整体的解题效果。
因此,在解答题目时,我们要仔细审题,注意细节,并且避免一些常见的错误。
例如,注意变量的命名规范、数组的越界问题、指针的使用等等。
六、做好总结与复习在备考的最后阶段,我们要对之前的学习进行总结和复习。
通过总结,我们可以对所学知识进行整合和梳理,形成系统而完整的知识框架。
计算机二级考试C语言答题注意事项基本原则是计划好做题的时间,不要急燥,保持稳定的答题速度,应将熟悉的、会做的、容易的先做。
选择题和操作题在进行的过程中,都一定要看清题目,审好题,弄清题目要考核的知识点,能够迅速回忆相关的知识,综合运用平时上课老师所教授的做题的方法和技巧,进行答题。
10分例如:以下C语言用户标识符中,不合法的是A)_1B)AaBc C)a_b D)a—b这个题目是考核的是标识符的命名规则的问题,我们知道C中合法的标识符必须以字母、下划线开头,由字母、数字、下划线组成,据此应该选择D。
再如:有以下程序#includemain(){int a=1,b=0;if(!a) b++;else if(a==0)if(a)b+=2;else b+=3;printf(”%d\n”,b);}程序运行后的输出结果是A)0B)1C)2D)3这个题目考核选择结构的控制流程。
题目采用的是else~if结构,实际上是if的嵌套。
不管怎样,始终牢记这种嵌套的if语句的执行流程:从上向下逐一对if后的表达式进行检测。
当某一个表达式的值为非0时,就执行与此有关子句中的语句,其余部分不执行,直接越过去。
如果所有表达式的值都为0,则执行最后的else子句。
当执行以上程序时,首先定义a、b并赋初值1、0,然后进入if语句。
当从上向下逐一检测时,!a 的值为0,则越过b++,进入else 后的if语句,检测到a= =0的值为0,则越过if(a)b+=2;语句,因为前面所有if子句中的表达式的值都为0,因此执行最后else子句中的语句b+=3,求出b为3,然后退出if结构,接着输出b的值,所以选择D。
(3)选择题(21)-(40),这20个都有一定难度,涉及C后面的章节,如函数、数组、指针、字符串、结构体、预处理等内容,有部分都会给定出一段代码,根据代码做选择,因此,需要读懂C的简单代码然后做了选择。
例如:有以下程序(函数fun只对下标为偶数的元素进行操作)# include<stdio.h>void fun(int *a;int n){int i,j,k,t;for (i=0;i<n-1;i+=2){k=i;for(j=i;ja[k])k=j;t=a[i];a[i]=a[k];a[k]=t;}}main(){int aa「10」={1,2,3,4,5,6,7},i;fun(aa,7);for(i=0;i<7;i++)printf(”%d,”,aa[i]));printf(”\n”);}程序运行后的输出结果是A)7,2,5,4,3,6,1B)1,6,3,4,5,2,7C)7,6,5,4,3,2,1D)1,7,3,5,6;2,1通过对代码的阅读,采用模拟运行的方法,可知此题的算法是将数组元素中偶数下标的元素进行从大到小的排序,它使用的是选择排序法。
【上机题命题及答题要点】1、近年来江苏省高校上机题目难度有所下降。
本轮上机命题的难度系数及全国计算机等级考试二级C语言接近。
2、改错题通常有3~4个错误。
错误分为两大类,一类是语法出错,这类错误比较查错和容易修改,即在编译时报的错误。
另一类是结果出错,即程序的算法出错,这类错误需认真审题。
3、编程题必须掌握C语言的文件,应熟悉文件指针的定义,文件的打开及文件的输入输出。
编程题的固定框架。
必须记忆。
以C01的编程为例。
#include <stdlib.h> /*库函数exit(0)需要*/#include <stdio.h> /*定义文件指针时需要的头文件*/…………..{}void main(){ FILE *fp;所有数据类型的说明和定义if((fp=fopen("t:\\myf2.out","w"))==NULL){ printf("\nCan't open the file!"); exit (0);}函数调用(具体问题具体分析)结果输出printf("\nMy number is:120992340\n");fprintf(fp,"\nMy number is:1292340\n");fclose(fp);}4、必须熟悉常用算法。
5、江苏省高校计算机二级C语言上机编程题常考问题:字符串相关问题、素数相关问题、回文数相关问题、矩阵(二维数组)相关问题、特殊数问题(如,合数、真因子或质因子之和、水仙花数、亲密数、完数、数制转换、哥德巴赫猜想等)。
6、掌握文件输出操作标准形式。
【2013年3月江苏省等考上机真题解析】江苏省高等学校非计算机专业学生(C01)计算机基础知识和应用能力等级考试上机试卷二级C语言(试卷代号C01)(本试卷完成时间70分钟)一、改错题(16分)【程序功能】判断一个N×N方阵(N为奇数)是否为魔方阵。
上机考试注意事项1.上机考试试题分析与解题方法二级C上机考试由程序填空题、程序改错题和程序设计题组成,不同的题目解题方法也不一样,具体分析如下:(1)程序填空题:该题目一般为两个空,考生应该首先将程序中的下划线删除,然后将程序编译一次(不是运行,编译的快捷键ctrl+F7),如果没有错,那么就可以填空了。
填空内容一般为分支结构或循环结构里面的条件、函数调用、函数的返回值、scanf函数的地址项列表、break和continue语句等。
(2)程序改错题:程序改错题就是修改程序中的错误,使得程序能够完成题目中的要求。
考生需要注意的是程序的错误有两类,一类称为编译或者语法错误,这类错误只要考生掌握一些常见的编译错误,就能迎刃而解了。
常见的编译错误见附录1;另一类错误称之为逻辑错误,这类错误是比较隐蔽的,需要多加练习才能熟悉的。
针对二级考试,常见的逻辑错误有:①存储结果值的变量未初始化或者初始化错误,比如和变量s为float 类型,初始化确为s=1,恰好在程序的后续部分有s/n这样的表达式(其中n为int类型),那么计算结果必然有错误;②死循环,如果程序中有循环,一定要注意对循环条件的检查。
(3)程序设计题:该题目一般是让大家编制一个子函数,这个子函数完成题目的要求的功能。
该题目是较难的一道题,大家首先应该弄清楚这个子函数应该完成的功能,然后可以用笔进行分析,抓住完成该功能的关键,最后编写程序,程序编写完之后,需要做验证,如果源程序中有验证的部分,只要按照题目要求的数据进行输入,检查结果与题目中的结果是否保持一致即可;如果没有,首先在main函数中找到调用该函数的语句,然后在他后面将结果进行输出进行验证(注意:因为题目中没有验证的数据,所以需要大家自己根据子函数功能设计数据)或者直接在子函数中输出。
计算机二级考试《C语言》的考生技巧计算机二级考试《C语言》的考生技巧计算机二级考试从今天开始正式拉开帷幕了,同学们是否担忧觉得自己准备尚不充分?不要忧虑!下面店铺为大家搜索整理的关于计算机二级C语言考试技巧,欢迎参考借鉴,预祝您考试成功!想了解更多相关信息请持续关注我们店铺!1.笔试试卷分析笔试试卷由选择题和填空题组成。
选择题和填空题一般对基本知识和基本操作进行考查,它主要是测试我们对相关概念的掌握是否全面、理解是否准确、思路是否清晰。
(1)选择题分析选择题为单选题,是客观题,每道题的分值为2分,试题覆盖面广,一般情况下我们不可能做到对每个题目都有把握答对。
考试时就需要我们学会放弃,对于不确定的题目不要在上面花费太多的时间,先记住,然后作答其他题目。
等最后有空余的时间再回过头来仔细考虑这些题目。
二级C语言笔试题目众多,分值分散,我们一定要有全局观,合理地安排考试时间。
选择题一般分为:正面试题和反面试题。
设问是正确观点的题称为正面试题,绝大多数选择题为正面试题;设问是是错误观点的题称为反面试题。
我们在解答选择题时可以如下几个答题方法来答题,这样可以提高答题速度和准确率。
① 顺选法:如果对题中的4个选项,一看就能肯定其中的1个是正确的,就可以直接得出答案。
对于一些比较容易看出正确选项的题,可以使用排除错误选项。
② 排除法:排除法是将错误答案一一排除的方法。
对题中的4个选项逐个去掉错误的选项。
对于一些比较容易看出错误选项的题,可以使用排除错误选项。
③ 比较法:这种办法是没有办法的办法,如果有些题实在是没有把握,那么就只有比较四个选项中那个更接近题目要求了(这也称之为“蒙猜法”)。
(2)填空题分析填空填一般难度都比较大,一般需要我们准确地填入字符,往往需要非常精确,错一个字也不得分。
在分值方面,每题也是2分。
在作答填空题时要注意以几点:① 答案要写得简洁明了,尽量使用专业术语。
② 认真填写答案,字迹要工整、清楚,格式要规范、正确,在把答案往答题卡上填写后尽量不要涂改。
二级c语言编程题可以这样做,也可以拿满分!全国计算机等级考试上机考试第三题(程序编写题)做题技巧基本步骤篇第一步:认真分析题目意思,了解清楚题目的要求。
(这一步非常关键,这直接关系到后面的所有步骤,每个题目的意思都不一样)第二步:点答题,选择prog1.c,进入程序编写题的答题窗口。
第三步:直接对程序进行编译、链接、执行(就是不改程序,不加、不减少程序原有内容,直接完成三个步骤。
这三步就不配图了,如果连这个都不会,我想,你还是放弃去参加二级C语言的考试吧)。
然后得到如下的黑色窗口。
这个时候,程序在提醒你输入两个数字(这里,因题而异,有的可能是字符串或其它,具体根据题目意思来),那我们就随便输入两个数字,两个数字用空格间隔,然后回车,直到你看到Press any key to continue,然后再按任意健(比如回车健)继续。
第四步:找到考生文件夹,打开考生文件夹,下面图1提示了你考生文件夹的路径,图2表示已经正常打开了考生文件夹(打开方式:单击“考生文件夹”下面的路径,带下划线的)。
第五步:找到out.dat文件(如上图2中已经标记的部分,有时你可能看到的仅仅out,而没有后面的.dat),然后右键单击out.dat文件,选择“记事本”打开out.dat文件。
第六步:按题目要求(就是第一步分析的结果)修改out文件,修改完成后,保存;保存完后,直接关掉out文件,关掉VC软件。
恭喜你,上机程序编写题,满分,24分!!!全国计算机等级考试上机考试第三题(程序编写题)做题技巧特殊情况篇一、考试时,如果考生文件夹处的链接不可以用,可以通过以下方式打开考生文件夹:桌面左下角的开始,点运行,然后在输入框里输入考生文件夹路径,然后回车,就能进入考生文件夹。
二、若考生文件夹里,你只看到的out.dat文件,没有后缀名.dat,而仅仅是out,如何显示.dat。
进入我的电脑后,点击上面的工具,然后点击文件夹选项,然后选择查看。
二级c语言考试应对技巧C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
那么二级c语言考试应对技巧都有哪些?以下仅供参考!具体如下:【考点1】C程序C语言程序结构有三种:顺序结构,循环结构(三个循环结构),选择结构(if和switch)【考点2】main函数每个C语言程序中main函数是有且只有一个。
读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
【考点3】存储形式计算机的数据在电脑中是以二进制的形式保存。
最低的存储单元是bit(位),位是由为0或者1构成。
byte是指字节,一个字节=八个位。
数据存放的位置就是它的地址。
【考点4】注释是对程序的说明,可出现在程序中任意合适的地方,注释从“”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。
【考点5】书写格式每条语句的后面必须有一个分号,分号是语句的一部分。
一行内可写多条语句,一个语句可写在多行上。
【考点6】标识符合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
并且第一个必须为字母或则是下划线。
第一个为数字就错了。
C语言标识符分如下3类(1)关键字。
它们在程序中有固定的含义,不能另作他用。
如int、for、switch等。
(2)预定义标识符。
预先定义并具有特定含义的标识符。
如define、include等。
(3)用户标识符。
用户根据需要定义的标识符,符合命名规则且不与关键字相同。
关键字不可以作为用户标识符号。
maindefinescanfprintf都不是关键字。
迷惑你的地方If是可以做为用户标识符。
因为If中的第一个字母大写了,所以不是关键字。
【考点7】实型数据实型数据的合法形式:小数形式和指数形式。
掌握判定指数形式合法*。
2.333e-1就是合法的,且数据是2.333×10-1。
考试口诀:e 前e后必有数,e后必为整数。
计算机二级c语言操作题做题技巧一、选择题做题技巧1. 仔细阅读题干,注意题干中的关键词。
2. 理解选项,排除明显错误的选项。
3. 对于不确定的选项,可采用排除法,逐步缩小范围。
4. 利用C语言的基础知识,对选项进行逻辑推理。
二、填空题做题技巧1. 仔细阅读题目要求,明确填空内容。
2. 根据题目所给的代码片段,分析上下文关系。
3. 根据C语言的语法规则,填写合适的语句或表达式。
4. 检查填空后代码的逻辑性和语法正确性。
三、编程题做题技巧1. 理解题目要求,明确编程目的和功能。
2. 仔细分析题目给出的示例输入输出,理解题目的逻辑。
3. 设计算法,将问题分解为小的步骤。
4. 编写代码,注意代码的可读性和逻辑性。
5. 运行测试,检查代码的正确性和完整性。
6. 考虑边界条件和异常情况,确保程序的健壮性。
四、调试题做题技巧1. 阅读题目,了解需要调试的代码段。
2. 运行代码,观察程序的运行结果。
3. 根据题目要求,分析程序中的错误。
4. 利用调试工具,逐步跟踪程序的执行过程。
5. 修改错误,确保程序能够正确运行并满足题目要求。
五、综合应用题做题技巧1. 综合运用选择题、填空题、编程题和调试题的技巧。
2. 分析题目的综合性要求,合理分配解题时间。
3. 注意题目中的细节要求,避免因小失大。
4. 综合运用C语言的知识和技能,解决实际问题。
六、注意事项1. 保持冷静,合理安排考试时间。
2. 仔细审题,避免因粗心大意而失分。
3. 遇到难题不要慌张,先做自己熟悉的题目。
4. 检查答案,确保没有遗漏或错误。
5. 考试结束后,及时复习总结,为下一次考试做好准备。
计算机二级C语言上机编程题技巧这里的特殊方法的特殊之处在于只能用于编程题,且看不懂程序也能得分,甚至得满分,嘿嘿,不错吧!下面就进入正题,详细介绍这种方法。
首先我们要对这种方法的原理有一个清晰的认识,这样才能举一反三,事半功倍。
下面通过一个例子来详细介绍这种方法。
首先大家看一下上机环境的界面,如下图大家注意这里,这是考生文件夹的路径,我们接下来的工作就是围绕这个文件夹展开的。
开始考试,由系统为我们抽好题目后,单击,仔细阅读题目,明确题目要我们做什么后,点击窗口左上方的,在下拉菜单中选择程序编写题,这时会打开VC6.0的程序界面,一大段繁杂的程序很无奈吧,别急,下面开始干活了。
首先点击中的图标编译程序,此时图标就被激活了,点击此图标运行程序(至于为什么要这么做,下面你就会知道的),出现如下图所示的窗口,大家可以看到,程序要求你输入m的值,随便输入一串字符后回车,然后会有文字出现,随便按个键后这个窗口会关闭,以上步骤是做每道编程题前都必须做的,请大家谨记!准备工作做好后,我们接下来进入考生文件夹,会看到和两个文件,我们就要对它们做手脚。
首先用记事本打开in文件,如图所示,大家看第一行文字:3 ABCDEFGHIJK,一开始看不懂这是啥意思,那么看看题目的要求吧:,看出点啥没有?没错,文字中的"3"代表的是m的值,即把第一到第三个字符“ABC”平移到字符串的最后,看例子也知道,"3"后面的字符串就是我们所要处理的对象。
然后打开out文件,如图所示,看到第一行的字符串,它就是对应in文件中的第一行的内容,根据题目要求,把out文件中的第一行文字改为“DEFGHIJKABC",下面的每一行都是对应in文件中的每一行的,如上所示完全修改完毕后,保存并关闭记事本。
(特别注意,完成修改后千万不要再运行程序了,否则我们所做的工作就都泡汤了!!!)好了,交卷走人吧,你已经拿到了编程题的40分,只要前面再做对2个空你就通过了,哈哈,很爽吧!大部分的题目都可以用这种方法做,只要你对题目的意思明白的话就行了,但是,有些题目的答案需要以正确的格式出现才能得分。
1二级C语言上机编程题做题方法和技巧总结一、字符串操作(一)删除*号1、编程题中涉及“删除*号”的相关题目:8、9、19、45、54、57、61、65、77、90、92、1002、编程题第8题的操作过程(1)题目:假设输入的字符串中只包含字母和“*”号。
请编写函数fun,它功能是:除了字符串前导的*号之外,将串中其他*号全部伤处。
例如,字符串中的内容:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****ABCDEFG。
(2)分析:题目的含义可以解析为将中间和尾部的*号全部删除,剩余前导*号和字母。
①前导*号:指第一个字母以前的字母,例如****A*BC*DEF*G*******中的前导*有4个;②尾部*号:指最后一个字母以后的字母,例如****A*BC*DEF*G*******中的尾部*有7个;③中间*号:除了前导和尾部*号以外的*号。
(3)【步骤1】打开“编程题”题目,分析NONO函数NONO( ){/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/ FILE *in, *out ;int i ; char s[81] ;in = fopen("D:\\k01\\24010001\\in.dat","r") ;out = fopen("D:\\k01\\24010001\\out.dat","w") ; for(i = 0 ; i < 10 ; i++) {}fclose(in) ;fclose(out) ;}①FILE *in, *out ; /*定义了两个文件类型的指针变量in和out*/ 知识点参照课本P115页相关理论知识,文件指针的定义:FILE *指针变量名;②int i ; char s[81] ;/*定义了一个整型的变量i,用来表示循环的递增;定义了一个字符类型的一维数组s,用来存放后面题目中数据。
上机填空题技巧总结一、填空题之方法1.上机填空题占30分,一般有3个空需要填写,每个空为10分;2.填空题做题之前必须弄清题目含义,抓住关键字,例如:要求对数组进行从小到大排序,则将会出现大于符号,如果是从大到小排序则出现小于符号;3.填空题中出现频率最高的就是函数的调用、函数的首部、函数的返回值等和函数相关的问题,因此必须牢牢掌握住函数的基本特征;4.填空题中有的“空”很难,考生除了掌握必须的C语言知识之外,还需要很好的逻辑思路,如果一个空将花很多时间来解决,那么建议使用“死记硬背”的方法来缩短复习时间;5.上机题库中100题有部分题目是重复的或是相似的题目很多,同学们要使用比对的方法尽量去理解;6.多练习,多思考,多总结二、填空题与结构体相关1.结构体成员引用:读清楚题目要求:(1)要求将形参a所指结构体变量的数据赋值给函数中的结构体变量b(2)从例如可以看出来:结构体中的学号和姓名变为了1002和“LiSi”,但是3门课成绩没有变化#include <stdio.h>#include <string.h>struct student {long sno;char name[10];float score[3];};void fun(struct student a){ struct student b; int i;/**********found**********/b = __1__;→题目要求将形参a的值赋值给结构体变量b,因此填:ab.sno = 10002;→学号变为了10002/**********found**********/strcpy(__2__, "LiSi");→姓名要变为”LiSi”,则要引用b中的name成员printf("\nThe data after modified :\n");/*讲解是一句带过不用多讲*/ printf("\nNo: %ld Name: %s\nScores: ",b.sno, ); /*讲解是一句带过不用多讲*//**********found**********/for (i=0; i<3; i++) printf("%6.2f ", b.__3__);→分析:这个是一个循环语句,执行3次循环,printf("%6.2f ", b.__3__)要求输出是一个实型数据的成员,因此可以得知是score成员,因为score是一个数组,因此填:b.score[i],当i变化就可以取出第一门、第二门、第三门课的成绩printf("\n");}main(){ struct student s={10001,"ZhangSan", 95, 80, 88};int i;printf("\n\nThe original data :\n");printf("\nNo: %ld Name: %s\nScores: ",s.sno, );for (i=0; i<3; i++) printf("%6.2f ", s.score[i]);printf("\n");fun(s);}23题:(1)从例如中可以看出:变化的是结构体中的学号和姓名#include <stdio.h>#include <string.h>struct student {long sno;char name[10];float score[3];};void fun( struct student *b){ int i;/**********found**********/b__1__ = 10004;→题目中t的学号变化为了10004,因此填写:b->sno,不能填写b.sno,因为b是一个指针/**********found**********/strcpy(b__2__, "LiJie");→t的姓名变为了”LiJie”,因此填写:b->name}main(){ struct student t={10002,"ZhangQi", 93, 85, 87};int i;printf("\n\nThe original data :\n");printf("\nNo: %ld Name: %s\nScores: ",t.sno, );for (i=0; i<3; i++) printf("%6.2f ", t.score[i]);printf("\n");/**********found**********/fun(__3__);→此处为函数调用,根据形参的类型来判定实参,形参struct student *b为结构体指针,联系main函数定义部分只有struct student t和b 的类型相同,因此可知需要填的是:&tprintf("\nThe data after modified :\n");printf("\nNo: %ld Name: %s\nScores: ",t.sno, );for (i=0; i<3; i++) printf("%6.2f ", t.score[i]);printf("\n");}2.函数调用and结构体:重点注意:(1)把a中地址作为函数返回值返回函数(2)观察可知a中的学号、姓名边为了10002和“zhangSan”,每门课的成绩增加了1分#include <stdio.h>#include <string.h>struct student {long sno;char name[10];float score[3];};/**********found**********/__1__ fun(struct student *a)→根据函数调用t = fun(&s);可知函数返回类型和t的类型相同,struct student s={10001,"ZhangSan", 95, 80, 88}, *t;可知t的类型为struct student *{ int i;a->sno = 10002;strcpy(a->name, "LiSi");/**********found**********/for (i=0; i<3; i++) __2__ += 1;→题目要求将每门课成绩增加1分,因此填为:a->score[i],不能为a.score[i]或是a.score/**********found**********/return __3__ ;→题目要求返回a的地址,a本身就是一个指针,因此填入a即可}main(){ struct student s={10001,"ZhangSan", 95, 80, 88}, *t;int i;printf("\n\nThe original data :\n");printf("\nNo: %ld Name: %s\nScores: ",s.sno, );for (i=0; i<3; i++) printf("%6.2f ", s.score[i]);printf("\n");t = fun(&s);printf("\nThe data after modified :\n");printf("\nNo: %ld Name: %s\nScores: ",t->sno, t->name);for (i=0; i<3; i++) printf("%6.2f ", t->score[i]);printf("\n");}3.结构体和排序:重点注意:(1)排序的格式:红色部分为考试中的重点,必须记住三、 填空题与链表相关从小到大排序: for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]>a[j]) {t=a[i];a[i]=a[j];a[j ]=t;}从大到小排序: for(i=0;i<n-1;i++)for(j=i+1;j<n ;j++) if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j ]=t;} void fun(struct student a[], int n){/**********found**********/__1__ t;→此处要求填入t 的类型,可以从t = a[i];中得知t 和a 数组的类型必须一致,void fun(struct student a[], int n)中得知a 为结构体类型,因此填写:struct student int i, j;/**********found**********/for (i=0; i<__2__; i++)→根据排序的格式填空,因此记住是关键 for (j=i+1; j<n; j++) /**********found**********/if (strcmp(__3__) > 0)→按照姓名字典顺序从小到大排序,因此: strcmp(a[i].name,a[j].name),此处需要特别注意 { t = a[i]; a[i] = a[j]; a[j] = t; } }main(){ struct student s[4]={{10001,"ZhangSan", 95, 80, 88},{10002,"LiSi", 85, 70, 78},{10003,"CaoKai", 75, 60, 88},{10004,"FangFang", 90, 82, 87}};int i, j;printf("\n\nThe original data :\n\n"); for (j=0; j<4; j++){ printf("\nNo: %ld Name: %-8s Scores: ",s[j].sno, s[j].name); for (i=0; i<3; i++) printf("%6.2f ", s[j].score[i]); printf("\n"); }fun(s, 4);printf("\n\nThe data after sorting :\n\n"); for (j=0; j<4; j++){ printf("\nNo: %ld Name: %-8s Scores: ",s[j].sno, s[j].name); for (i=0; i<3; i++) printf("%6.2f ", s[j].score[i]); printf("\n"); } }1.带头结点的链表:p=h->next,考点分析:(1)带头结点链表的表现形式:带头结点的链表,头结点head不存放任何的数据,从头结点的下一个结点开始存放数据,因此考试中如果出现 p = __1__ ;则填入p=h->next (2)链表数据排序对数组元素从小到大排序:for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j ]=t;}对链表元素进行从小到大排序:while (p) /*相当于数组排序中的for(i=0;i<n-1;)*/{q = p->next;/*相当于j=i+1*/while (q) /*相当于for(;j<n;){if (p->data > q->data) /*相当于if(a[i]>a[j])*/{ t = p->data; p->data = q->data; q->data = t; }/*如果a[i]>a[j]成立,则交换数据元素,让数据变成从小到大排序*/ q = q->next;/*相当于q++*/}p = p->next;/*相当于p++*/}15题:#include <stdio.h>#include <stdlib.h>#define N 6typedef struct node {int data;struct node *next;} NODE;void fun(NODE *h){ NODE *p, *q; int t;/**********found**********/p = __1__ ;→链表为带头结点,因此填写:p=h->nextwhile (p) {/**********found**********/q = __2__ ;→比较两个链表中元素的大小,因此q=p->next,这样q指向了p的下一位while (q) {/**********found**********/if (p->data __3__ q->data)—>从小到大排序,因此使用大于符号,填写:>{ t = p->data; p->data = q->data; q->data = t; }q = q->next;}p = p->next;}}main(){ NODE *head;int a[N]= {0, 10, 4, 2, 8, 6 };head=creatlist(a);printf("\nThe original list:\n");outlist(head);fun(head);printf("\nThe list after sorting :\n");outlist(head);}2.不带头结点的链表:p=h(1)不带头结点链表的表示形式:(2)void fun(NODE *h){ NODE *p, *q; int t;p = h;→不带头结点的链表while (p) {/**********found**********/q = __1__ ;→q指向p的下一位,因此填入:q=p->next/**********found**********/while (__2__)→判断q有没有到末尾,因此填入p或是p!=NULL{ if (p->data > q->data){ t = p->data; p->data = q->data; q->data = t; }q = q->next;}/**********found**********/p = __3__ ;→ while (p)为循环条件,要构成循环p就得自加或是自减,从循环体中得知没有进行p++之类的操作,因此此处填入:p=p->next或是p++}}main(){ NODE *head;int a[N]= {0, 10, 4, 2, 8, 6 };head=creatlist(a);printf("\nThe original list:\n");outlist(head);fun(head);}3.链表的返回值:/**********found**********/__1__ fun(NODE *h)→根据函数调用head=fun(head);和 NODE *head; 知道函数的返回值为NODE *{ NODE *p, *q, *r;p = h;if (p == NULL)—>如果p数据位空,则表示p中没有任何的数据,因此就无需再进行逆置,故return NULL;return NULL;q = p->next;p->next = NULL;/**********found**********/while (__2__)→此空判断q有没有为空,讲解时候不容易理解,考生记住即可,填入:while(q)或是while(q!=NULL){ r = q->next;q->next = p;p = q;/**********found**********/q = __3__ ;→填入:q=r;次空理解起来较难,因此考生必须认真记忆,老师无需多讲}return p;}main(){ NODE *head;int a[N]={2,4,6,8,10};head=creatlist(a);printf("\nThe original list:\n");outlist(head);head=fun(head);printf("\nThe list after inverting :\n");outlist(head);}四、填空题与文件相关1.文件指针定义(1)文件定义的形式:FILE *fp;(2)举例:/**********found**********/__1__ fp;分析:在涉及文件类型的上机题目时fp指的就是文件指针,因此在前面填写类型时候直接写入:FILE *fp;2.文件打开(1)文件打开的格式:fopen(“文件名”,“打开方式”);(2)举例:void fun(char *filename, STU n){ FILE *fp;/**********found**********/fp = fopen(__1__, "rb+");分析:缺少了文件名,形参filename是实参传过来的文件名,因此这里直接填入:fp = fopen(filename, "rb+");表示以“读和写”的方式打开一个二进制文件filename 3.文件关闭(1)文件关闭的格式:fclose(文件指针);(2)举例:fp = fopen("file1.txt", "w");/*第一次以写的形式打开文件file1.txt*/fprintf(fp, "%s %d %f\n", s, a, f);/**********found**********/__2__ ;fp = fopen("file1.txt", "r");/*第二次以读的形式打开文件file1.txt*/分析:打开文件以后必须将它关闭,因此该空要填:fclose(fp);(3)类似题目:4.测试文件结束(1)判断文件结束的feof函数形式:feof(fp)(2)经常出现在while()的表达式里面,常见形式为:while(!feof(fp))测试指针fp有没有结束(3)举例:FILE *fp;STU n; int i;fp = fopen(filename,"rb+");/**********found**********/while (!__1__)分析:填写feof(fp)测试fp指针又没有结束5.设置文件位置函数(1) fseek设置文件位置:fseek(文件指针,位移量,移动起始点)(2)考试一般考查的是移动的起始点:SEEK_SET表示文件开始,SEEK_CUR表示文件当前位置,SEEK_END表示文件末尾(3)举例:/**********found**********/fseek(fp, -1L*sizeof(STU), __2__);分析:题目要求:重写形参filename所指文件中最后一个学生的数据,因此文件指针fp要指向最后的位置,则填入:fseek(fp, -1L*sizeof(STU), SEEK_END);6.读二进制文件(1)fwrite(存入数据的指针,每一个数据占有的字节,输入数据的个数,文件指针);void fun(char *filename, STU n){ FILE *fp;/**********found**********/fp = fopen(filename, "rb+");/*打开文件filename*//**********found**********/fseek(fp, -1L*sizeof(STU), SEEK_END);/*定位到最后一个学生的位置*//**********found**********/fwrite(__3__, sizeof(STU), 1, fp);/*将形参n新学生的数据覆盖最后一个学生的数据,因为fp已经定位到了最后一个学生的位置*/fclose(fp);}分析:题目要求用新数据覆盖最后一个学生的数据,因此填入:fwrite(&n, sizeof(STU), 1, fp);填入的是地址,不能是:fwrite(n, sizeof(STU), 1, fp);7.写二进制文件函数(1)fread(读出数据的指针,每一个数据占有的字节,输出数据的个数,文件指针);(2)上机考试填空题没有出现需要填写的空,考生作一般的了解8.fcanf函数数和fprintf函数(1)fscanf(文件指针,格式控制字符串,输入列表项);(2)fprintf(文件指针,格式控制字符串,输出列表项);(3)fscanf函数和fprintf函数在上机编程题中详细介绍,这里不作重点讲解,了解即可五、填空题与函数相关1.函数调用:#include <stdio.h>double f1(double x) 定义了f1函数,有一个形参{ return x*x; }double f2(double x, double y) 定义了f2函数,有两个形参{ return x*y; }/**********found**********/__1__ fun(int i, double x, double y)→根据函数调用r = fun(1, x1, x2);可知函数返回值和r类型一致,double x1=5, x2=3, r;r为doule类型,则函数返回double{ if (i==1)/**********found**********/return __2__(x);→此处为函数调用,实参数为1,根据实参和形成个数一致可知,调用的为f1函数else/**********found**********/return __3__(x, y);→此处的实参数为2,则调用f2函数}main(){ double x1=5, x2=3, r;r = fun(1, x1, x2);r += fun(2, x1, x2);printf("\nx1=%f, x2=%f, x1*x1+x1*x2=%f\n\n",x1, x2, r);}六、填空题与数组相关1.一维数组中存在这样一些类型:(1)求一个数值数组中的所有值的平均值和把大于或者小于平均值的数辅导例外一个数组中。
二级C语言上机编程题技巧一、方法总结1、二级C语言上机编程题在二级上机考试中属于较难题型,因此很多同学都害怕通过不了。
综合往年的考试,结合考试大纲,每年考试的编程题都有一定的规律和方法,只要同学们认真熟练使用做题的方法,通过考试是没有问题的。
2、编程题做题方法一:使用C语言特有的函数做题(1)编程思想:使用C语言函数库中的做题,做题时必须注意包含对应的头文件(2)考题举例:题库中的第37题,要求将数字字符串转化为对应整数,例如“-1234”转化后为-1234。
做题时需要添加头文件#include "stdlib.h",然后在fun函数中写入程序return atol(p);其中atol(p)表示将p从字符串转化为长整型数。
最后编译,运行后输入测试数据后即可得到满分。
#include <stdio.h>#include <string.h>#include "stdlib.h"long fun ( char *p){return atol(p);}(3)方法总结:该类方法可以适用的题目较少,同学们了解即可。
3、编程题做题方法二:使用规律做题(1)编程思想:部分题目的答案是固定的,不会因为输入的数据改变而改变,因此这部分题目我们直接将答案记住即可,减少编程的麻烦。
(2)考题举例:题库中的70题,求cos(x)-x=0的一个实根。
做题时候在fun函数中输入return0.739085;后点击编译和运行即可,无需输入测试数据。
(补充:如果需要输入测试数据,程序在输出的黑屏上面会提示,不过一般是英文提示,所以同学们要格外小心)#include <math.h>#include <stdio.h>double fun(){return 0.739085;}(3)考题总结:该题为每年必考的题目,因此同学们要将答案熟记,以便大家能顺利通过考试。
对2级C语言题型分析和解题技巧1.笔试试卷分析笔试试卷由选择题和填空题组成。
选择题和填空题通常对基础知识和基础操作进行考察, 它关键是测试我们对相关概念掌握是否全面、了解是否对的、思绪是否清楚。
(1)选择题分析选择题为单选题, 是客观题, 每道题分值为2分, 试题覆盖面广, 通常情况下我们不也许做到对每个题目所有有把握答对。
考试时就需要我们学会放弃, 对于不拟定题目不要在上面花费太多时间, 先记住, 然后作答其它题目。
等最终有空余时间再回过头来仔细考虑这些题目。
二级C语言笔试题目众多, 分值分散, 我们一定要有全局观, 合理地安排考试时间。
选择题通常分为: 正面试题和反面试题。
设问是对的见解题称为正面试题, 绝大多数选择题为正面试题;设问是是错误见解题称为反面试题。
我们在解答选择题时可以以下多个答题方法来答题, 这么可以提高答题速度和对的率。
①顺选法: 假如对题中4个选项, 一看就能肯定其中1个是对的, 就可以直接得出答案。
对于部分比较容易看出对的选项题, 可以使用排除错误选项。
②排除法:排除法是将错误答案一一排除方法。
对题中4个选项逐个去掉错误选项。
对于部分比较容易看犯错误选项题, 可以使用排除错误选项。
③比较法:这种措施是没有措施措施, 假如有些题实在是没有把握, 那么就只有比较四个选项中那个更靠近题目规定了(这也称之为“蒙猜法”)。
(2)填空题分析填空填通常难度所有比较大, 通常需要我们对的地填入字符, 往往需要很对的, 错一个字也不得分。
在分值方面, 每题也是2分。
在作答填空题时要注意以几点:①答案要写得简练明了, 尽也许使用专业术语。
②认真填写答案, 笔迹要工整、清楚, 格式要规范、对的, 在把答案往答题卡上填写后尽也许不要涂改。
③注意, 在答题卡上填写答案时, 一定要注意题目的序号, 不要弄错位置。
④对于有两种答案情况, 只需填一个即可, 多填并不多给分。
2.上机试题分析一个C语言源程序总是在一定硬件和软件环境支持下进行编辑、编译、连接和运营, 而这其中每一步所有直接影响程序调试效率。
二级c上机考试注意事项
二级C语言上机考试的注意事项如下:
1. 仔细阅读题目要求:在开始答题之前,确保你充分理解了题目的要求和限制条件。
明确自己应该写出什么样的程序。
2. 分析问题:在编写代码之前,先仔细思考问题的解决方法和算法。
理解问题的本质,并采用适当的算法来解决问题。
3. 规划好程序结构:在开发代码之前,考虑如何划分程序的结构,如定义函数、变量和数据结构等。
合理规划好程序结构能够提高代码的可读性和可维护性。
4. 注重代码风格:写出整洁、规范的代码可以更好地展示你的编码能力。
在编写代码时,注意使用适当的缩进、命名规范和注释,使代码易于阅读和理解。
5. 功能完备性:保证代码实现了所有题目要求的功能,并考虑边界条件和异常情况。
尽量进行充分的测试和验证,确保代码的正确性和稳定性。
6. 注意时间和空间复杂度:在解决问题时,需要考虑算法的时间和空间复杂度。
选用高效的算法可以提高程序的执行速度和节省内存空间。
7. 调试错误:如果在编写代码时出现错误或运行结果不正确,不要惊慌。
仔细分析错误的原因,逐步进行调试和排查,找出错误所在并进行修复。
8. 注意考试时间:确保合理分配时间,合理安排完成每道题目的时间。
如果时间有限,先完成较为简单的题目,再去解决较为复杂的问题。
9. 提交前检查:在提交答卷之前,仔细检查代码的正确性和完备性。
确保所有题目都已经完成,并且代码没有语法错误和编译错误。
10. 沉着应对:在上机考试时,保持冷静和集中注意力,专注于问题的解决方案。
遇到困难时,可以先放松一下,冷静思考解决方法。
上机编程题答题技巧
上机编程题的特点和说明
一、在二级C程序设计上机考试中,要求完成一个独立
的函数的编程。
目前教育部考试中心已出版了上机考试习题集,这些有助于学习编程,但考生应当在学习过程中理解基
本的算法,通过实际上机操作积累经验,才能掌握基本的编
程能力。
二、进行编程测试时,建议按以下步骤进行
1.首先仔细审题,了解试题的要求,记下试题给出的输
入和输出例示,以便检验在完成指定的函数后程序运行的结
果是否正确。
2.当在Visual C++6.0环境下调出源程序后,应对照
函数首部的形参,审视主函数中调用函数时的实参内容,以
便明确在函数中需要处理的数据对象。
3.理解试题的要求,审视主函数中调用函数的方式,
若在表达式中调用函数(如把函数值赋给某个对象),则要求有函数值返回,需注意函数的类型,并在函数中用return 语句返回函数值;若主函数中仅用语句形式调用函数,则需
要通过形参间接地返回所得结果。
4.选择适当的算法进行编程,输入程序语句。
不要忘。