1、计算机二级 C 语言程序修改题解题思路12 通信 3 班盛伟上次计算机二级缺几分及格,所以只能参加今年 3 月份的二级考试了。我认认真真的做了 50 套程序改错题,这里我总结了一些对于此题解题的经验与想法,过级的略过,没过级的大家不妨看看,希望对大家有用哦!首先大家有没有注意到每套程序改错题中到底哪里错了,在哪里改,这是个关键,也是我们需要思考的驻点。我可是真的发现了规律,当然这个规律我去年 9 月份备考二级的时候就已经发现了。请看下面。 (每套题都是这样)例如: /*found*/d=d10;(这就是错误的所在处,改错就在此处改) 改为 d=d/10;在这里我们将/*found*/称为错误栏
2、,那么每道题的错误处就在这个错误栏的下面,改正就好了。当然到底怎么改,改的过程我们需要注意什么问题,我想这是我们大家都很关心的问题,那就由我为大家说说解题思路吧。我觉得第一步大家还是得锁定错误所在处,接着就应该看是否出现那些不易发现的“低级错误” ,其实往往就是这些错误却很容易被我们忽略。这点我为大家总结了一些,供大家复习所用。我以例子的形式给大家展现出来:(1)符号错误:1.if(t=0)被写成 if(t=0) 2.d=d/10;被写成 d=d10;(2)大小写混乱:3.if(*a) 被写成 If(*a) 4. s=s+(double)a/b;被写成 s=s+(Double)a/b; 5.前
3、文定义了 int y,而下文却写成了Y=1;(3)漏加标点符号:6.printf(“%c” *a);错误在于没有加上逗号,应该改为printf(“%c”,*a);7.for 语句中有两个分号,但是题目往往会写成两个逗号,这是大家需要注意的地方。8.漏加分号如:result *=n- 错误就在于末尾没有加上分号,应该改为 result *=n-; 9.多加分号如在 if 语句后面加上分号也是错误的。在此也提醒大家 if 语句一定要在 if 的后面加上括号,在括号里面写上内容也就是合法的表达式。 (PS:大家发现了没有,这些小问题小细节如果我们不仔细观察,真的很难发现其中的“奥秘”哦,所以我给大家
4、提炼整理了出来,大家一起共勉,补缺补差)接着来谈谈 for 语句,说说 for 语句括号中的“猫腻” 。例如 for(i=2;ij),通过题目的分析可以得知应该改为 while(ij,那么修改就必然是 ij,你说呢?在这里我还有一个知识点提醒大家,以防大家忘了,或许很容易被大家忽略。那就是单独的 while 语句后不加分号,而do.while 语句中的 while 在句尾加上分号。如新思路题库中的第 37 套卷中dowhile(*p+)应该改为 dowhile(*p+);。 我们得注意这样一个问题,那就是返回值。我们得看清题目中需要我们返回什么值,例如新思路题库书中的第 1 套中要求返回 值,
5、而错误栏下却写成了 return(s),很明显的一个错误。对于形参函数中变量定义的类型以及函数返回值的类型,需要我们回归到主函数 main 函数中,在 main 函数中找到变量的类型,从而确定形参函数中变量的定义类型。例如新思路题库书中的第 25 套中错误栏下为 void fun(char *s,int a,int b),而主函数中却为 fun(s,很明显的错误吧,改为*t=0;同样这样的问题也可以反过来出题,即通过下文发现某一个变量的“广泛”引用,也可以推测出一开始定义此变量的类型出现了问题。例如新思路题库书中的第 7 套中下文的*t 多次使用,而定义变量中却为 long t,故将错误处改为 long *t。特别提醒大家一个知识点就是字符串。例如新思路题库书中的第 17 套中有for(i=strlen(t);i;i-)。题意是将字符串中的字符按 ASCII 码排序,应排除尾符号,而字符串中的长度包括尾符,故考虑去除尾符号,改为 for(i=strlen(t)-1;i;i-)。又如新思路题库书中的第 36 套中题意是对字符位置加 1,而错误栏下却为(*s)+(此意思是指对字符内容加 1) ,不符合题意,故改为 s+;类似的还有新思路题库书中的第 40 套卷。希望对大家程序修改题能有所帮助,祝大家二级考试顺利!