2022年C语言调试常见错误及修改方法 .pdf
《2022年C语言调试常见错误及修改方法 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言调试常见错误及修改方法 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.调试 C 程序时常见的错误类型分析一般情况下,错误主要分为两大类:一、语法错误。对于这种错误,用编译器很容易解决。所以,改错题的第一步是先编译,解决这类语法错误。下面总结了二级C 语言上机改错题中常见的语法错误: (1)丢失分号,或分号误写成逗号。(2)关键字拼写错误,如本来小写变成大写。(3)语句格式错误,例如for 语句中多写或者少写分号。(4)表达式声明错误,例如:少了()(5)函数类型说明错误。与main()函数中不一致。(6)函数形参类型声明错误。例如:少* 等。(7)运算符书写错误,例如:/写成了 。二、逻辑错误,或者叫语义错误,这和实现程序功能紧密相关,一般不能用编译器发现。
2、对于逻辑错误可以按这样的步骤进行查找。(1)先读试题,看清题目的功能要求。(2)通读程序,看懂程序中算法的实现方法。(3)细看程序,发现常见错误点。2.改错题的改错方式总结,当然这些总结只能对大部分改错行有效。1、若错误行是函数首部,可分为以下几种情况:A、该行最后若有分号则删除,中间若有分号则改成逗号B、形参类型不一致的问题,特别是指针类型,若后面用到某形参时有指针运算则该形参必为指针类型;若形参是二维数组或指向m 个元素的指针变量,则第二维的长度必须与main中对应数组的第二维长度相同C、函数类型不一致的问题,若函数中没有return 语句则函数类型为void,若有 return 语句则函
3、数的类型必须与return 后变量的类型一致。2、若错误行是if 或 while 语句,则首先看有没有用小括号将整个表达式括起,若没有则加上小括号。3、若错误行中有if、while 、for 则要特别注意条件表达式的错误问题:A、指针变量的应用,若表达式中有指针变量且没有指针运算符,则加上指针运算符B、若条件表达式中只有一个等于号,则改成两个等于号,若为其它比较运算符则一般是进行逆转或加一个等于号C、for 中要用分号分隔表达式,而不是用逗号4、语法错误A、语句缺少分号,若错误行中有语句没有用分号结束,则加上分号。B、大小写不对,若错误行中有大写字母则一般都改成小写字母。名师资料总结 - -
4、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - 5、指针变量的运用,若错误行中有指针变量,并且该变量名前没有指针运算符则一般都是加上指针运算符6、若错误行为return 语句, 则首先看是否是缺少分号若是则加上分号即可;否则就是 return后的变量或表达式错误(此时可通过看题意,来分析该返回哪一变量或表达式)7、若错误行中见到整型1 除以某个表达式时,一概改成1.0。但若是整型变量或表达式则只能用强制转换8、复合运算符写错9、字符串结束符写错,若
5、有字符串结束符则要特别注意有没有写错,但第11 题例外,因为该题是要将数字字符转换成对应的数字。10、若错误行是定义语句,则首先看类型是否符合;再看所赋初值是否正确;若以上均不是,则看是否少定义了某个变量或少了花括号。11、表达式错误(占的份量最多,并且没有统一的改法,我们只能通过题目要求来分析并修改)12、若错误行中有一条横线,则必须将横线删除再填空。填空题中亦是如此。例题/*1.下面给定的程序的功能是:读入一个整数k(2=k=10000),打印他所有的质因子(即所有为素数的的质因子) 。例如,若输入整数 2310,则应输出:2、3、5、7、11。请改正程序中的错误,使程序得到正确的结果。注
6、意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序:1 #include 2 #include 3 IsPrime(int n); 4 5 int i,m; 6 m=1; 7 for(i=2;in;i+) 8 if!(n%i) 9 10 m=0;break; 11 12 return(m); 13 14 main() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - 15 16 int j,k; 17
7、 clrscr(); 18 printf(nPlease enter an integer nunber 2 and 10000:);scanf(%d,&k); 19 printf(nnThe Prime factor(s) of %d is (are):,k); 20 for(j=2;j=k;j+) 21 if(!(k%j)&(IsPrime(j) 22 printf(n %4d,j); 23 printf(n); 24 试题解答及分析错误一:第三行的末尾不需要分号,这并不是一个语句的结束,这是一个函数的头部;错误二:第八行应该该为if(!(n%i), 这是由 if 语句的执行过程决定的,i
8、f 语句先判断紧跟着它的()里面的条件的真假,如果真执行下面的语句,如果是多条语句可以用 括起来如果嫁就跳过直接执行下面的语句但这个if 语句中把括号忘了。自然出错;程序整体分析我们的题目要求判断求出一个整数的所有质因子我们可以求出它所有的因子,再看这些因子中哪些是素数不就行了,程序先通过scanf(%d,%k); 从键盘读入一个整数,接着我们开始循环,对于 2 到 k 之间的每一个j;用! (k%j) 判断 j 是不是 k 的因子,如果是的话,k%j=0, 则非0 就是真的,再用一个判断它是不是素数的函数IsPrime(int n) 来判断它是不是素数,如果是的话就是我们所求的。IsPrim
9、e() 函数分析,函数语句的意思是,只要2 到 n 中有任意一个数有能被n 整除的话,就返回 0(假) ,否则返回1(真) ,我们看一下循环体if(!(n%i) )这个语句的分析上面有,只要 n 能把 i 整除的话m=0,break 语句会使程序立刻跳出循环体,执行return (m);语句。 */ #include #include IsPrime(int n) int i,m; m=1; for(i=2;in;i+) if(!(n%i) m=0;break; return(m); main() int j,k; clrscr(); printf(nPlease enter an integ
10、er nunber 2 and 10000:);scanf(%d,&k); printf(nnThe Prime factor(s) of %d is (are):,k); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - for(j=2;j=0; i-) /参考答案: for (i=sl, j=0; i=0; i-=2)/ t2*j = si; t2*j +1 = si; j+; /*found*/ 名师资料总结 - - -精
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年C语言调试常见错误及修改方法 2022 语言 调试 常见 错误 修改 方法
限制150内