前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高效备考方法-程序修改题

高效备考方法-程序修改题

作者头像
用户6755376
发布2020-02-25 14:08:40
9190
发布2020-02-25 14:08:40
举报

程序修改题

一、程序修改题解题技巧

1. 程序修改题占18分,一般有3个地方有错误,题型简单 2. /***************found***************/称为错误栏,每道题的错误处就在这个错误栏的下面。 3. 做改错题时先看出错的地方,分析语法错误,如果能用C语言的语法判断出错误,改之即可 4. 没有语法错误即分析逻辑错误,逻辑错误可以从几个方面分析: (1) 从题目的要求中找到错误,例如:题目要求计算s=1+1/2+1/3+,……,+1/n,那么循环的范围就应该是for(i=0;i<=n;i++),但是考试中经常将其写为:for(i=0;i<n;i++) (2) 根据题目中的关键字改错,例如:题目中要求从小到大排序,则“从小到大”就是关键字 (3) 重点注意函数的调用、函数的返回值类型,函数的形参,这个是上机考试中的重点 (4) 注意细节,请参考以下为考生总结的知识 5.多练习,多思考,多总结

二、程序修改题总结

1.关键字出错 指的是C语言中的关键字出错。C语言的关键字都是小写字母,并且在VC++6.0中以蓝色字体显示,如果常见的关键字是黑色字体,可以断定关键字出错; 例如:If(substr[k+1]=='\0') 2.格式出错

(1)C语言中的语句、基本结构、函数等都有相应的规范格式,程序中将这些格式书写错误,将导致编译器无法识别程序,因此导致出错; (2)语句末尾少分号 (3)for结构格式出错 for结构的格式:for(表达式1;表达式2;表达式3){ 循环体语句},for结构体中表达式必须以分号隔开,改错题中经常出现将for结构中分号错写为逗号的情况; (4)if结构格式出错 if结构的格式:if(表达式),if后面必须加上小括号。 (5) 数组格式出错 一维数组的定义形式:类型名 数组名[常量表达式],谨记[]是数组的独有特征 (6) 函数格式出错 记住函数名后面一定是小括号,不能是方括号,方括号只有在数组下标中用到 (7) 命令行格式错误 #include “stdio.h”,include和define前面都必须有# 3. 使用了未定义的变量:变量必须先定义后执行

(1) 0(零)和o(字母欧)的区别 区别:零像鸡蛋,字母欧像乒乓球 (2) P(大)和p(小)的区别 区别:一般在定义时候p为小写,但是在使用的时候变为大写P,做题时候一定要细心。 (3) 普通变量大小写的区别 定义时候和使用时候变量的大小写不一致,违背了变量必须“先定义后执行”的原则。

三、 改错题之逻辑错误

1. 运算符号出错:

(1) C语言中除号是“/”不是“\” (2) 赋值号(=)和等号(= =)混淆 记住在if语句中出现赋值号(=)一般是讲它改为等号(= =)。 2. 表达式的取值范围出错

当遇到计算表达式的累加或是累减时,一定用到循环来完成相应的操作。 3. C语言中的除法运算

这个考点同样考查表达式的相关知识。 记住:1/2的值为零,只有1.0/2或是1.0/2.0的值为0.54. 找最大值和排序问题

遇到这种题目在改错题中最容易考查的是大于(>)、小于(<)等符号的变化,当你查找出错的地方没有语法错误,也没有使用了未定义的变量时,记住这个口诀:将大于改为小于,将小于改为大于! 5. 函数的返回值及其参数:重点

代码语言:javascript
复制
int  fun(int  x,int  y)   
{ 
  if(x>y)return  x;                           
   else  return  y; 
} 
main() 
{ 
  int a,b,c; 
  scanf(“%d%d”,&a,&b); 
  c=fun(a,b); 
  printf(“最大值为:%d”,c); 
}

(1) 函数的返回类型: 在上面的例子中fun函数的返回值是int,如果将int改为double,很明显是错误的。从两个地方来看,首先return x;中x的类型必须和fun函数中的返回值相同,x是整型。其次c=fun(a,b);中fun函数将一个返回值赋值给了变量c,说明函数返回的值一定是整型。 记住:函数调用、函数的返回值和return中数据类型必须一致! (2) 函数传递的参数:

代码语言:javascript
复制
int  fun(int  *x,int  *y) 
{ 
  if(*x>*y)return  *x; 
  else  return  *y; 
} 
main() 
{ 
  int a,b,c; 
  scanf(“%d%d”,&a,&b); 
  c=fun(&a,&b); 
  printf(“最大值为:%d”,c); 
}

一定注意:传递的是值还是地址。比较上面两个例子大家很容易区别传递的是值还是地址,第一个例子调用函数的时候传递的是值,因此在fun函数的形参中x和y仅仅是普通的变量,而第二个例子中调用函数的时候传递的是地址,因此在fun函数的形参中x和y就是两个指针变量。 (3) 指针的使用:

代码语言:javascript
复制
 int  fun(int  *x,int  *y)   
{   
  if(*x>*y)return  *x;   
  else  return  *y; 
 }

在此例中fun函数的形参是x和y,它们的类型是整型的指针,那么在fun函数的函数体中使用到x和y的值时一定要区分:x>y比较的是x和y所存变量地址的大小,*x>*y才是比较值的大小。如果存在*x=x+y;的类似情况一定是错误的,必须要将赋值号的左右两边的类型变 为一致。 6. 数组

(1)数组下标的初始值:数组下标从零开始,到长度减1结束。 考试技巧:当出错行在定义部分时,先检查该定义语句有没有语法错误,再看定义语句中的变量有没有赋初始值,最后看变量赋的初始值有没有正确。定义初始值有窍门,遇到累加时,用来存放累加和的变量一般赋值为零,遇到求阶乘时,用来存放阶乘值的变量一般赋值为1。 (2) 普通变量的初始值: 依照上面的技巧,我们同样可以将它延伸到普通变量中。 (3) 数组和字符串长度减1: 当使用数组中的元素时,最大值只能到数组长度减1。字符串以’\0’作为字符串的结束标志,因此取值最大也只能到字符串长度减1。 (4) 数组下标往后走 当题目要求将一个数组中的元素直接赋值或是以某种方式复制到另一个数组中时,接受数据的数组中的下标要自增。 7. 素数

(1) 判断一个数是否是素数的方法很多,掌握一种即可,首先掌握判断一个素数的方法; (2) 素数的定义:是自然数;只能被1和本身整除,2到本身减1之间的数不能整除该数。 (3) 判断m是否为素数的格式: for(i=2;i<m;i++) if(m%i= =0) break; if(m==i)表明m是素数; (4) 素数只能被1和m,那么用2到m-1之间的数除m,如果有一个数能整除m,说明m不是一个素数,就不用再判断后面的数值了,用一条break语句提前结束函数;如果一直都不能整除,则说明m是一个素数。那么用循环语句表示2到m-1之间的数的语句为:for(i=2;i<m;i++),如果在这个范围内的数值有一个数值能整除m,说明m不是一个素数,则可以提前结束循环,break;那么结束之后这个循环中的变量i的值小于m,如果m是一个素数的时候,则一直都不执行break语句;则循环语句结束的时候是在i==m的时候退出循环。结束循环以后,进行i和m的比较,如果i小于m,则表明m不是一个素数;如果i等于m,则表明m是一个素数。 (5) 求素数的题目只要把格式给带进去就可以了。 8. 链表

(1) 链表的题目分为带头结点的和不带头结点的链表; (2) 带头结点的链表:带头结点的链表的第一个空的改为:p=h->next;第二个空改为:p=p->next; (3) 不带头结点的链表:不带头结点的链表的第一个空的改为:p=h;第二个空改为:p=p->next;

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 计算机二级C语言 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档