《C语言程序设计》实验指导第一部分上机实验的指导思想和要求1.上机实验的目的学习C语言程序设计课程不能满足于“懂了”,满足于能看懂书上的程序,而应当熟练地掌握程序设计的全过程,即独立编写出源程序,独立上机调试程序,独立运行程序和分析结果。
这是一门实践性很强的课程,必须十分重视实践环节,保证有足够的上机实践时间。
上机实验的目的是:(1)加深对讲授内容的理解,尤其是一些语法规定。
(2)熟悉C语言程序开发的环境。
(3)学会上机调试程序。
也就是善于发现程序中的错误,并且能很快地排除这些错误。
要学会根据“出错提示”,分析并找出错误。
2.上机实验前的准备工作(1)了解所用的计算机系统(包括C编译系统)的性能和使用方法。
(2)复习和掌握与本实验有关的教学内容。
(3)准备好上机所需的程序。
(4)对运行中可能出现的问题应事先作出估计;对程序中自己有疑问的地方,应作上记号,以便在上机时给予注意。
(5)准备好调试和运行时所需的数据。
3.上机实验的步骤(1)调出C编译系统,进人C工作环境。
(2)输人自己编好的程序(3)检查一遍已输人的程序是否有错(包括输入时打错的和编程中的错误),及对改正。
(4)进行编译。
如果在编译和连接过程中发现错误,输出窗口会出现“出错信息”,根据提示找到出错位置和原因,加以改正,再进行编译,如此反复,直到顺利通过编译和连接。
(5)运行程序,并分析运行结果是否合理和正确。
在运行时要注意当输入不同数据时所得到的结果是否正确。
此时应运行几次,分别检查在不同情况下程序是否正确。
4.写实验报告,实验报告应包括以下内容:(1)预习报告(实验目的,题目,程序清单(或算法流程),疑难问题等);(2)实验数据;(3)实验过程报告;(4)实验小结。
第二部分关于程序的调试和测试l.程序错误的类型主要有以下几种:(1)语法错误:不符合C语言的语法规定。
会在编译时被发现并指出。
属于“致命错误”,不改正是不能通过编译的。
对一些在语法上有轻微毛病但不影响程序运行的问题(如定义了变量但始终未使用),编译时会发出“警告”。
虽然程序能通过编译,但不应当使程序“带病工作”,应尽可能将程序中所有“致命错误(error)”和“警告(warning)”的因素都排除。
(2)逻辑错误:程序无语法错误,也能正常运行,但是结果不对。
例如求s=1+2+3+…+100,有人写出以下语句:for(s=0,i=1;i<100;i++)s=s+i;语法没有错,但求出的结果是1+2+3+…+99之和,而不是1+2+3+……100之和。
这种错误计算机是无法检查出来的。
如果是算法有错,则应先修改算法,再改程序。
如果是算法正确而程序写得不对,则直接修改程序。
(3)运行错误:有时程序既无语法错误,又无逻辑错误,但程序不能正常运行或结果不对。
多数情况是数据不对,包括数据本身不合适以及数据类型不匹配。
2.程序的测试程序调试的任务是排除程序中的错误,使程序能顺利地运行并得到预期的效果。
程序的调试阶段不仅要发现和消除语法上的错误,还要发现和消除逻辑错误和运行错误。
除了可以利用编译时提示的“出错信息”来发现和改正语法错误外,还可以通过程序的测试来发现逻辑错误和运行错误。
测试的目的是检查程序有无“漏洞”。
对于一个简单的程序,要找出其运行时全部可能执行到的路径,并正确地准备数据并不困难。
但是,如果需要测试一个复杂的大程序,要找到全部可能的路径,并准备出所需的测试数据并非易事。
例如,有两个非嵌套的if语句,每个if 语句有2个分支,它们所形成的路径数目为2×2=4;如果一个程序包含100个if语句,则可能的路径数目为2100=1.267651×1030。
实际上进行测试的只是其中一部分(执行几率最高的部分)。
因此,经过测试的程序一般还不能轻易宣布为“没有问题”,而只能说:“经过测试的部分无问题”。
实验一C语言运行环境一、目的和要求1、熟悉使用C语言运行环境。
2、掌握C语言程序的书写格式和C语言程序的结构。
3、掌握C语言上机步骤,了解运行一个C程序的方法。
二、实验内容调试运行以下程序(调试时找出程序错误并修改,再编译、运行)1.编写自己的第一个程序录入如下C源程序,文件名自定(**.c):#include <stdio.h>int main( ){printf("This is a C Program。
\n);return 0;}对源程序进行编译、连接并运行,观察分析运行结果。
2.编写程序,译密码,要求将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母,因此, “China”应译为“Glmre”。
请编一程序,用赋初值的方法使c1、c2、c3、c4、c5这5个变量的值分别为字符C,h,i,n,a,经过运算后,输出译码后的结果。
3下面的C程序,目的是想计算由键盘输入的任意两个整数的积。
记下在调试过程中所发现的错误、系统给出的出错信息和对策。
分析讨论对策成功或失败的原因#include “stdio.h”int prodct(int a ,int b ){int c ;c=a*b;return c;}int main(){ int x,y,p;scanf(“%d,%”,&x,&y) ;p=prodct(x,t) ;printf(“The product is %d”,p);return 0;}4、求1+2+3+…+100的和,程序如下。
记下在调试过程中所发现的错误、系统给出的出错信息和对策。
分析讨论对策成功或失败的原因#include “stdio.h”int min(){ int i , sum=0;for(i=1;i<=100;i++) sum=sum+i;printf("sum=%d\n",sum);return 0;}三、分析与讨论1、记下在调试过程中所发现的错误、系统给出的出错信息和对策。
分析讨论对策成功或失败的原因。
2、总结C程序的结构和书写规则。
实验二顺序程序设计一、实验目的1.学习C语言基本输入输出函数的使用。
2.编写顺序结构程序并运行。
二、实验内容1、已知:a=2,b=3,x=3.9,y=2.3(a,b整型,x,y实型),计算算术表达式(float)(a+b)/2+(int)x%(int)y 的值。
试编程上机验证。
(提示编程要点:1、先判断结果值类型,可设置一个此类型的变量用于记录表达式结果,例如变量r;2、程序先给几个条件变量赋初值,然后将表达式赋值给变量r;3、最后输出变量r的值就是表达式的值。
)2.若a=5,b=7,c1=‘a’,x=31.19,y=-32.19, “COMPUTER”,编写程序,实现下面的输出格式和结果(空格用□表示):a=□5,b=□□7,a-b=-2,a/b= 71%c1=’a’□or□97(ASCII)x=31.1900, y=□-32.19,x+y=□□-1.0c2=COMPUTER,COMP,□□□COMP程序中要包括定义变量类型和设计输出(最后一个字符串可使用常量形式,其余要求使用变量)。
3.求两个复数的加、减、乘运算结果并输出。
要求,复数(complex)的实部(the real part)和虚部(the imaginary part)由键盘输入,输入数据前要有提示信息输出,将两个复数及其加、减、乘运算结果以复数的形式输出。
例:输出:两个复数分别是:comp1=6.00+j4.40,comp2=5.00+j3.00compl1+compl2=11.00+j7.40 等三、实验要求上机前准备好上机所需的程序,上机时输入和调试自己所编写的程序。
实验三选择结构程序设计一、实验目的1.正确使用关系表达式和逻辑表达式表达条件。
2.学习分支语句if和switch的使用方法。
3.学习调试程序。
二、实验内容1、从键盘输入一个整数,编程判断其奇偶性,并输出结果。
2、某托儿所收2岁到6岁的孩子,2岁、3岁孩子进小班(Lower class);4岁孩子进中班(Middle class);5岁、6岁孩子进大班(Higher class)。
编写程序,输入孩子年龄,输出年龄及进入的班号。
如:输入:3,输出:age:3,enter Lower class。
建议用switch语句来实现。
调试无语法错误后,使用下列测试用例进行测试:(1)3岁;(2)4岁;(3)5岁;(4)7岁。
3 编写一个运算器程序,要求能实现两个数的加、减、乘、除四种运算,输入两个操作数和一个运算符号,输出结果,注意0不能做除数。
使用下列测试用例进行测试:(1)加法;(2) 减法;(3)乘法;(4)0不为除数的除法;(5)0为除数的除法。
选作题:通过键盘输入一个字符,判断该字符是数字字符、字母、空格还是其他字符。
三、实验要求1.复习选择结构程序设计。
2.上机前准备好上机所需的程序,上机时输入和调试自己所编写的程序。
3.上机结束后,应整理出实验报告,实验报告的内容应包括:题目、程序清单、运行结果及对运行情况的分析。
实验四循环结构程序设计一、实验目的1、掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。
2、了解条件型循环结构的基本测试方法。
3、掌握如何正确地控制计数型循环结构的次数。
4、了解在循环结构中,提高程序效率的方法。
5、进一步学习调试程序。
二、实验内容(1)编程求解:鸡兔同笼,有三十五只头,九十四只足,求鸡和兔各有多少?(提示:用穷举法求解。
即鸡或免的个数x从0至35循环试探,如果满足共有94只足的已知条件,那么此时的x就是一个解。
问题:循环条件可以进一步简化以提高程序效率吗?)(2)假设密码为12345,当用户输入的密码正确时,显示“Welcome!”,程序结束;密码错误时,显示“Error! Try again!”,并要求用户重新输入密码。
如果输入3次后密码仍错误,显示“Sorry!You are not welcome”,并不允许再输入,程序结束。
(用户输入的密码限定为整数)问题:此题应选择哪些测试用例较好?(3)已知某班有4位同学:A、B、C、D。
其中有一位同学做了好事,但不知是谁。
当被询问时,A说:不是我;B说:是C;C说:是D;D说:他胡说。
已知其中有三个人说的是真话,一个人说的是假话。
请根据以上信息,编写程序,找出做了好事的人。
(提示:C语言中,某个表达式为“真”即值为1,为“假”即值为0;本题中要认真考虑4位同学的话应如何用关系表达式表示?)选作题:求和sum=1!+2!+3!+4!+…20!(考虑应该用何种类型的量存放结果sum. )三、实验要求1. 复习循环结构程序设计。