




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机二级C上机考试攻略希望对各位有所帮助哈<!=程序调试题部分=!>一、 错误数量从第二十四次(2006年4月)考试开始至今,错误数量一致设为5处,改对一处得8分。二、 推荐改错流程1、阅读试题。(1)看清试卷上要求修改的程序名称。正式考试时工作目录下会出现多个C源程序,打开时不要弄错了.(2)了解程序功能。试卷上有该程序功能说明,并且有时还会出现在程序中使用的一些变量、数组等的名称,读题时即可了解这些数据的作用,有助于等会儿更好地分析程序。(3)注意“注意”。试卷上改错题一般会有“注意:不得增加行或删除行,不得更改程序结构。”字样。但偶然还是有例外。曾在第二十次第二套题中,出现
2、了“注意:可以增加和修改程序行,但不得删除程序中的整行。在一处增加的程序行不得超过两行,不得更改程序的结构。”。改错时增加了一行代码。2、通读程序。阅读完试卷的说明后,先别急着去编译、连接和运行。应先通读整个程序,了解程序的整体结构和算法实现。修改你能发现的错误,有些错误是相当明显的。C程序从主函数开始运行,阅读程序也需从主函数开始。当发生函数调用时,再转到被调用函数去阅读,执行结束或遇return语句返回。C常见错误地方(按一般程序流程):(1)输入语句(相当常见,基本每一次考试都有)常见错误为2种情况:a. 用scanf函数接收整型或其它数值型变量值。错误:scanf (“%d”, m )
3、 改正:m改为&m点评:在scanf函数后的接收参数均使用的是地址值。如果是一般变量,前加取地址运算符&,如果是指针,直接使用指针变量名(指针本身代表地址),如果是字符数组接收字符串。则直接使用字符数组名(数组名代表数组首地址)。此外还要注意输入格式控制是否正确。b. 用gets接收字符串时。错误:char a100; gets(a100); 改正:gets(a);点评:当定义了一个数组例如a100, 在程序的执行语句中再也不可能见到a100了,如果是访问数组元素,其下标只能是099。另外,当数组用作函数实参时,一般都使用数组名,其意为:将数组首地址传递给形参。(2)函数调用时
4、(相当常见,基本每套改错题都在调用时有错)函数调用格式:函数名(实参1,实参2。)。函数调用时的错误原因较为复杂。大致可分为以下几种情况:a. 函数调用时参数个数不对。函数调用要求实参和形参(定义函数时首部括号里的参数)个数要相等。这种错误一般是调用时缺少实参。最近在第25次考试第二套题中出现过。b. 函数调用时参数类型不匹配。函数调用要求实参和形参类型要一致。形参和实参类型如果不一致,则需修改其中一方。具体是哪一方出错需结合具体题目判定。这种错误出现次数最多。c. 函数返回值出问题或与定义返回类型不一致。对于涉及到有返回值的被调用函数,要注意几个问题。1. return返回的值是否满足题意要
5、求.例如第27次第一套题return后未返回mid.2. 返回值类型是否同函数名前的返回类型保持一致. 例如第27次第一套题函数返回了整型值,但函数返回类型却定义为void类型.3. 如果在主函数中将函数返回值赋给了某变量,该变量类型是否和函数返回类型一致.这种出错情形较少见。(3) 实现程序功能的核心代码处在实现该程序功能的关键代码部分,通常会设置1到2处,甚至有时会设置34处错误。这部份的错误需要仔细分析该算法才能找出错误的地方。这部分中的错误多为运算符或表达式出错。经常出错的运算符:”<”和”<=”, ”>”和”>=”, ”=”和”=”, ”=”和”!=”, ”&
6、lt;”和”>”, ”+=”和”-=”, ”&&”和”|”, ”!”等。经常出错的表达式:如指针法访问数组元素等。例如:在第26次考试第一套改错题是选择法对8个数由大到小排序。在实现选择法这段代码中一共出现了4处错误。原代码:for(i=0;i<n-1;i+)p=i;for(j=1;j<n;j+) /* j=1改为j=i+1 */if(ap>aj) /* >改为<*/p=j;temp=ap;ap=aj; /* aj 改为 ai*/aj=temp; /* aj 改为 ai*/(4)输出语句部分。输出格式控制或输出表达式有误。如:第25次第3套,
7、针对长整型变量n.输出代码:printf(“ The result is:%d”,n); /* %d 改为 %ld*/第27次第5套:输出整型数组a中的元素,原代码:for(i=0; i<n; i+) printf(“%4d”,a); /* a改为ai */(5)其它地方:a. 数据定义及初始化。阅读完毕后,对各数据含义应该明确了,此时检查各数据是否正确定义,尤其注意被调用函数形参定义部分(每一个形参都应单独定义),另外部分数据可能要在定义时初始化。例如:在第27次第2套被调用函数中:int n,i=0; /*n应改为n=0*/在第27次第3套中:int fun(int s , int
8、n ) /* int s 应改为 int *s */b. 预处理命令。主要是头文件包含可能不正确。例:第二十三次第一套题,在程序中使用了pow()函数,错误代码: #include <string.h> /* string.h 改为 math.h */3、编译、连接;试运行通读并修改完程序后,按F9键编译和连接(注意:请勿直接使用Ctrl+F9运行程序,因为如果程序无错(error)但有警告(warnning),直接运行将无法看到警告)。如果编译和连接过程报错或警告,根据屏幕下方消息框中的提示信息进行相应修改,直到无错和警告为止。然后再使用Ctrl+F9运行程序,如果结果不正确,此
9、时有2种办法:(1)回到第2步,继续读程序修改错误,然后再编译、连接和试运行。重复这2步一直到正确为止。(2)进行第4步。4、使用跟踪执行功能,定位出错位置。(此处操作较复杂,需教师结合具体试题讲解示范一次)注意:在进行这一步之前,你应该要完成程序语法错误的修改,即这时程序是可以执行的,只是执行结果不正确。TurboC提供了一个跟踪执行(Trace into)的功能,快捷键F7。它是把程序的运行分解为以行为单位,即每按一次F7,只执行程序中一行代码。同时配合菜单最后一项“Break/Watch”菜单中相应命令,设置要观察的变量或表达式。在每执行完一行后,观察屏幕下方“watch”框中你添加的要
10、观察的各个数据的变化情况。如果在哪一行执行完毕后,数据的变化和预期的不一致,那么错误地方肯定就在刚才执行的这一行。如果碰到循环次数很多的循环,还可配合Toggle breakpoint命令设置断点。<!=编程题部分=!>、阅读编程要求举例:第27次第3套编程题:/*/编写程序test3-2.c(60分)按要求编写程序:(1)编写函数fun,其功能是:统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中。例如:形参s所指字符串为:abcdef35agd3khe7,则数字出现的次数为4。(2)在main函数中,从已有文件test3-2.in中读出一行字符(字符个数不超过
11、80个)到字符数组str中,调用函数fun,统计出数字出现的次数,并在屏幕上输出结果。/*/(1) 注意要求你编写的程序文件名字,。文件名不能乱取,否则极有可能被判0分。(2) 了解程序功能和结构。注意在题目中出现的变量、数组、函数和文件的名字,在编程时也应采用这些名字。此题要求编写main和fun两个函数,fun函数形参有s和t,main函数里要从文件”读字符串到字符数组str里。进一步分析还可知s应为字符型指针,t为整型指针。程序结构为main数执行输入、调用fun函数和输出,fun函数完成统计。二、建立程序文件(1)新建文件。选择“File”菜单>“new”命令,将新建一个名为的文
12、件。(2)修改文件名。选择“File”菜单>“Write to”命令。直接输入文件名,此题即直接输入test3-2.c后回车。修改后可从屏幕右上角看到是否是“TEST”,如果不是,重新执行“write to”命令。注意:(1)文件名大小写无影响。(2)第2步也可用选择“File”菜单>“Save”命令,不过此时可修改文件名以及路径。而路径在考试时是不允许修改的(未保存在考试工作目录下的文件不能上传至服务器)。(3)由于此前考试中有不少学生误改了路径或名字,造成编程题得0分。所以有时考试前机房工作人员好人做到底,已将编程题文件建好了,内容为空,此时考生只需通过”File”菜单>
13、”Load”打开该文件进行编写即可。三、 编写程序(好习惯:编写过程中随时按F2保存)首先要知道C语言编程是非常灵活的,同一道题给不同的人编程是不可能完全一样的。所以无固定方法可循,不过在考试时,如果题目要求越多,限制条件越多,则编的程序应该越接近。在第27次考试及以前,编程题均涉及文件,大多数时候还涉及函数调用。以此题为例:(1) 依据题意打好程序框架结构:定义已知道的数据和函数,文件打开和关闭,数据输入和输出,函数调用。#打开头文件 此题结构:#include <stdio.h> 头文件可根据需要最后添加返回类型 fun(形参定义) void fun(char *s, int
14、*t) 定义数据;功能实现; void main() void main() char str80; 定义数据; int n; /* 保存统计的数字字符个数*/打开文件; FILE *fp;输入语句; fp=fopen(“”,”r”); /*打开出错处理代码略*/函数调用; fgets(str,80,fp);输出语句; fun( str , &n );关闭文件; printf(“%dn”,n); fclose(fp);注意:如果涉及函数调用的编程,则最好将被调用函数定义放在主函数前,此举可避免在主函数声明被调用函数。(2)程序核心功能代码编写。此部分代码是编程题的精华部分,各种功能的实
15、现是由一系列的运算所组成。需要大家多多练习,掌握一些基本功能算法实现,再灵活加以运用,才能编写出正确的代码。此部分无固定格式可言。附该题fun函数代码:void fun(char *s,int *t) int i; *t=0; for(i=0;*(s+i)!='0'i+) if(*(s+i)>='0'&&*(s+i)<='9') (*t)+;四、 调试程序。刚刚编写好的程序,保存完毕后即进入调试阶段(即修改程序错误),这时过程可参考第一部分改错题。只是可以增加删除行,也可修改结构。<!=友情提醒=!>1、
16、为了考试需要。请熟练掌握TC菜单中的以下命令:FILE(文件)菜单:load 打开; save 保存; new 新建;write to 另存为;os shell 切换至DOS提示符下,输命令行参数时需使用此命令。Quit 退出;RUN(运行)菜单:run 运行; user screen 切换至输入输出界面。为了更好调试程序的需要,请掌握以下菜单命令:RUN(运行)菜单:trace into 跟踪执行;Break/Watch(断点及观察)菜单:Add watch 向观察窗口添加待观察的变量或表达式;Delete watch 从观察窗口中删除最新增加的观察变量或表达式;Edit watch 在观察
17、窗口中编辑最新增加的观察变量或表达式;Remove all watches 从观察窗口中删除所有的观察变量或表达式;Toggle breakpoint对光标所在的行设置或清除断点;Clear all breakpoints 清除所有断点;View next breakpoint 将光标移动到下一个断点处。2、 C语言是大小写严格区分的,请勿混用。3、 TC界面窗口和全屏切换:Alt+Enter。推荐使用全屏,有的符号在窗口下容易混淆。比如“<”和“(”,“>”和“)”。4、 如果程序运行时发生死循环(症状为不停地输出或光标停住按任意键均无反应)。请使用Ctrl+Break组合键中止
18、程序运行,再根据提示按一下Esc键即可返回到编辑状态。此时你还会在屏幕上看到一根绿色横条,绿条一定处在一个循环结构中,并且死循环就发生在该循环结构。5、 在改错题修改过程中,修改过的地方最好在草稿上做好记录。6、 程序在运行之前应先保存(切记)。如果程序中非法访问了某内存地址(如访问数组越界),在运行时可能会提示异常而自动关闭TC。如果程序没保存?尤其是编程题,那只好重新再写了。7、 编程题涉及的文件都是文本类型的文件。请注意以下几点,应该对编程有所帮助。a. 文件打开方式:由于都是文本类型,所以打开方式请区分并记住6种:“r”: 打开只读文件,该文件必须存在;“r+”:打开可读写的文件,该文
19、件必须存在;“w”: 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件;“w+”:打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件;“a”:以追加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留;“a+”:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。其中较常用的是“r”, “w”, “r+”和“a”4种b. 文件读写:在文件一章,大家学到了不少关于文件的读写函数。针对文本类型的文件而言,记住以下3个函数足矣:(1) fprintf ( )函数:用法和printf()极为类似,仅多一参数指向文件的指针fp,例如:往屏幕上输出字符数组a中字符串:printf ( “ %s ”, a );往文件里输出(写入)字符数组a中字符串:fprintf (fp, “ %s ”, a);(2) fscanf ( )函数:用法和scanf() 极为类似,仅多一参数指向文件的指针fp,例如:从键盘输入2个整数存放到m和n里:scanf ( “%d, %d”, &m, &n);从文件输入(读出)2个整数存放到m和n里:fscanf (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部编本四年级语文下册学习活动策划
- 市政工程施工中的质量问题及防治措施
- 200字作文春节11篇
- 2025学年人教版三年级上册语文素养提升计划
- 网络虚拟货币交易及兑换协议
- 快乐暑假的欢乐瞬间话题作文5篇
- 小学《缩写故事》编写教学案例
- 元宵节500字作文7篇
- 联合采购供应商合作合同书
- 暑假最难忘的一天记事作文15篇
- 湖北省武汉市2025届高三年级五月模拟训练试题数学试题及答案(武汉五调)
- 直接打印800字作文纸
- DB34T 5006-2023 太阳能光伏与建筑一体化技术规程
- D503-D505防雷与接地(下册)彩色版
- 2023年科技特长生招生考试试卷word
- GB/T 34560.1-2017结构钢第1部分:热轧产品一般交货技术条件
- GB/T 29318-2012电动汽车非车载充电机电能计量
- VSTi音源插件列表
- 安全文明施工措施费清单五篇
- 医院感染暴发报告处理流程图
- 中等职业学校学生实习鉴定表
评论
0/150
提交评论