




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
}当输入a,b,c的值为1,-2,-15时,输出xl的值为5,x2的值为-3。结果是正确无误的。但是假设输入a,b,c的值为3,2,4时,屏幕上出现了出错信息,程序停止运行,原因是此时b2-4ac小于0,出现了对负数求平方根的运算,故出错。因此,此程序只适用b2-4ac≥0的情况。我们不能说上面的程序是错的,而只能说程序对可能出现的情况“考虑不周〞,所以不能保证在任何情况下都是正确的。使用这个程序必须满足一定的前提〔b2-4ac≥0〕,这样,就给使用程序的人带来不便。人们在输入数据前,必须先算一下,看b2-4ac是否大于或等于0。一个程序应能适应各种不同的情况,并且都能正常运行并得到相应的结果。下面分析一下求方程ax2+bx+c=0的根,有几种情况:〔1〕a≠0时①b2-4ac>0 有两个不等的实根:x1,2=(-b±sqrt(b2-4ac))/2a②b2-4ac=0 有两个相等的实根:x1=x2=-b/2a③b2-4ac<0 有两个不等的共轭复根:x1,2=(-b±sqrt(b2-4ac)i)/2a〔2〕a=0时,方程就变成一元一次的线性方程:bx+c=0①当b≠0时,x=-c/b②当b=0时,方程变为0x+c=0当c=0时,x可以为任何值;当c≠0时,x无解。综合起来,共有6种情况:①a≠0,b2-4ac>0②a≠0,b2-4ac=0③a≠0,b2-4ac<0④a=0,b≠0⑤a=0,b=0,c=0⑥a=0,b=0,c≠0应当分别测试程序在以上6种情况下的运行情况,观察它们是否符合要求。为此,应准备6组数据。用这6组数据去测试程序的“健壮性〞。在使用上面这个程序时,显然只有满足①②情况的数据才能使程序正确运行,而输入满足③~⑥情况的数据时,程序出错。这说明程序不“健壮〞。为此,应当修改程序,使之能适应以上6种情况。可将程序改为:#include<stdio.h>#include<math>voidmain(){floata,b,c,disc,x1,x2,p,q;printf("inputa,b,c:");scanf(“%f,%f,%f〞,&a,&b,&c);if(a==0)if(b==0)if(c==0)printf("Itistrivial.\n);elseprintf("Itisimpossible.\n);else{printf("Ithasonesolution:\n);pirntf("x=%6.2f\n",-c/b);}else{disc=b*b-4*a*c;if(disc>=0)if(disc>0){printf("Ithastworealsolutions:\n");x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);printf(〞x1=%6.2f,x2=%6.2f\n〞,x1,x2);}else{printf("Ithastwosamerealsolutions:\n");printf("x1=x2=%6.2f\n",-b/(2*a));}else{pritnf("Ithastwocomplexsolutions:\n");p=-b/(2*a);q=sqrt(-disc)/(2*a);printf("x1=%6.2f+%6.2fi,x2=%6.2f-%6.2fi\n",p,q,p,q);}}}为了测试程序的“健壮性〞,我们准备了6组数据:①3,4,1 ②1,2,1 ③4,2,1 ④0,3,4 ⑤0,0,0 ⑥0,0,5分别用这6组数据作为输入的a,b,c的值,得到以下的运行结果:①inputa,b,c:341Ithastworealsolutions:x1=-0.33,x2=-1.00②inputa,b,c:121Ithastwosamerealsolutions:x1=x2=-1.00③inputa,b,c:421Ithastwocomplexsolutions:x1④inputa,b,c:034Ithasonesolutions:x1=-1.33⑤inputa,b,c:000Itistrivial.⑥inputa,b,c:005Itisimpossible.经过测试,可以看到程序对任何输入的数据都能正常运行并得到正确的结果。以上是根据数学知识知道输入数据有6种方案。但在有些情况下,并没有现成的数学公式作为依据,例如一个商品管理程序,要求对各种不同的检索作出相应的反响。如果程序包含多条路径〔如由if语句形成的分支〕,那么应当设计多组测试数据,使程序中每一条路径都有时机执行,观察其运行是否正常。以上就是程序测试的初步知识。测试的关键是正确地准备测试数据。如果只准备4组测试数据,程序都能正常运行,仍然不能认为此程序己无问题。只有将程序运行时所有的可能情况都作过测试,才能作出判断。测试的目的是检查程序有无“漏洞〞。对于一个简单的程序,要找出其运行时全部可能执行到的路径,并正确地准备数据并不困难。但是如果需要测试一个复杂的大程序,要找到全部可能的路径并准备出所需的测试数据并非易事。例如:有两个非嵌套的if语句,每个if语句有两个分支,它们所形成的路径数目为2×2=4。如果一个程序包含100个if语句,那么可能的路径数目为2100=1.267651×1030,要测试每一条路径儿乎是不可能的。实际上进行测试的只是其中一局部〔执行几率最高的局部〕。因此,经过测试的程序一般还不能轻易宣布为“没有问题〞,只能说“经过测试的局部无问题〞。正如检查身体一样,经过内科、外科、眼科、五官科……各科例行检查后,不能宣布被检查者“没有任何病症〞“未发现异常〞,而不能写“此人身体无任何问题〞。我们应当了解测试的目的,学会组织测试数据,并根据测试的结果修改完善程序。第三局部实验内容与安排实验一简单的C程序实验1.实验目的〔1〕了解Dev-C++集成环境的窗口界面,熟练掌握如何编辑、编译、连接、运行一个C程序以及如何保存和修改C语言的源程序。〔2〕通过运行简单的C程序,初步了解C源程序的结构和特点。〔3〕学会简单的读程序和调试程序。2.实验内容〔1〕输出图形。〔2〕求以下图所示田径场的周长和面积。〔3〕圆的周长与面积公式为:Cir=2*3.14*radArea=3.14*rad*rad从键盘输入一个半径值,求该圆的周长和面积。要求:3.预习内容?C程序设计〔第四版〕?第1章、第3章实验二顺序程序设计1.实验目的〔1〕掌握C语言中使用最多的一种语句——〔3〕掌握不同的类型数据之间赋值的规律。〔5〕学会使用C的有关算术运算符,以及包含这此运算符的表达式。〔6〔72.实验内容和步骤〔1〕’A’,C2=’a’。问在键盘上如何输入?#include<stdio.h>intmain(){inta,b;floatx,y;charc1,c2;scanf(“a=%db=%d〞,&a,&b);scanf(“%f%f〞,&x,&y);scanf(“%c%c〞,&c1,&c2);………………return0;}〔2〕设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球外表积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2为数字。请编程序。〔3〕求ax2+bx+c=0方程的根。a,b,c由键盘输入,假设b2-4ac>0。3.预习内容?C程序设计〔第四版〕?第3章。实验三选择结构程序设计1.实验目的“假〞,以非0代表“真〞〕。〔2〕学会正确使用逻辑运算符和逻辑表达式。〔3〕熟练掌握if语句和switch语句。〔4〕结合程序掌握一些简单的算法。2.实验内容本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。〔1〕有3个整数a,b,c,由键盘输入,输出其中最大的数。〔2x〔x<1〕y=2x-1〔1≤x<10〕
3x-11〔x≥10〕运行程序.输入x的值〔分别为x<1、1~10、x>10这3种情况〕,检查输出的y值是否正确。〔3〕给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,81~89分为B,70~79分为C,60~69分为D,60分以下为E。①事先编好程序,要求分别用if语句和switch语句来实现。运行程序,并检查结果是否正确。②再运行一次程序,输入分数为负值〔如-70〕,这显然是输入时出错,不应给出等级,修改程序,使之能正确处理任何数据,当输入“输入数据错〞,程序结束。〔4〕给一个不多于5位的正整数,要求:①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字,例如原数为321,应输出123。应准备以下测试数据:·要处理的数为1位正整数;·要处理的数为2位正整数;·要处理的数为3位正整数;·要处理的数为4位正整数;·要处理的数为5位正整数。除此之外,程序还应当对不合法的输入做必要的处理,例如:·输入负数;·输入的数超过5位〔如123456〕。3.预习内容?C程序设计〔第四版〕?第4章。实验四循环结构程序设计〔一〕1.实验目的〔3〕进一步学习调试程序。2.实验内容编程序并上机调试运行。〔1〕输入两个正整数m和n,求它们的最大公约数和最小公倍数。在运行时,输入的值m>n,观察结果是否正确。再输入时,使m<n,观察结果是否正确。修改程序,不管m和n为何值〔包括负整数〕,都能得到正确结果。〔2〕分别求出1~100的和、1~50的平方和、1~10的倒数和,并计算三者之和。〔3〕输出所有的“水仙花数〞,所谓的“水仙花数〞是指一个3位数,其各位数字立方和等于该数本身。例如153是一个“水仙花数〞,因为153=13+53+33。〔4〕编程序找出1000之内的所有完数,并输出。所谓完数,是指一个数如果恰好等于它的因子之和,这个数就称为“完数〞。例如,6的因子为1,2,3,而6=1+2+3,因此6是完数。3.预习内容?C程序设计〔第四版〕?第5章实验五循环结构程序设计〔二〕1.实验目的〔3〕进一步学习调试程序。2.实验内容编程序并上机调试运行。有一个分数序列:2/1,3/2,5/3,5/8,13/8,21/13,……求出这个数列的前20项之和。一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米,第10次反弹多高。〔3〕输出以以下图案: * *** ***** ******* ***** *** *3.预习内容?C程序设计〔第四版〕?第5章实验六数组〔一〕1.实验目的〔2〕掌握与数组有关的算法〔特别是排序算法〕。2.实验内容编程序并上机调试运行。〔1〕已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入到数组中。〔2〕将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1,要求改为1,4,5,6,8。〔3〕输出以下的杨辉三角形〔要求输出10行〕。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ………………〔4〕输出“魔方阵〞。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为〔此题选做〕8 1 63 5 74 9 23.预习内容?C程序设计〔第四版〕?第6章。实验七数组〔二〕1.实验目的〔2〕掌握与字符数组有关的算法。2.实验内容编程序并上机调试运行。〔1〕找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。〔此题选做〕〔2〕编一个程序,将两个字符串s1和s2比较,假设s1>s2,输出一个正数;假设s1=s2,输出0;假设s1<s2,输出一个负数。’\0’也要复制过去,’\0’后面的字符不复制。3.预习内容?C程序设计〔第四版〕?第6章。1.实验目的“值传递〞的方式。2.实验内容编程序并上机调试运行。〔1〕写×3的二维数组转置,即行列互换。〔3〕 (n=0)Pn(x)=x (n=1)((2n-1)*x-pn-1(x)-(n-1)*pn-2(x))/n(n>=1)3.预习内容?C程序设计〔第四版〕?第7章。1.实验目的2.实验内容编程序并上机调试运行。〔1〕①计算每
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗器械买卖合同协议书
- 商品房产购销合同
- 2025年春人教版(2024)小学数学一年级下册教学计划
- 2021电力工程继电保护及接线施工作业指导书
- 医院医疗器械买卖合同
- 2025年南昌年货运从业资格证考试试题题库
- 承包搅拌站运输合同
- 2025年鹰潭货运资格证培训考试题
- 户外广告发布合同
- 2025年遵义货运从业资格考试题
- 2025年黑龙江交通职业技术学院单招职业技能测试题库必考题
- 成人脑室外引流护理-中华护理学会团体 标准
- 2024年甘肃省公务员考试《行测》真题及答案解析
- 《撰写演讲稿》-省赛一等奖-完整版课件
- 【保密工作档案】外场试验保密工作方案
- 《民法典》婚姻家庭编解读之夫妻个人财产第1063条PPT课件
- 2 遗传图绘制
- 人教部编版二年级语文下册第六单元15古诗二首精品教案(集体备课)
- 三年级下册数学教案-2.1速度、时间、路程-沪教版
- 墙面板安装爬梯验算
- 矢量分析与场论讲义
评论
0/150
提交评论