ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:26.30KB ,
资源ID:9605713      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9605713.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C程序设计实验指导书2.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C程序设计实验指导书2.docx

1、C程序设计实验指导书2C语言程序设计实验指导第一部分 上机实验的指导思想和要求1上机实验的目的学习C语言程序设计课程不能满足于“懂了”,满足于能看懂书上的程序,而应当熟练地掌握程序设计的全过程,即独立编写出源程序,独立上机调试程序,独立运行程序和分析结果。这是一门实践性很强的课程,必须十分重视实践环节,保证有足够的上机实践时间。上机实验的目的是: (1)加深对讲授内容的理解,尤其是一些语法规定。(2)熟悉C语言程序开发的环境。(3)学会上机调试程序。也就是善于发现程序中的错误,并且能很快地排除这些错误。要学会根据“出错提示”,分析并找出错误。2上机实验前的准备工作 (1)了解所用的计算机系统(

2、包括C编译系统)的性能和使用方法。 (2)复习和掌握与本实验有关的教学内容。(3)准备好上机所需的程序。(4)对运行中可能出现的问题应事先作出估计;对程序中自己有疑问的地方,应作上记号,以便在上机时给予注意。 (5)准备好调试和运行时所需的数据。3上机实验的步骤 (1)调出C编译系统,进人C工作环境。(2)输人自己编好的程序(3)检查一遍已输人的程序是否有错(包括输入时打错的和编程中的错误),及对改正。 (4)进行编译。如果在编译和连接过程中发现错误,输出窗口会出现“出错信息”,根据提示找到出错位置和原因,加以改正,再进行编译,如此反复,直到顺利通过编译和连接。 (5)运行程序,并分析运行结果

3、是否合理和正确。在运行时要注意当输入不同数据时所得到的结果是否正确。此时应运行几次,分别检查在不同情况下程序是否正确。4写实验报告,实验报告应包括以下内容:(1)预习报告(实验目的,题目,程序清单(或算法流程),疑难问题等);(2)实验数据;(3)实验过程报告;(4)实验小结。第二部分 关于程序的调试和测试 l程序错误的类型 主要有以下几种: (1)语法错误:不符合C语言的语法规定。会在编译时被发现并指出。属于“致命错误”,不改正是不能通过编译的。对一些在语法上有轻微毛病但不影响程序运行的问题(如定义了变量但始终未使用),编译时会发出“警告”。虽然程序能通过编译,但不应当使程序“带病工作”,应

4、尽可能将程序中所有“致命错误(error)”和“警告(warning)”的因素都排除。 (2)逻辑错误:程序无语法错误,也能正常运行,但是结果不对。例如求s=1+2+3+100,有人写出以下语句:for(s=0,i=1;i100;i+) s=s+i;语法没有错,但求出的结果是1+2+3+99之和,而不是1+2+3+100之和。这种错误计算机是无法检查出来的。如果是算法有错,则应先修改算法,再改程序。如果是算法正确而程序写得不对,则直接修改程序。 (3)运行错误:有时程序既无语法错误,又无逻辑错误,但程序不能正常运行或结果不对。多数情况是数据不对,包括数据本身不合适以及数据类型不匹配。2程序的测

5、试 程序调试的任务是排除程序中的错误,使程序能顺利地运行并得到预期的效果。程序的调试阶段不仅要发现和消除语法上的错误,还要发现和消除逻辑错误和运行错误。除了可以利用编译时提示的“出错信息”来发现和改正语法错误外,还可以通过程序的测试来发现逻辑错误和运行错误。 测试的目的是检查程序有无“漏洞”。对于一个简单的程序,要找出其运行时全部可能执行到的路径,并正确地准备数据并不困难。但是,如果需要测试一个复杂的大程序,要找到全部可能的路径,并准备出所需的测试数据并非易事。例如,有两个非嵌套的if语句,每个if语句有2个分支,它们所形成的路径数目为22=4;如果一个程序包含100个if语句,则可能的路径数

6、目为2100=1.2676511030。实际上进行测试的只是其中一部分(执行几率最高的部分)。因此,经过测试的程序一般还不能轻易宣布为“没有问题”,而只能说:“经过测试的部分无问题”。实验一 C语言运行环境一、目的和要求1、熟悉使用C语言运行环境。2、掌握语言程序的书写格式和语言程序的结构。3、掌握C语言上机步骤,了解运行一个C程序的方法。二、实验内容调试运行以下程序(调试时找出程序错误并修改,再编译、运行)1编写自己的第一个程序录入如下C源程序,文件名自定(*.c):#include int main( ) printf(This is a C Program。n);return 0;对源程

7、序进行编译、连接并运行,观察分析运行结果。2.编写程序,译密码,要求将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母,因此, “China”应译为 “Glmre”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5这5个变量的值分别为字符C,h,i,n,a,经过运算后,输出译码后的结果。3下面的程序,目的是想计算由键盘输入的任意两个整数的积。记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论对策成功或失败的原因#include “stdio.h”int prodct(int a ,int b )int c ; c=a*b;return c;in

8、t 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;i100;i+) sum=sum+i;printf(sum=%dn,sum);return 0; 三、分析与讨论、记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论对策成功或

9、失败的原因。、总结程序的结构和书写规则。实验二 顺序程序设计一、实验目的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”,编写程序

10、,实现下面的输出格式和结果(空格用表示):a=5,b=7,a-b=-2,a/b= 71%c1=aor97(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

11、,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)。编写程序,输入孩子年龄,输出年龄及进入的班号。如:输入:

12、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.上机

13、结束后,应整理出实验报告,实验报告的内容应包括:题目、程序清单、运行结果及对运行情况的分析。实验四循环结构程序设计一、实验目的1、掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。2、了解条件型循环结构的基本测试方法。3、掌握如何正确地控制计数型循环结构的次数。4、了解在循环结构中,提高程序效率的方法。5、进一步学习调试程序。二、实验内容(1)编程求解:鸡兔同笼,有三十五只头,九十四只足,求鸡和兔各有多少?(提示:用穷举法求解。即鸡或免的个数x从0至35循环试探,如果满足共有94只足的已知条件,那么此时的x就是一个解。问题:循环条件可以进一步简化以提高程序效率吗?

14、) (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语言中,

15、某个表达式为“真”即值为1,为“假”即值为0;本题中要认真考虑4位同学的话应如何用关系表达式表示?)选作题:求和sum=1!+2!+3!+4!+20!(考虑应该用何种类型的量存放结果sum. )三、实验要求1. 复习循环结构程序设计。2上机前准备好上机所需的程序,上机时输入和调试自己所编写的程序。3.上机结束后,应整理出实验报告,实验报告的内容应包括:题目、程序清单、运行结果及对运行情况的分析。实验5 数组实验目的和要求:了解数组与数学矩阵的关系掌握数组的定义、引用和初始化理解二维数组数据的存储顺序理解并掌握冒泡排序法和选择排序法掌握字符数组与字符串的定义和引用了解字符串处理函数的用法实验预习

16、和准备:填空题:(1)若有定义int a35;,则排序在数组中第9个元素是 。(2)已知int x10=0,2,4;,则数组x在内存中所占的字节数是(turbo c) 、(VC + 6.0) 。(3)已知float s10;,计算s在内存中占用多少个内存单元的表达式是 。(4)写出一个名为s的单精度实型一维数组,长度是6,所有元素初值均为0,其数组定义语句是 。(5)int s4=1,2,3,4;则ss0+2*s2-s3的值是 。(6)strlen(“studentt101n”)的值是 。排序算法:熟悉冒泡排序法和选择排序法比较冒泡排序法和选择排序法的差异实验内容和步骤:从键盘输入10个整数,

17、统计其中正数、零和负数的个数并输出。#include 1:int main()2: int a10,i,s1,s2,s3;3: s1=s2=s3=0;4: for(i=0;i10;i+)5: scanf(“%d”, );6: for(i=0;i0) s1+;8: else if(ai=0) s2+;9: else ;10: for(i=0;i10;i+)11: printf(“%3d”, );12: printf(“n”);13: printf(“positive=%3d,zero=%3d,negative=%3d”,s1,s2,s3);14:return 0;回答下面的问题:完成程序中的空白

18、处。 第10行,for循环输出时,共输出多少个数?如果将10改为20,将会出现什么结果?上机测试并解释原因。程序中所定义的数组a10在内存中占多少个字节?在程序中利用sizeof计算a10在内存中占多少个字节。数组元素在内存中是顺序存放的?还是随机存放的?分析并测试下面程序的运行结果。#include 1:int main()2: 3: int a33=1,2,3,4,5,6,i,j,s=0;4: for(i=1;i3;i+)5: for(j=0;j=i;j+)6: s+=aij;7: printf(“%dn”,s);8: return 0; 回答下面的问题: (1)第3行,定义数组a的所有元

19、素的初值是 。 (2)第46行,参与s相加的元素有 。(3)程序运行的结果是 。3、不用字符串处理函数将两个字符串连接,即将字符串b连到字符串a的后面,变成字符串c. 1: #include 2:int main()3: char a80,b80,c160;4: int i=0,j=0,k=0;5: scanf(“%s”,a);6: scanf(“%s”,b);7: while(ai!=0)8: ck+=ai+;9: while(bj!=0)10: ck+=bj+;11: ck=0;12: printf(“%sn%sn%sn”,a,b,c);13: return 0; 回答下面的问题:第5行,

20、输入一串字符放入数组a中时,为什么没有对a加&操作?第78行,此句的作用是什么?第8行,如果将两个自加运算用一般加法来等价,请写出此语句的等价表达式。第78行,本循环结束时,是否将字符串a中的结束符也复制给了字符串c?第910行,此语句是将字符串b复制到c数组的开始处吗?第11行,此句的作用是什么?是否可以省略此行?为什么?根据此程序思路,如果将字符串s2连接到字符串s1的后面,且不需要第三个字符串变量作中间过渡,如何实现?编程实现并测试。4、将一个数组从大到小排序,再把一个从键盘输入的数插入数组中,使其仍按从大到小的顺序排列。#include 1:int main()2:3: int i,j

21、,p,q,s,n,a11=120,-3,0,28,64,68,87,105,162,-8;4: for(i=0;i10;i+)5: 6: p=i;q=ai;7: for(j=i+1;j10;j+)8: if(qaj)9: p=j;q=ai;10: if(p!=i)11: 12: s=ai;13: ai=ap;14: ap=s;15: 16: printf(“%d ”,ai);17: 18: printf(“please input new data:n”);19: scanf(“%d”,&n);20: for(i=0;iai)22: 23: for(s=9;s=i;s-)24: as+1=as

22、;25: break;26: 27: ai=n;28: for(i=0;i10;i+)29: printf(“%d ”,ai);30: printf(“n”);31: return 0;回答下面的问题:(1)在上述程序代码中,找出将数组a进行排序的代码段。(2)第2026行的作用是什么?请加以解释。(3)将一个新的元素插入到一个数组中间时,其后面的元素应该怎样移动?5、编写程序,要求在无序数组中查找给定值首次出现的位置。例如,数组为:a10=10 1 20 39 9 4 12 43 33 4,要查找的数:4,输出:其位置:5,若在数组中没找到该数,则输出:4在该数组中不存在。提示:从第0个元素

23、到最后一个元素依次与被找元素比较,相等则停止查找。循环结束条件: (已经找到)|所有的数组元素都已经找遍6、删除一个字符串中指定的字符。要求:从键盘输入一个字符串,以及对待删除的字符,处理后输出。同一字母的大、小写按不同字符处理。如果输入的字符在字符串中不存在,则字符串照原样输出。例如:输入字符串“I am a teacher,you are a student”,输入待删除的字符e,处理后输出“I am a tachr,you ar a studnt”。实验6 函数实验目的与要求:了解函数的类型掌握C函数的定义与一般调用方法理解并掌握函数嵌套调用方法理解并掌握函数参数传递的方法理解地址传递的

24、含义了解函数值的返回方法理解递归调用的两个阶段实验预习与准备:1、从下列10个有关函数说法中,选择5个正确答案 。 (1)建立函数有助于程序实现模块化,也可以提高程序的执行效率。 (2)在C语言中,实参和与其对应的形参共占用一个存储单元。 (3)用户若需调用标准库函数,调用前必须包含其相应的头文件。 (4)在函数内定义的变量,如无特殊说明,只在此函数内部有效。因此,不同函数中变量的名字可以相同,互不干扰。 (5)C语言中,实参是全局变量,形参是局部变量。 (6)若调用一个函数,且此函数中没有return语句,则该函数返回一个不确定的值。 (7)C语言中,实参可以是常量、变量,但不可以是表达式。

25、 (8)C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是单向值传递。 (9)函数调用可以出现在表达式中,但不能单独作为一条语句或其他函数的实参。(10)在C语言程序中,函数不可以嵌套定义,但函数可以嵌套调用。2、填空题 在C语言中,若对函数类型无说明,则函数的默认类型是 。在一个源程序中,main函数的位置 。若用数组名作为函数调用的实参,传递给形参的是 。实验内容和步骤:1、分析下面程序的运行结果。 #include 1:void f(int x,int y,int z)2: 3: x=456;y=567;z=678;4:5:int main() 6:int x=10,y=20

26、,z=30;7: f(x,y,z);8: printf(%d,%d,%d,x,y,z);9: return 0;程序运行的结果是: 。2、分析下面的程序并回答问题。 #include 1:int fun(int i) 2: 3: i=i*i*2; 4: return(i); 5: 6: int main() 7: int i; 8: for(i=1;i=5;i+) 9: printf(%d,%dn,fun(i),i); 10:回答下面的问题:(1)第3行,在fun函数中,i没有初值,能否直接进行运算?说明理由。(2)第1行和第7行都定义了变量i,会不会出现重复定义现象?说明理由。(3)写出上机

27、测试的结果。3、将输入的十进制正整数n转换为二进制数,并将转换结果输出,转换方法采用“除二取余”法。分析下面的程序,补充完整,并测试运行结果。 #include 1:void transfer(int m)2: 3: int s20,i;4: for(i=0;m!=0;i+)5: 6: si= ;7: m=m/2;8: 9: i-;10: for(;i=0;i-)11: printf(”%d”, );12: 13:int main()14:15: int n;16: scanf(”%d”,&n);17: ;18:要求运行结果:键盘输入:11输出结果:10114、编程题(1)编写一个函数squa

28、re,对一个整数返回它的平方值。(2)编写一个函数cube,对一个整数返回它的立方值。(3)用函数square和cube编写函数quartic和quintic,它们分别返回一个整数的四次方和五次方值。(4)用上述函数编写一个显示从120的整数幂的表的程序,程序输出的形式如下:A TABLE OF POWERSN0. Square Cube Quartic Quintic1 1 1 1 12 4 8 16 323 9 27 81 243 5、编制一个函数find(char s,char a),统计字符串s中字符变量a的值出现的次数,在主函数中输入字符串并显示统计结果。(1)find函数的类型是什

29、么类型?(2)在定义find函数时,能否将参数直接定义成find(char s,char a)?这里的s没有具体的长度,会不会错?为什么?(3)编程实现find函数。(4)在main函数中调用find函数,测试字符串“student”中t的次数。(选做题)编写程序,设计一个判别素数的函数。如果是素数,返回值1;如果不是素数,则返回值0。在主函数中调用这个判别函数,输出100以内的所有素数。输出格式如下: NO. Value 2 1 3 1 4 0 实验7 指针实验目的与要求:掌握指针变量的定义与引用掌握指针与变量、指针与数组、指针与字符串的关系掌握C集成环境中调试指针程序的方法。实验预习与准备:概念判断题( T)int a5,*p=a;指针变量p和数组名a都指向a0的首地址。( T)int i=1,*p=&i;则*(&(*p))=1。( F)可以把一个字符串赋值给一个指

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1