实验五 选择结构程序设计
选择结构程序设计实验报告

嘉应学院计算机学院实验报告课程名称程序设计基础实验名称实验地点指导老师实验时间提交时间班级姓名座号一、实验目的和要求(1)了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。
(2)学会正确使用逻辑运算符和逻辑表达式。
(3)熟练掌握if语句的使用(包括if语句的嵌套)。
(4)熟练掌握多分支选择语句—switch语句。
(5)结合程序掌握一些简单的算法。
(6)进一步学习调试程序的方法。
二、实验环境和方法实验方法:(一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。
(二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。
(三)根据实验内容,编译程序。
实验环境:Windows xp Visual C++6.0三、实验内容及过程描述实验步骤:①进入Visual C++ 6.0集成环境。
②输入自己编好的程序。
③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时改正。
④进行编译和连接。
如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提示找到出错位置和原因,加以改正。
再进行编译,如此反复直到不出错为止。
⑤运行程序并分析运行结果是否合理。
在运行是要注意当输入不同的数据时所得结果是否正确,应运行多次,分别检查在不同情况下结果是否正确。
实验内容:本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。
(1)有一函数:()()()⎪⎩⎪⎨⎧≥-<≤-<=10x11310x1121xxxxy写程序,输入x的值,输出y相应的值。
用scanf函数输入x的值,求y的值。
程序如下:#include<stdio.h>int main(){float x,y;int i;while(i<1000){printf("请输入x的值:");scanf("%f",&x);if(x<1)y=x;else if(1<=x&&x<10)y=2*x-1;elsey=3*x-11;printf("y的值为:%f\n",y);}程序运行结果如下:(2)从键盘输入一个小于1000的正数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。
实验5循环结构

实验5循环结构理解课程内容、完成实验任务、写好实验报告实验五循环结构一、实验目的1.理解循环结构的含义和作用。
2.掌握ForNe某t、DoWhile----Loop结构的用法。
3.能够使用循环结构编写程序。
二、实验内容1.实验准备在练习文件夹中建立vb5-1、vb5-2、vb5-3、vb5-4、vb5-5、vb5-6、vb5-7、vb5-8文件夹。
2.DoWhile—Loop选择结构例1:给内部变量赋值(1)创建工程。
(2)建立用户界面,如右图所示。
(3)双击按钮控件,切换到代码设计窗口,添加程序代码如下:EndSub(4)调试运行程序。
(5)保存结果到练习文件夹中的vb5-1文件夹。
该程序通过在循环结构中添加K=K+1语句,使得K的值分别为2,3,4,,10。
(1)创建工程。
(2)建立用户界面,如上图所示。
(3)双击按钮控件,切换到代码设计窗口,添加程序代码如下:理解课程内容、完成实验任务、写好实验报告EndSub(4)调试运行程序。
(5)保存结果到练习文件夹中的vb5-2文件夹。
3.For—Ne某t选择结构程序代码如下:EndSub(4)调试运行程序。
(5)保存结果到练习文件夹中的vb5-3文件夹。
三、思考题1.设计一个程序,要求在窗体上显示20个100~200之间的随机整数。
保存结果到练习文件夹中的vb5-4文件夹。
2.设计一个程序,要求用对话框输入n值,在窗体上显示=1某2+2某3+3某4++n某(n+1)的值。
保存结果到练习文件夹中的vb5-5文件夹。
设计提示:(1)使用变量保存和值。
n的计算结果为14。
(2)使用DoWhile----Loop结构判断的大小,当>1000时结束循环。
保存结果到练习文件夹中的vb5-6文件夹。
2理解课程内容、完成实验任务、写好实验报告(3)使用For/Ne某t结构,结合E某itFor语句判断>1000时结束循环。
保存结果到练习文件夹中的vb5-7文件夹。
python程序设计实验报告五:循环结构程序设计(综合性实验)

python程序设计实验报告五:循环结构程序设计(综合性实验)安徽⼯程⼤学Python程序设计实验报告班级物流192 姓名张⽻学号 3190505221 成绩⽇期 2020.4.23 指导⽼师修宇实验五综合运⽤三种基本结构进⾏程序设计(综合性实验)(⼆学时)【实验⽬的】(1)进⼀步掌握选择与循环结构程序设计的⽅法和技巧;(2)综合运⽤三种基本结构进⾏程序设计;【实验条件】PC机或者远程编程环境【实验内容】1、完成三个编程题。
(1)计算并输出指定范围内的素数素数⼜称质数。
指整数在⼀个⼤于1的⾃然数中,除了1和此整数⾃⾝外,没法被其他⾃然数整除的数。
换句话说,只有两个正因数(1和⾃⼰)的⾃然数即为素数。
⽐1⼤但不是素数的数称为合数。
1和0既⾮素数也⾮合数。
素数在数论中有着很重要的作⽤。
2300多年前,古希腊数学家欧⼏⾥得在《⼏何原本》⼀书中证明了素数有⽆穷多个,如2、3、5、7、11等等。
问题描述:编程实现输出指定范围内的素数,输⼊以逗号间隔,输出以空格间隔。
指定范围由⽤户输⼊指定。
(2)九九乘法表问题描述:请按照如下格式设计⼀个“九九乘法⼝诀表”,并打印出来。
编程要点及提⽰:1. 使⽤for循环或者while循环实现以上功能2. 代码量不超过10⾏3. 在⼀⾏中,每个等式之间使⽤制表符"\t"进⾏分隔;对于每⼀⾏等式之间使⽤print()打印空字符实现,即print("")(3)统计不同字符个数问题描述:⽤户从键盘输⼊⼀⾏字符。
请编写⼀个程序,统计并输出其中英⽂字符、数字符号、空格和其他字符的个数。
输⼊格式:输⼊⼀⾏字符输出:按照顺序输出字母,数字,空格,及其他字符的个数,个数以空格分隔如:【实验记录与分析】(请在填写实验记录与分析结果)1.计算并输出指定范围内的素数输⼊代码,输出结果及分析如下:易错点:1.程序⽆法同时处理两个输⼊数据,在输⼊未处理时。
2.本题中的else语句不能和第⼆个的if对齐。
选择结构程序设计-C语言程序实验报告

安徽工程大学高级语言程序设计实验报告班级姓名同组者/ 成绩日期2019.10.10 指导教师实验名称选择结构程序设计一、实验目的1.学会正确使用关系运算符和关系表达式。
2.学会正确使用逻辑运算符、逻辑表达式以及关系表达式等。
3.熟悉掌握if语句和switch语句的用法。
4.熟悉选择结构程序中的语句执行过程,掌握选择结构程序设计的方法。
二、实验内容1.编写程序,判断从键盘上输入的一个字符类型,并按下列要求输出。
(1)若该字符是数字,输出字符串“0~9”。
(2)若该字符是大写或者小写字母,输出字符串“A~z”。
(3)若该字符是其他字母,输出“!,@,……”。
完善P56页第一个源程序,对源程序进行编译、连接并运行,完成调试报告。
2.编程并上机调试。
(1)给出一个不多于4位的正整数,求它是几位数。
(2)给出一个百分制成绩,要求输出成绩等级'A'、'B'、'C'、'D'、'E'。
90分以上为'A',80~90分为'B'70~79分为'C',60~69分为'D',60分以下为'E'。
用switch语句来实现。
(3)输入4个整数,要求按从小到大的顺序输出。
(4)输入3个整数,将最大数与最小数输出。
(5)输入一个字符,如果是数字字符,把它转换成相应的数字输出;如果不是,则以十进制整数形式输出其ASCⅠⅠ码值。
*思考题3.若在实验内容1的程序第8行的语句else if (_)后多输入了一个分号,即“elseif (_);”,分析程序,写出预期结果,然后输入调试,查看运行结果与预期结果是否一致并分析原因。
4.若在实验内容1的程序第8行的语句else if(_)法人括号内输入c>='A'&&c<='z'后,判断在调试时是否能得到正确结果,并分析原因。
三、算法流程图或实验步骤(可根据需要增删、修改)1.(1)算法流程图#include<stdio.h>void main( ){char c;scanf("%c",&c);if(c>='0'&&c<='9')printf("0~9\n");else if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))printf("A~z\n");elseprintf("!,@,……\n");}(2)实验步骤Files→New→Files→C++source File→文件名:program3011.c→位置:E:\123\→确定→完善源程序→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看运行结果2.(1)算法流程图:#include<stdio.h>void main ( ){int a,b;scanf("%d",&a);b=a/10;if (b==0)printf("该数是一位数");else if (b>=1&&b<=9)printf("该数是两位数");else if (b>=10&&b<=99)printf("该数是三位数");elseprintf("该数是四位数");}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3021.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看并验证运行结果(2)算法流程图:#include <stdio.h>void main(){int a,b;scanf("%d",&a);b=a/10;switch(b){case(10):printf("A\n");break;case(9):printf("A\n");break;case(8):printf("B\n");break;case(7):printf("C\n");break;case(6):printf("D\n");break;default:printf("E\n");break;}}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3022.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看并验证运行结果(3)算法流程图:#include<stdio.h>void main ( ){int a,b,c,d,t;scanf("%d,%d,%d,%d",&a,&b,&c,&d);if (a>b){t=a;a=b;b=t;}else if (a>c){t=a;a=c;c=t;}else if (a>d){t=a;a=d;d=t;}else if (b>c){t=b;b=c;c=t;}else if (b>d){t=b;b=d;d=t;}else if (c>d){t=c;c=d;d=t;}printf("%d,%d,%d,%d",a,b,c,d);return 0;}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3023.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看并验证运行结果(4)算法流程图:#include<stdio.h>void main ( ){int a,b,c,t;scanf("%d,%d,%d",&a,&b,&c);if (a>b){t=a;a=b;b=t;}else if (a>c){t=a;a=c;c=t;}else if (b>c){t=b;b=c;c=t;}printf("min is %d,max is %d",a,c);}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3024.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s)0warning(s)后→BuidExecute→查看并验证运行结果(5)算法流程图:#include<stdio.h>void main ( ){char a;scanf("%c",&a);if (a>='0'&&a<='9')printf("%c",a);elseprintf("%d",a);}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3025.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看并验证运行结果*思考题:3.算法流程图:#include<stdio.h>void main( ){char c;scanf("%c",&c);if(c>='0'&&c<='9')printf("0~9\n");else if((c>='a'&&c<='z')||(c>='A'&&c<='Z'));printf("A~z\n");elseprintf("!,@,……\n");}实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3031.c→位置:E:\123\→确定→修改代码→Buid→是4.算法流程图:#include<stdio.h>void main( ){char c;scanf("%c",&c);if(c>='0'&&c<='9')printf("0~9\n");else if(c>='A'&&c<='z')printf("A~z\n");elseprintf("!,@,……\n");}实验流程:Files→Close Workspace→Files→New→Files→C++source File→文件名:program3041.c→位置:E:\123\→确定→修改代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看并验证运行结果四、实验结果及分析1.2.程序见第三项算法流程图。
程序设计基础(C语言)实验报告

程序设计基础(C语言)实验报告课程名称:程序设计基础(C语言)姓名:学号:年级:专业:指导教师:实验地点:目录实验一顺序结构程序设计实验二选择结构程序设计实验三循环结构程序设计实验四数组及其应用实验五函数及其应用实验六指针及其应用实验(一)顺序结构程序设计一、实验目的1.掌握顺序结构程序的设计思想,领会顺序结构的程序执行时顺次执行的特点。
2.掌握赋值语句的特点、功能。
3.掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。
4.掌握编写程序和调试程序的方法。
二、实验内容及要求1.用下面的scanf函数输入数据使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。
#include <stdio.h>int main(){int a,b;float x,y;char c1,c2;scanf("a=%db=%d",&a,&b);scanf("%f%e",&x,&y);scanf("%c%c",&c1,&c2);printf("a=%d,b=%d,x=%.1f,y=%.2f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);return 0;}运行时分别按以下方式输入数据,观察输出结果,分析原因(□表示空格,↙表示回车)。
(1)a=3,b=7,x=8.5,y=71.82,A,a↙(2)a=3□b=7□x=8.5□y=71.82□A□a↙(3)a=3□b=7□8.5□71.82□A□a↙(4)a=3□b=7□8.5□71.82Aa↙(5)3□7□8.5□71.82Aa↙(6)a=3□b=7↙8.5□71.82↙A↙a↙(7)a=3□b=7↙8.5□71.82↙Aa↙(8)a=3□b=7↙8.5□71.82Aa↙通过此题,总结输入数据的规律和容易出错的地方。
C语言实验学生版(最新版)

实验一:简单的C程序设计(2学时)一、实验方式:一人一机二、实验目的:1、了解C语言程序的编译环境和编写过程。
2、掌握C语言程序在Visual C++ 6.0环境下的调试过程。
3、初步了解C语言程序的特点。
4、掌握C语言的数据类型。
三、实验内容:1、计算两个数x和y的和。
(教材P5【例1-2】)2、从键盘输入华氏温度h,输出摄氏温度c(摄氏温度=5/9*(华氏温度-32))。
(实验教材P18)3、给定圆环,输入内圆环半径r1、外圆环半径r2,求出圆环的面积。
(实验教材P27)4、从键盘上输入两个整数x、y,实现两个数的交换,并求出最大值、最小值和两个数的平均值。
(实验教材P21)5、输入并运行以下程序,分析运行结果。
(实验教材P27)#include <stdio.h>void main( ){int i,j;i=8; j=10;printf(“%d,%d\n”,++i,++j);i=8; j=10;printf(“%d,%d\n”,i++,j++);i=8; j=10;printf(“%d,%d\n”,++i,i);i=8; j=10;printf(“%d,%d\n”,i++,i);}四、实验程序代码:五、实验运行结果(截图):实验二:顺序结构程序设计(2学时)一、实验方式:一人一机二、实验目的:1、掌握标识符、常量、变量的定义及使用。
2、掌握C语言的常用运算符及表达式。
3、掌握单分支if语句的使用方法。
4、掌握双分支if-else语句的使用方法。
三、实验内容:1、从键盘输入一个3位整数,请输出该数的逆序数。
(实验教材P27)2、输入3个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。
(实验教材P27)3、判断箱子是正方体还是长方体。
(实验教材P33)4、有一函数: x (x<1)y= 2x-1 (1≤x<10)3x-11 (x≥10) 编写程序,输入x值,输出y值。
选择结构程序设计实验心得

选择结构程序设计实验心得
上机实验是学习选择结构程序设计必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。
对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
加深对课堂讲授内容的理解。
课堂上要讲授许多关于C语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用C语言这个工具解决实际问题,又必须掌握它。
通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握C语言的语法规定。
对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
通过这次选择结构程序设计实验学习,我们了解了一些关于C语言的知识,理解巩固了我们C语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。
同时它让我知道,只要你努力,任何东西都不会太难。
实验5、选择结构程序结构

实验五、选择与循环结构一、实验目的:1、 掌握建立和执行M 文件的方法。
2、 掌握利用if 语句实现选择结构的方法。
3、 掌握利用switch 语句实现多分支选择结构的方法。
4、 掌握try 语句的使用。
5、 掌握利用for 语句实现循环结构的方法。
6、 掌握利用while 语句实现循环结构的方法。
7、 熟悉利用向量运算来代替循环的操作方法。
二、实验内容:1、 列分段函数的值。
⎪⎩⎪⎨⎧--≠≠<≤+--≠<-+=其他且且,632,100,6530,6222x x x x x x x x x x x y要求:(1) 用if 语句实现,分别输出x =-0.5,-3.0,1.0,2.0,2.5,3.0,5.0时的y 值。
提示:x 的值从键盘输入,可以是向量。
clearx=input('请输入x 的值:x=');if x<0&x~=-3y=x^2+x-6;elseif x>=0&x<10&x~=2&x~=3y=x^2-5.*x+6;else y=x^2-x-6;enddisp(y)(2) 用逻辑表达式实现上述函数。
2、 输入一个百分制成绩,要求输出成绩的等级为A ,B ,C ,D ,E 。
其中90~100分为A ,80~89分为B ,70~79分为C ,60~69分为D ,60分以下为E 。
要求:(1)分别用if 语句和switch 语句实现。
clearx=input('请输入你的成绩x=');if x<=100&x>90disp('A');elseif x>80&x<=89disp('B');elseif x>70&x<=79disp('C');elseif x>60&x<=69disp('D');else disp('E');endclear;x=input('请输入你的成绩x=');switch fix(x)case num2cell(90:100),disp(char(65));case num2cell(80:89),disp(char(66));case num2cell(70:79),disp(char(67));case num2cell(60:69),disp(char(68));case num2cell(0:59),disp(char(69));otherwise disp('你输入的成绩无效');end(2)输入百分制成绩后要判定该成绩的合理性,对不合理的成绩要输出出错信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级______________学号___________姓名___________ ___________号机器 时间:________________________
实验目的:
1. 2. 3. 4. 掌握关系运算符和逻辑运算符 学会正确书写关系表达式和逻辑表达式 熟练掌握三种 if 语句和 switch 语句 了解 break 和 continue 的使用和区别
6 7 8 9
case x<0 : y=-2 ;break; } printf(“y=%d\n” , y); } 对 错 运行结果 错误在 应改为: 行
四. 写程序 输入某学生的成绩,经处理后给出学生的等级,等级分类如下: 90 分以上(包括 90) : A 80 至 90 分(包括 80) :B 70 至 80 分(包括 70) :C 60 至 70 分(包括 60) :D 60 分以下: E, 分别用 if 和 switch 编程
实验要求:
每次实验前,学生要先预习实验内容 ,写出分析结果或程序, 经实验指导老师检查后,上机运行、 调试程序,得出最终正确结果。
实验内容:
一. 读程序 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。 1、 main() { int a,b,c; a=10;b=60;c=30; if(a>b) a=b; b=c; c=a; printf(“a=%d,b=%d,c=%d\n” , a , b, c ); } 分析结果 运行结果 2、main() { int x=60,a=30,b=20; int v1=3,v2=8; if (a<b) if (b!=15) if (!v1) x=1; else if (v2) x=-2; printf(“%d\n”, x); } 分析结果 运行结果a1,a2 , b1 ,b2 ; int i=4 , j=8 , k=0; a1=!k; a2= i!= j ; printf(“a1=%d\ta2=%d\n”,a1 , a2); b1=k&&j; b2=k || j; printf(“b1=%d\tb2=%d\n”,b1 , b2); } 分析结果 运行结果 4、main() { int a=1, b=3 ,c=5,d=4 ; int x; if (a<b) if(c<d) x=1; else if (a<c) if (b<d) x=2 ; else x=3; else x=6; else x=7 printf(“x=%d\n”,x); } 分析结果 运行结果 5、main() { int k; scanf(“%d” , &k); switch(k) { case 1: printf(“%d\n”, k++); case 2: printf(“%d\n”, k++); case 3: printf(“%d\n”, k++); case 4: printf(“%d\n”, k++); break; default : printf(“Full! \n”); } } 输入 k 值 1 3 输入 k 值 运行结果 1 3 输出结果
分析结果
输出结果
二. 完成程序 要求:根据要求,分析给出的上下语句,填写程序 1、 输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字 母,则把它变成大写字母;其他字符不变,请在_______上填写正确内容。 main() { char ch ; scanf(“%c” , &ch); if (_______________________) ch=ch+32; else if (ch>=’a’ && ch<=’z’ ) ____________________; printf(“%c” ,ch); } 2、 以下程序根据输入的三角形的三边判断是否能组成三角形, 若可以则输出它的面积和三 角形的类型,请在_______上填写正确内容。 #include “math.h” main() { float a, b , c ; float s , area ; scanf(“%f ,%f ,%f” , &a, &b ,&c); if (___________________________) { s=(a+b+c)/2; area= sqrt(s*(s-a)*(s-b)*(s-c)); printf(“%f”,area); if (_________________) printf(“等边三角形”); else if (_________________) printf(“等腰三角形”); else if((a*a+b*b==c*c)|| (a*a+c*c==b*b)|| (c*c+b*b==a*a)) printf(“直角三角形”); else printf(“一般三角形”); } else printf(“不能组成三角形”); } 三. 调试程序 要求:分析下列程序是否正确,如有错,错在哪儿?应如何改正?如正确,运行结果如何? 上机调试之。 1、调试下列程序,使之具有如下功能:输入 a 、b、c 三个整数,求最小值。写出调试过程。 main() { int a,b,c; scanf("%d%d%d",a,b,c); if((a>b)&&(a>c)) if(b<c) printf("min=%d\n",b); else printf("min=%d\n",c); if((a<b)&&(a<c)) printf("min=%d\n",a); }
(2)a=2,b=1,c=3 (3)a=3,b=2,c=1 (4)a=3,b=1,c=2 (5)a=3,b=3,c=2 (6)a=2,b=1,c=2 2、以下程序实现求分段函数。 main() 1 { int x ,y ; 2 scanf(“%d”,&x); 3 if (3<x<=9) y=x*(x+2); 4 else if (-1<x<=3) y=2*x; 5 else if (x<=-1) y=x-1; 6 else y=-1; 7 if (y!=-1) printf(“%d”, y); 8 else printf(“Error”); 9 } 对 错 运行结果 错误在 应改为: 3、 有一函数关系如下: y= 以下程序表示上面的函数关系 main() 1 { int x ,y ; 2 scanf(“%d” ,&x); 3 y=x-3; 4 if (x!=0) 5 if (x>0) y=x+3; 6 else y=x; 7 printf(“y=%d\n” , y); 8 } 对 错 运行结果 错误在 应改为: 4、 有一函数关系如下: y= 2 x>=0 以下程序表示上面的函数关系 main() 1 { int x ,y ; 2 scanf(“%d” ,&x); 3 switch(x); 4 { 5 case x>=0 : y=2 ; break; -2 x<0 行 x-3 0 x+3 x<0 x=0 x>0 行
程序中包含有一些错误,按下述步骤进行调试。 ⑴ 设置观测变量。按<Alt+B> 键,屏幕弹出 "Add watch"窗口,在窗口中可输入要观察 的变量或表达式,此处输入 a,重复以上操作并分别输入 b、c ,在屏幕下方的"message"窗 口显示变量名 a、b 、c,且变量名的后面有提示,如 a 的后面是 undefined symbol 'a' ,这是 因为程序没有运行,变量没有登记,所以 TC 环境不知道 a 是什么。 ⑵ 单步执行程序。按<F8>键,屏幕上半部"Edit" 窗口中的程序第一行程序的文字背景 色变为兰色,表示此语句将被执行。连续按<F8>键,兰色条一句句下移。 ⑶ 通过单步执行发现程序中的错误。当单步执行到 scanf()函数一句时,屏幕自动切换 到 DOS 窗口,等待用户的输入,假定我们输入 "1 2 3",变量 a 、b、c 接受后应在屏幕信息 窗口显示出来,但是此时我们看到的却不是我们输入的数据。这时我们就要检查程序。发现 在调用 scanf()函数中变量名前面没有取地址运算符 "&" 。我们输入的数据没有正确存入到变 量中。经改正后再单步运行,变量 a、b、c 的值被正确输入。继续单步执行,程序正确找到 最小值并输出。 ⑷ 通过充分测试发现程序中的错误。虽然程序可以运行,并不能说程序就是正确的, 因为编译系统检查程序没有语法错误就可运行了,但是编译系统不能发现程序中的逻辑错 误。一个程序必须通过严格的测试,把可能存在的错误都找出来并改正。关于如何进行程序 测试不在本书的讲述范围, 此处仅对此例进行测试的一些原则进行介绍。 刚才给出的输入是 变量 a 为最小值,且 a、b、c 都不相等的情况,可能的合理输入还有:a 为最小值且 a、b、 c 相等,a 为最小值且 b、c 相等,b 为最小值且 a、b、c 互不相等,b 为最小值且 a 、c 相等, 等等。严格说,在调试过程中对这些可能的情况都要进行测试,才能保证软件的质量。所以 程序的调试、测试是一项非常烦琐的工作,也是非常重要的工作。对于初学者来说应该建立 良好的习惯, 在调试程序的时候, 应该尽可能考虑到程序运行时各种可能, 设计相应的用例。 我们再次运行程序,输入为"2 ,1,3",程序输出却是"min=2"。用单步执行的方法,马上发 现变量 a 、 b、 c 的值是不对的, 原因是程序要求输入数据的分隔符是 (还允许使用回车或 <Tab> 键。改正输入后,程序没有输出,还是用单步执行的方法,监视程序的执行过程,发现程序 中条件设计有误,经过改正的程序如下: main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); if((a<b)&&(a<c)) printf("min=%d\n",a) else if((b<a)&&(b<c)) printf("min=%d\n",b); else if((c<a)&&(c<b)) printf("min=%d\n",c); else printf("No find minimum\n"); } 上述程序是按在三个数中仅有一个最小值时才称其为最小值进行设计的。 另外, 注意程序的 书写格式,一定要采用缩进格式,即不同层次(分支)的语句左起的空格不同,这样可以有 效地提高程序的可读性。 若输入下列数据,分析程序的执行顺序并写出运行结果 (1)a=1,b=2,c=3