程序改错题汇总说课讲解
第三章 程序改错
第三章程序改错本章的目的是纠正编程中的常见错误。
我们重点分析了编程中常见错误产生的原因,同时还提供了一些改错专项练习题,希望能够通过本章的学习提高大家的辨错和纠错能力。
3.1要点分析编程中的常见错误主要有两种,一种是语法错误,一种是逻辑错误。
语法错误的产生主要是基本概念问题,逻辑错误的产生主要是基本概念和算法问题。
语法问题主要出现在输入输出、变量和函数的定义、条件的表达等方面。
例如,用scanf()函数给整型变量b赋值,函数会写成如下一些形式:scanf(“%d”,b);或scanf(“%f”,b);或scanf(“%f”,&b);。
而正确的语句是:scanf(“%d”,&b);。
用scanf()函数给字符数组a赋值一串字符,将函数错写成scanf(“%s”,&a);,而正确的写法是:scanf(“%s”,a);,因为数组名是数组的地址,所以不需要在数组名a前加&。
再如,用printf()函数输出整型数组a的元素,错误的写为:printf(“%d”,*a++);。
正确的写法应该是:printf(“%d”,*(a+i));。
数组名的值是不允许改变的。
如,定义整型函数ax形式参数为整型a,b。
正确的定义是int ax(int a,int b);,而错误的写为:int ax(int a, b);,将形式参数的定义与变量定义混淆。
如,在条件表达式中将条件运算符“= =”写成赋值运算符“=”。
将诸如,a大于b并且a小于d的表达式写成b<a<d,而正确的表达式是b<a&&a>d。
类似的例子很多,我们将不一一列举。
下面我们列举几个逻辑错误。
例:程序用二分法在一个按单调不减次序排列的数组中查找某个数。
若存在,输出该数及它的下标位置;若不存在,输出表示找不到该数的信息。
下面程序中有两个逻辑错误,请指出。
#1main( )#2{#3int a[10]={2,5,6,8,11,15,18,22,60,88};#4int low,high,m,i,x;#5scanf(“%d”,&x);#6low=0;#7high=9;#8while(low<=high)#9{#10m=(low+high)/2;#11if(x= =a[m]) break;#12else if(x>a[m]) high=m+1;#13else low=m-1;#14}#15if(low<=high)#16printf(“ d is found,t he position is %d”,x,m);#17else#18printf(“%d is not found\n”,x);#19}程序中第12和13行有错误。
043程序调试与错误处理汇总PPT课件
On Error Goto 标号 其中,标号是指以字母开头的任意字符序列。
通常,该语句放置在过程的开始位置。在程序运行过程中,当该语 句后面的代码出错时,则程序就会自动跳转到标号所指定的程序行去运 行标号所指示的程序行通常为错误处理程序段的开始行。
一个使用错误处理的示例: On Error GoTo ErrLine
动态检查的基本方法是输入一组典型的数据来运行程序。程序对这
些数据处理结果应是已知的,通过运行后实际结果和预想结果相比较, 可以判断程序的正确性。
Ch4-3 程序调试与错误处理 VB调试工具
切换断点 逐过程 本地窗口 监视窗口
逐语句 跳出 立即窗口 快速监视
切换断点:“切换断点”按钮用来设置断点。 逐语句:逐条语句执行程序,每执行一条语句后就返回中断模式; 如果执行的是过程调用的代码(如Call),“逐语句”操作也会跟踪 到被调过程中继续一条语句一条语句的执行。 逐过程:是以整个函数或过程为一个整体,一次执行。逐过程与逐 语句一样,能够一条语句一条语句地执行代码。把被调用的函数或过 程当作一个语句来看待。
t=t+i
Next
Print "总和:"; t
End Sub
运行结果为:4.5,但正确答案是5.5,为什么?
Ch4-3 程序调试与错误处理 错误处理
对于某些可预见的错误,可以利用VB的错误处理程序捕获它,对 其进行适当的处理,并使程序继续执行。这样就能够使开发的软件具 有更强的适应性。
错误处理的步骤 ※ 利用Err对象记录错误的类型、出错原因等; ※ 强制转移到用户自编的“错误处理程序段”的入口; ※ 在“错误处理程序段”内,根据具体错误进行处理,如果问题 有解决方法,则在处理后返回原程序某处继续执行,否则,停止程序 执行。
程序改错
发生错误后都要回到编辑阶段,分析错误原因,修改C源程序,再重复上述操作,直到程序能得到正确的运行结果,程序才算调试成功。程序发生错误,其原因很复杂。学会调试程序,也是学习C程序设计的重点和难点之一,必须多练、多分析,积累经验。
scanf(“%d”,&n);
while(i<n)
i+=2;
sum+=i;
if(n%2==0) n--;
printf(“输出1+3+5+……+%d=%ld\n”,n,sum);省略号是在中文状态下输入的。
}
第四题:程序功能:定义计算三角形面积的函数。计算公式:
s=(a+b+c)/2
a、b、c为三角形的边长。
{
char str[80]="a*b$c(d!EEE !!a.";
fun(str[80]);
printf("\n");
puts(str);
}
4、下列程序,其功能是:从s所指向的串中,找出包含有t所指字符串的个数。例如:s所指向的串为abcdabfab,t所指字符串为ab,则所求个数为3。请改正程序中的错误,使程序能输出正确的结果。
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp;
int a[]={1,2,3,4,5,6,7,8,9,10},i=10,n;
if((fp=fopen(“file6.txt”,”w”))==NULL)
c语言课程设计改错
c语言课程设计改错一、教学目标本章节的教学目标包括以下三个方面:1.知识目标:使学生掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识,能够编写简单的C语言程序。
2.技能目标:培养学生具备运用C语言解决实际问题的能力,学会调试和优化程序,提高编程技巧。
3.情感态度价值观目标:激发学生对计算机科学的兴趣,培养学生的创新精神和团队合作意识,使其认识到C语言在现代社会的重要性和应用价值。
二、教学内容本章节的教学内容主要包括以下部分:1.C语言的基本语法和规则,如数据类型、变量、常量等。
2.运算符和表达式的使用,包括算术运算符、关系运算符、逻辑运算符等。
3.控制结构,如条件语句、循环语句等。
4.函数的定义和调用,包括主函数、普通函数和递归函数等。
5.指针的概念和应用,如指针变量、指针运算等。
6.动态分配内存和使用动态数组。
7.文件操作和调试技巧。
三、教学方法为了达到本章节的教学目标,我们将采用以下教学方法:1.讲授法:教师讲解C语言的基本概念、语法和编程技巧,引导学生掌握知识要点。
2.案例分析法:通过分析实际案例,让学生学会运用C语言解决具体问题。
3.实验法:安排上机实验,让学生动手编写程序,培养实际编程能力。
4.讨论法:学生分组讨论,促进学生之间的交流与合作,提高解决问题的能力。
四、教学资源为了支持本章节的教学,我们将准备以下教学资源:1.教材:《C程序设计语言》(K&R)或《C语言 Primer》等。
2.参考书:《C语言编程实践》、《C语言深入浅出》等。
3.多媒体资料:教学PPT、视频教程、在线编程练习等。
4.实验设备:计算机、编程环境(如Code::Blocks、Visual Studio等)。
5.网络资源:在线编程平台(如LeetCode、牛客网等)、开源代码库(如GitHub等)。
五、教学评估本章节的教学评估将采用以下方式:1.平时表现:评估学生在课堂上的参与程度、提问回答、小组讨论等,以考察学生的学习态度和积极性。
改错题详解
6. 程序cmody051.c的功能是:从键盘输入一个字符串,分别统计其中的英文字母、 阿拉伯数字和其他字符的个数。例如: 输入:Beijing-2008 输出:letter=7, number=4, other=1 #include <stdio.h> #include <conio.h> void main( ) { char c; int letter, number, other; letter=number=other=0; /**/letter= =number= =other= =0; /**/ printf(“please input string:”); while((c=getchar( ))!=’\n’) { if(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’) letter++; else if(c>=‘0’&&c<=‘9’) /**/ else if(c>=0&&c<=9) /**/ number++; else other++; } printf(“letter=%d, number=%d, other=%d\n”, letter, number, other); getch( ); }
程序cmody042.c, 其功能是将从键盘依次输入的 个整数逆序输出。 其功能是将从键盘依次输入的M个整数逆序输出 个整数逆序输出。 程序 如输入: 如输入:12 4 656 83 25 35 76 29 输出: 输出:29 76 35 25 83 656 4 12 #include <stdio.h> #include <math.h> #define M 8 void main( ) { int a[M], i; printf(“ please input 8 numbers:\n”); for(i=0; i<M; i++) scanf(“%d”, /**/ a[i] /**/); printf(“ Inverse order is\n”); /**/for(i=M-1; i<=0; i- -) /**/ printf(“%d “, a[i]); printf(“\n”0; getch( ); } for(i=M-1; i>=0; i- -) ) &a[i]
C语言程序改错题汇总.doc
C语言程序改错题汇总程序改错题汇总1、用“起泡法“对连续输入的十个字符排序后按从小到大的次序输出. 2、分别统计字符串中大写字母和小写字母的个数。
3、求1到10的阶乘的和。
4、判断m是否为素数,若是返回1,否则返回0。
5、用选择法对数组中的n个元素按从小到大的顺序进行排序。
6、求一个3行4列矩阵的外框的元素值之和。
7、以下程序把两个数按由大到小的顺序输出来。
8、求1到20的阶乘的和。
9、判断字符ch是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
(指针)10、已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。
下列给定程序中,函数fun的功能是计算并输出该数列的前n项的平方根之和sum,n的值通过形参传入。
11、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数都是多少12、编写函数fun计算下列分段函数的值x*xx x0.0 { 累计营业额;输入下一笔交易额;} 输出营业额;} 记一笔交易额为变量sale,营业额为sigma。
124、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少125、编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。
例如输入35=或5-2=或3*4=或4/2=,求表达式结果。
126、输入字符序列,字符序列以特殊字符“”结束。
程序从前向后依次读入字符,并翻译出新的字符输出。
翻译的规则是如果当前读入的字符是数字符,如果该字符的面值为n,则它的后一个字符包括数字符需重复输出n1次如果当前读入的字符不是数字符,则输出该字符。
输出时,以上述一次翻译为一组,不同组间输出用一个空白字符隔开。
翻译直至当前读入的字符为字符‘’,结束翻译和输出。
127、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下每位数字都加上5,然后除以10的余数代替该位数字。
c语言题库改错题及详解答案
c语言题库改错题及详解答案C语言是一种广泛使用的计算机编程语言,它以其强大的功能和灵活性而闻名。
在学习和掌握C语言的过程中,练习题库中的改错题是提高编程技能的有效方式。
以下是一些常见的C语言改错题及其详解答案。
1. 题目:编写一个程序,计算并输出1到10的累加和。
错误代码:```cint main() {int sum = 0;for(int i = 1; i <= 10; i++) {sum = sum + i;}print("Sum is %d", sum);return 0;}```错误点: `print` 函数应为 `printf`。
正确代码:```c#include <stdio.h>int main() {int sum = 0;for(int i = 1; i <= 10; i++) {sum += i; // 可以简化为 sum += i;}printf("Sum is %d\n", sum);return 0;}```2. 题目:编写一个程序,判断输入的年份是否为闰年。
错误代码:```cint main() {int year;printf("Enter a year: ");scanf("%d", &year);if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```错误点:逻辑判断的括号使用不正确。
正确代码:```c#include <stdio.h>int main() {int year;printf("Enter a year: ");scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```3. 题目:编写一个程序,实现字符串的反转。
C语言改错题分类总结知识分享
C语言改错题分类总结计算机等级C语言上机考试改错题分类总结改错题总的出错分为两大类:语法出错和逻辑出错,此类题目是比较简单的题型,因此也是最容易把握的知识点。
注意:错误都是出现在/**********found**********/下面的这一行。
只是下面的这一行,其他行都没有错误。
不能修改其他行。
做题方法:1.首先拿到题目,先将题目详细看看,看清题目对做题时很有帮助的,特别是一些逻辑性较强的题目很有用。
有的同学可能会觉得题目太难了不想去读,其实在做改错题目时即便你不会也能把题目做对。
2.按照以下的步骤解决题目中的错误的内容,对应着修改。
修改完之后保存即可。
1.关键字出错:在二级C 语言考试中仅仅考查学生对基本的关键字掌握情况,比如:整型就是int 不是Int,知识点简单。
2.格式出错:在考试中主要考查学生细心的程度,最喜欢考简单的知识点。
(1)少分号:考查的知识点:分号是语句结束的标志。
(2)for 语句的格式:for( ; ; )中间用分号隔开不是用逗号隔开。
(3)if 语句的格式:if(表达式),if 后面必须加上小括号。
(4)命令行格式出错:如 include 命令少了#,正确的形式应该是#include “stdio.h”;(5)常用函数格式:A.函数名后面一定是花括号,不能是方括号,方括号只有在数组下标中用到。
B.要同时定义两种以上不同的数据类型的时候必须在不同类型的数据中间加上分号。
C.scanf(“%d”,a[i][j]);应该改为scanf(“%d”,&a[i][j])。
考查scanf输入函数的格式。
(6)数组:A.数组下标引用时候只能用反括号。
B.二维数组中的列下标不能省略。
(7)常用符号出错:A. C 语言中大于等于符号是“>=”,但是在考试的时候可能出现将它写为“=>”B.当题目中需要比较某个字符是否是大写字母或是小写字母、数字时,必须将“与”、“或”、“非”记住。
c语言改错题题库及详解答案
c语言改错题题库及详解答案C语言是一种广泛使用的计算机编程语言,它以其高效性、灵活性和强大的功能而受到程序员的青睐。
然而,即使是经验丰富的程序员也难免会在编写C语言程序时犯一些错误。
下面是一个C语言改错题题库及其详解答案,帮助学习者识别并改正常见的编程错误。
题目1:错误的变量初始化```cint main() {int a;printf("%d", a); // 错误:变量a未初始化return 0;}```详解答案:在C语言中,如果一个变量在使用前没有被显式地初始化,它的值是不确定的。
为了修复这个错误,我们应该在声明变量时对其进行初始化。
```cint main() {int a = 0; // 正确的初始化printf("%d", a);return 0;}```题目2:错误的数组索引```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[5]); // 错误:数组索引越界return 0;}```详解答案:数组索引是从0开始的,所以对于一个有5个元素的数组,有效的索引范围是0到4。
访问数组的第6个元素会导致越界错误。
```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[4]); // 正确的索引return 0;}```题目3:错误的循环使用```cint main() {int i;for (i = 0; i <= 10; i++) {printf("%d ", i);} // 错误:循环条件错误return 0;}```详解答案:循环条件应该是`i < 10`,以确保循环不会无限执行。
```cint main() {int i;for (i = 0; i < 10; i++) {printf("%d ", i);}return 0;}```题目4:错误的函数调用```cint main() {int result = add(5, 3); // 错误:add函数未定义printf("%d", result);return 0;}```详解答案:在调用一个函数之前,需要确保该函数已经被定义。
吉林省计算机二级考试程序改错题解析.DOC
*【程序改错】*题目:在XSDB.DBF中查找学生徐秋实的记录, 如果找到则将该记录* 的系别、姓名,两科科目名称和对应的成绩显示在屏幕上,否则* 显示:"查无此人!"。
答案:1). LOCATE FOR姓名="徐秋实"2). ?系别,姓名,"计算机="+★STR★(计算机),"英语="+★STR★(英语) 或 ?系别,姓名,"... 〖第2题〗『程序改错』(5分)*题目:求2!+4!+6!+…+10!的和答案:1). T=1T★*★N 或 T=★N★*★T3). S=★S★+★T 或 S=★T★+★S〖第1题〗『程序改错』(5分)*题目:有一个字符串"ABC",将其插入3个数字转换为:"A1B2C3"输出。
答案:1). A=SUBS(C1,I★,1) 或 A=SUBSTR(C1,I★,1)2). C2=★C2★+★A+★STR(I,1)*【程序改错】*题目:有学生数据库STD.DBF文件,其中学号字段的前两位是班号。
* 请编写程序MODI1.PRG:选择所有少数民族(非汉族)的学* 生参加某项活动,按民族的拼音次序升序排列,同民族的按* 照学号升序排列,并为之生成编号。
编号的前两位是班号,* 后两位是统一新编序号。
并将学号、编号、姓名、性别和* 民族添加到数据库文件BS中。
答案:1). index★on★民族★+★学号★to★std.idx2). <>3). subs(学号,1,2) +★STR(NUM,1) 或 left(学号,2) +★STR(NUM,1)〖第1题〗『程序改错』(5分)*题目:从键盘上输入5个数,将其中奇数求和,偶数求积。
答案:1). S2=12). IF MOD(M,2)<>0 或 IF MOD(M,2)#0 或 IF INT(M/2)★<>★M/2 或 IF INT(M/2)★#★...*【程序改错】*题目:求0-7这8个数字所能组成的奇数个数。
《改错解题技巧》课件
分析错误的原因
2
深入分析错误产生Biblioteka 原因和背后的逻辑。3提出错误的修改方法
制定恰当的修改方案来纠正错误。
验证修改的正确性
4
通过实际验证,确保修改后的答案是正 确的。
常见错误类型及解决方法
语法错误
了解如何找出语法错误,并 掌握纠正语法错误的方法。
逻辑错误
掌握检测逻辑错误的技巧, 并学会纠正逻辑错误的方法。
参考资料
提供相关书籍、文献、网址等资料,供学生进一步学习和参考。
《改错解题技巧》PPT课 件
通过本课件,学习改错解题技巧,提高解题能力。从引言到实战演练,全面 掌握改错的流程和方法。让学习变得更有趣,更高效。
引言
改错解题是什么?为什么要学习改错解题技巧?通过本节内容,了解改错解 题的基本概念和重要性。
改错解题的流程
1
读懂题目,找出错误
通过仔细阅读题目,准确发现错误所在。
知识点错误
了解如何准确定位知识点错 误,并掌握纠正知识点错误 的技巧。
实战演练
通过提供一些改错题目,进行分组实战练习,帮助学生加深理解和应用。 同时,通过案例分析和解决过程的说明,帮助学生理解改错解题的实际应用。
总结
改错解题的重要性及学习改错解题技巧的意义。总结本课件的核心内容,提醒学生持续学习和应用。
计算机二级等级考试C语言改错题讲解
1.调试C程序时常见的错误类型分析一般情况下,错误主要分为两大类:一、语法错误。
对于这种错误,用编译器很容易解决。
所以,改错题的第一步是先编译,解决这类语法错误。
下面总结了二级C 语言上机改错题中常见的语法错误:(1)丢失分号,或分号误写成逗号。
(2)关键字拼写错误,如本来小写变成大写。
(3)语句格式错误,例如for语句中多写或者少写分号。
(4)表达式声明错误,例如:少了()(5)函数类型说明错误。
与main()函数中不一致。
(6)函数形参类型声明错误。
例如:少*等。
(7)运算符书写错误,例如:/写成了\。
二、逻辑错误,或者叫语义错误,这和实现程序功能紧密相关,一般不能用编译器发现。
对于逻辑错误可以按这样的步骤进行查找。
(1)先读试题,看清题目的功能要求。
(2)通读程序,看懂程序中算法的实现方法。
(3)细看程序,发现常见错误点。
2.改错题的改错方式总结,当然这些总结只能对大部分改错行有效。
1、若错误行是函数首部,可分为以下几种情况:A、该行最后若有分号则删除,中间若有分号则改成逗号B、形参类型不一致的问题,特别是指针类型,若后面用到某形参时有指针运算则该形参必为指针类型;若形参是二维数组或指向m个元素的指针变量,则第二维的长度必须与main中对应数组的第二维长度相同C、函数类型不一致的问题,若函数中没有return语句则函数类型为void,若有return语句则函数的类型必须与return 后变量的类型一致。
2、若错误行是if或while语句,则首先看有没有用小括号将整个表达式括起,若没有则加上小括号。
3、若错误行中有if、while、for则要特别注意条件表达式的错误问题:A、指针变量的应用,若表达式中有指针变量且没有指针运算符,则加上指针运算符B、若条件表达式中只有一个等于号,则改成两个等于号,若为其它比较运算符则一般是进行逆转或加一个等于号C、for中要用分号分隔表达式,而不是用逗号4、语法错误A、语句缺少分号,若错误行中有语句没有用分号结束,则加上分号。
小学数学错题解析与纠正课件
运算错误:加强运算训练,提高计算 准确性
习惯性错误:规范答题步骤,避免粗 心大意
审题错误:培养审题习惯,仔细阅读题 目要求
心理性错误:调整心态,增强自信心
培养学生的自我纠错能力
引导学生自我反思:通过错题解析,引导学生思考自己的错误原因,培养自我纠错意识 教授正确的解题方法:针对错题,教授正确的解题方法和思路,帮助学生掌握正确的解题技巧 鼓励自主纠错:鼓励学生自主发现并纠正自己的错误,培养自主纠错能力 建立错题本:建议学生建立错题本,记录自己的错题和纠正过程,方便回顾和总结
小学数学错题解析 与纠正课件
单击此处添加副标题
汇报人:XX
目录
添加目录项标题 小学数学错题类型及原因 小学数学错题解析示例 小学数学错题纠正策略总 结与建议
课件概述 小学数学错题纠正方法 小学数学错题纠正练习
01
添加章节标题
02
课件概述
课件背景
小学数学错题解 析与纠正的重要 性
课件设计的背景 和目的
解析:引导学生 理解题目要求, 明确解题思路, 避免类似错误发 生
示例:题目中给 出的数字有误, 导致计算错误
解析:提醒学生 认真核对题目中 的数字,确保准 确无误地进行计 算
06
小学数学错题纠正 练习
针对概念理解错误的练习
针对概念混淆的练习
针对概念运用不当的练习
添加标题
添加标题
针对概念理解不深入的练习
总结经验教训
回顾错题原因:分析错题产生的原因,避免同类错误再次发生 总结解题方法:总结解题思路和技巧,提高解题效率 强化练习:通过练习,加深对知识点的理解和掌握 培养细心习惯:注重细节,避免因粗心大意而犯错
05
小学数学错题解析 示例
C语言程序改错题总结
答题要求
程序中有两处错误,错误都在提示行:/***********found***********/的下面一行,请考生注意。请改正程序中的错误,使它能得出正确的结果。
注意:程序中的其它地方请考生不要随意改动,不得增行或删行,也不得更改程序的结构!(注:红色的为已改过的)
1、从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。
源文件:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
main()
{ int score,sum=0;
int i,n=0;
for(i=1;i<=5;i++)
{ scanf("%d",&score);
sum+=score;
源文件:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
main()
{ int i,j,k;
for(i=1;i<=4;i++)
/************found************/
{ for(j=1;j<=i;j++)
}
3、求两实数平方根之和,输出此和。例如:输入12和20,输出结果是:y = 7.936238。
源文件:
#include <stdio.h>
(完整word版)C语言程序改错总结
难度11、程序D1.c的功能是从键盘读入一个数并在屏幕上显示。
int main(void){int xy2;/*********Found************/scanf("%s", &xy2); //改为:scanf("%d”,&xy2);/*********Found************/printf("xy2=%5d\n", &xy2); //改为:printf("xy2=%5d\n”,xy2);return 0;}2、程序D2.c的功能是调用函数,显示两个实数间最大的一个。
#include<stdio。
h>float fmax(float x, float y);int main(void){/*********Found************/float l,1; //il = 3。
0;i = 5.6f;/*********Found************/printf("fmax(%5.2f,%5.2f)=%5.2f\n”, i, l, fMax(i,l)); // fmaxreturn 0;}/*********Found************/int fmax(float x, float y) //改:float{if (x < y)return y;else return x;}3、程序D4.c的功能是计算半径为2+3的圆的面积。
#include<stdio.h〉#define PI 3。
14/*********Found************/#define S(bj)PI*bj*bj //改:PI*(bj)*(bj) int main(void){/*********Found************/int mianJi;//改为:doublemianJi = S(2+3);printf(”mian ji=%5。
第9章_程序改错
程序调试实例 —例5.11
/*
函数功能: 计算x的阶乘 函数入口参数: 无符号长整型x 函数返回值: 阶乘运算结果
*/ unsigned long Factorial(unsigned int x) { unsigned long i, result = 1;
for (i=2; i<=x; i++) result *= i; return result; }
运行结果时,可在User screen(用户屏幕)上看 到给出的错误提示信息。
2013-5-19
3
程序中常见的出错原因
逻辑错误
– 程序中有逻辑错时,不影响程序运行并得到运行结
果,只是运行结果不正确。比较隐蔽,出错后不易 查找。
– 累加求和运算时,累加和变量忘记了赋初值; – 累乘运算时,累乘变量初值赋值为0; – 函数声明时的返回值数据类型与实际返回的数据类
' to 'int ', possible loss of data
2013-5-19 11
错误案例
数组下标越界 – int a[10],i,sum; – for (i=1; i<=10; i++) – sum = sum + a[i];
不提示任何错误
2013-5-19
12
程序调试实例 —例5.11
2013-5-19 15
表达式语法错误
函数调用时的实参
2013-5-19
2
程序中常见的出错原因
运行错误
– 指在程序运行时发生的错误 – 往往是由于语义上的错误造成的,即语句虽然合
C语言程序改错辅导
C语言程序改错辅导
C语言程序改错辅导
一个讯息从地球这一端到另一端只需.秒,而一个观念从脑外传到脑里却需要一年,三年甚至十五年。
以下是店铺为大家搜索整理的C 语言程序改错辅导,希望能给大家带来帮助!
在考生文件夹下,给定程序MODI.C的`功能是:
求二维数组a中的最大值和最小值。
例如,当二维数组a中的元素为:
4 4 34
37 3 12
5 6 5
程序的输出应为:The max is: 37
The min is: 3 。
#include
#include
void main()
{
int a[3][3]={4,4,34,37,3,12,5,6,5},i,j,max,min;
max = min = a[0][0];
for ( i=0; i<3; i++)
for(j=0;j<3;j++)
/************found************/
for ( j=1; j<3; j++)
{ if ( max < a[i][j] )
max = a[i][j];
/************found************/
if(min>a[i][j])
if (min < a[i][j])
min = a[i][j];
}
printf("The max is: %d\n", max); printf("The min is: %d\n", min); }。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序改错题汇总程序改错题汇总1、用"起泡法"对连续输入的十个字符排序后按从小到大的次序输出.2、分别统计字符串中大写字母和小写字母的个数。
3、求1到10的阶乘的和。
4、判断m是否为素数,若是返回1,否则返回0。
5、用选择法对数组中的n个元素按从小到大的顺序进行排序。
6、求一个3行4列矩阵的外框的元素值之和。
7、以下程序把两个数按由大到小的顺序输出来。
8、求1到20的阶乘的和。
9、判断字符ch是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
(指针)10、已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。
下列给定程序中,函数fun的功能是:计算并输出该数列的前n项的平方根之和sum,n的值通过形参传入。
11、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?12、编写函数fun计算下列分段函数的值:x*x+x x<0且x≠-3f(x)= x*x+5x 0≤x<10且x≠2及x≠3x*x+x-1 其它13、请编写函数fun,对长度为8个字符的字符串,将8个字符按降序排列。
14、实现交换两个整数的值。
15、读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。
16、先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
17、计算数组元素中值为正数的平均值(不包括0)。
18、将s所指字符串中出现的、t1所指子串全部替换成t2所指子字符串,所形成的新串放在w 所指的数组中。
在此处,要求t1和t2所指字符串的长度相同。
19、将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A, z转换为a),其它字符不变。
20、在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),后输出矩阵第一行与第三行元素之积,并在fun()函数中输出。
21、编写一个函数,该函数可以统计一个长度为3的字符串在另一个字符串中出现的次数22、一个已排好序的一维数组,输入一个数number,要求按原来排序的规律将它插入数组中.23、编写函数fun计算下列分段函数的值:x*20 x<0且x≠-3f(x)= sin(x) 0≤x<10且x≠2及x≠3x*x+x-1 其它24、判断两个指针所指存储单元中的值的符号是否相同;若相同函数返回1,否则返回0。
这两个存储单元中的值都不为0。
25、将一个正整数分解质因数。
26、输入n,计算s=1+1+2+1+2+3+1+2+3+4+...+1+2+3+4+...+n27、读入一个整数m( 5≤m≤20 ),函数getarr调用函数rnd获得m个随机整数,函数sortpb 将这m个随机整数从小到大排序。
28、809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。
求??代表的两位数,及809*??后的结果。
29、根据整型形参 n,计算某一数据项的值。
A[1]=1, A[2]=1/(1 + A[1]), A[3]=1/(1 + A[2]), …, A[n]=1/(1 + A[n-1])30、学习使用按位或 | 。
31、判断整数x是否是同构数。
若是同购数,函数返回1;否则返回0。
说明:所谓“同构数”是指这个数出现在它的平方数的右边。
32、输入两个双精度数,函数返回它们的平方和的平方根值。
33、根据整型形参m,计算如下公式的值:y=1+1/3+1/5+1/7+...+1/(2m-3)34、以下程序输出前六行杨辉三角形,既11 11 2 11 3 3 11 4 6 4 1…………35、根据整型形参m的值,计算如下公式的值。
1 1 1t = 1- —— - —— - ... - ——2x2 3x3 mxm36、将 m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指字符串中。
37、求出在字符串中最后一次出现的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。
38、有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
39、编写程序, 求矩阵(3行3列)与5的乘积。
40、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
41、八进制转换为十进制。
42、利用递归方法求5!。
43、请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
44、先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。
45、求两数平方根之和,作为函数值返回。
46、读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*。
47、利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
48、编写函数fun,求两个整数的最小公倍数,然后用主函数main()调用这个函数并输出结果,两个整数由键盘输入。
49、从m个学生的成绩中统计出高于和等于平均分的学生人数,此人数由函数值返回。
平均分通过形参传回,输入学生成绩时,用-1结束输入,由程序自动统计学生人数。
50、求如下表达式:1 1 1S = 1 + —— + ——— + ...... + ———————1+2 1+2+3 1+2+3+......+n51、将整型数组中所有小于0的元素放到所有大于0的元素的前面(要求只能扫描数组一次)。
52、编写一个程序计算某年某月有几天。
(注意要区分闰年)53、分别统计输入的字符串中各元音字母(即:A、E、I、O、U)的个数。
注意:字母不分大、小写。
54、编写函数fun求20以内所有5的倍数之积。
55、在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
(与22题相似)56、实现两个字符串的连接。
57、将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
58、统计出若干个学生的平均成绩,最低分以及得最低分的人数。
59、删除w所指数组中下标为k的元素中的值。
程序中,调用了getindex、arrout和arrdel 三个函数,getindex用以输入所删元素的下标,函数中对输入的下标进行检查,若越界,则要求重新输入,直到正确为止。
arrout用以输出数组中的数据,arrdel进行所要求的删除操作。
60、读入一行英文文本,将其中每个单词的最后一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。
61、根据整型形参 m,计算某一数据项的值。
y = 1/(100*100)+1/(200*200)+1/(300*300)+ …… +1/(m*m)62、求出N×M整型数组的最小元素及其所在的行坐标及列坐标(如果最小元素不唯一,选择位置在最前面的一个)。
63、用指针作函数参数,编程序求一维数组中的最大和最小的元素值.64、先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线上的元素之和sum。
65、在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符的原字符向后顺序移动。
66、编写input()和output()函数输入,输出5个学生的数据记录。
67、求出以下分数序列的前n项之和。
和值通过函数值返回main函数。
2/1+3/2+5/3+8/5+13/8+21/13 ……68、计算并输出k以内最大的10个能被13或17整除的自然数之和。
k的值由主函数传入。
69、将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。
70、求两个形参的乘积和商数,并通过形参返回调用程序。
71、移动一维数组中的内容; 若数组中有n个整数, 要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。
72、计算正整数num的各位上的数字之积。
73、编写函数fun求1000以内所有8的倍数之和。
74、将s所指字符串中最后一次出现的、t1所指子串替换成t2所指子串,所形成的新串放在w 所指的数组中。
在此处,要求t1和t2所指字符串的长度相同。
75、为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换,输出数组元素。
76、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
77、生成一个周边元素为5,其它元素为1的3*3的二维数组。
78、删除字符串s中的所有空白字符(包括Tab字符、回车符及换行符)。
输入字符串时用'#'结束输入。
79、打印出杨辉三角形(要求打印出10行).(与34题相似)80、编写函数fun求20以内所有5的倍数之积。
(与54题相同)81、首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。
82、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?83、以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的最大的n。
84、输入一个字符串,过滤此串,滤掉字母字符,并统计新生成串中包含的字符个数。
85、使数组左下三角元素中的值乘以n 。
86、输入10个数,要求输出这10个数的平均值87、将一个字符串中的大写字母转换成小写字母。
88、编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。
89、用起泡法对10个整数从小到大排序。
90、将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。
91、求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
92、给定n个实数,输出平均值,并统计在平均值以下(含平均值)的实数个数。
93、求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。
94、从键盘输入十个学生的成绩,统计最高分,最低分和平均分。
max代表最高分,min代表最低分,avg代表平均分。
95、找出一个大于给定整数m且紧随m的素数,并作为函数值返回。
96、求0-7这8个数字所能组成的奇数个数。
97、编写函数求2!+4!+6!+8!+10+12!+14!。
98、输入两个实数,按代数值由小到大输出它们,并在fun()函数中输出。