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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C语言实验指导书.docx

1、C语言实验指导书C语言程序设计实验指导书沈岚岚 吕元长 编写桂林电子科技大学信息科技学院2012.03前言 上机实验的目的和要求一 上机实验的目的上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编程序正确与否。学习程序语言,上机实验的目的如下:1 加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,通过多次上机,就能自然、熟练地掌握语法规定。2 了解和熟悉C语言程序开发环境。熟悉一两种环境(计算机系统的软件和硬件条件),再遇到其他的系统时便会触类旁通,很快学会。3 学会上机调试程序,也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能够正确

2、地运行。要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,而且要求自己动手实践能力强。4 在做实验时千万不要在程序通过后就认为万事大吉,完成任务了,应当在通过的程序上做一些调试和修改,看看会得到什么结果。多动脑筋思考,将会对你有很大帮助。二 上机实验前的准备工作1 了解所用的计算机系统的性能和使用方法;2 复习和掌握与本实验有关的教学内容;3 准备好上机所用的程序,切忌自己不思考、不编制程序或抄袭别人的程序;4 准备好调试和运行时所需的数据。三 上机实验的步骤1 调出C语言编译系统,进入C语言工作环境;2 输入自己编制好的程序;3 检查输入是否有错,及时更正;4 进行编译和连接;5

3、 运行程序,分析结果。四、实验结束,整理实验报告实验报告应包括以下内容:1 上机题目;2 程序清单;3 运行结果;4 对结果的分析和本次获得的经验和体会。实验一 C语言程序初步数据类型、运算符和表达式一 实验目的1 掌握语言程序的书写格式和语言程序的结构,初步了解C源程序的特点。2 掌握C语言上机步骤,了解如何编辑、编译、调试和运行一个C程序的方法。3 掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对他们赋值的方法。4掌握不同的类型数据之间赋值的规律。二 实验内容1 输入并运行下面的程序,运行后记录并分析结果。#include /* 第1行 */main() char c1

4、,c2; /* 第3行 */ c1=97;c2=98; /* 第4行 */ printf (%c %cn,c1,c2); /* 第5行 */在此基础上: 在程序最后增加一个语句,再运行,并分析结果。printf (%d %dn,c1,c2); /* 第6行 */ 将第3行作如下修改后运行程序,并分析结果。int c1,c2; /* 第3行 */ 在的基础上将第4行如下修改后运行程序,并分析结果。c1=305;c2=340; /* 第4行 */2 输入并运行下面的程序,运行后记录并分析结果。#include main() printf(123456789012345n); printf( ab

5、ct der ftgn); printf( htibbj kn); printf(abct101dex62Qbgn);3 分析下面的程序,写出应得结果。#include main() char c1=a,c2=b,c3=c,c4=101,c5=116; printf(a%c b%ctc%ctabcn,c1,c2,c3); printf(ttb%c%cn,c4,c5);然后上机输入程序并运行,记录输出结果,并与分析的结果作对照。三 思考题1 总结运行C程序的一般步骤。2 编写一个C程序,输入a、b、c三个数,输出其中最大者;如果求四个数中的最大者,则程序该如何修改。四 注意事项当程序在编译时发现

6、很多错误,此时应从上到下逐一改正;或改一个错误,就重新再编译,因为有时一个错误会引起很多错误信息。实验二 顺序结构与输入/输出方法一 实验目的1 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自增减运算符的使用。2 掌握C语言中赋值语句的使用。3 掌握C语言中各种数据的输入/输出方法,能正确使用基本格式符。二 实验内容1 输入下面的程序:#include main() int i,j,m,n; i=8;j=10; printf(%d,%d,%d,%dn,i,j,m,n); /* 第5行 */ m=+i; n=j+; /* 第6行 */ printf(%d,%d,%d,%dn,i

7、,j,m,n); /* 第7行 */运行程序,分析第5行和第7行输出的不同。 将第6行按如下修改以后再运行,分析第5行和第7行输出的不同。m=i+; n=+j; /* 第6行 */ 在程序最后增加两行,记录并分析该行的输出。i=j=8; /* 第8行 */printf(%d,%d,%d,%dn,i,+i,j,j+); /* 第9行 */2 运行以下程序,并分析输出结果#include main() int a=-2; long b; float c; b=20000+20000; c=1.23e-1; printf(a=%d,%3d,%-3d,b=%Ldn,a,a,a,b); printf(a

8、=%o,%x,%un,a,a,a); printf(d=%f,%8.2f,%.2fn,c,c,c); printf(d=%e,%8.2e,%gn,c,c,c); printf(%c,%s,072,China); printf(|-%5.2s|%5.2s|n,China,China);3 按格式要求输入、输出数据。#include main() int a,b; float x,y; char c1,c2; scanf(a=%d,b=%d,&a,&b); scanf(%f,%e,&x,&y); scanf(%c%c%c,&c1,&c1,&c2); /* 第8行 */ printf(a=%d,b=

9、%d,x=%f,y=%f,c1=%c,c2=%cn,a,b,x,y,c1,c2);运行该程序,按如下方式在键盘上输入数据,写出输出的结果。a=3,b=785,71.82aA【思考】程序第8行中,为什么变量c1要输入两次?4 以下程序的功能是从键盘输入一个整型数,一个实型数和一个字符型数,并把他们在屏幕上输出。完成以下填空,并把程序调通,写出当输入为45,34.5,A时程序的运行结果。#include main() int a; float b; char c; scanf(%d,%f,%c, ); printf(a= n,a); printf(b= n,b); printf(c= n,c);5

10、 指出以下程序的错误并改正,并上机把程序调通,记录输出的结果#include main() int a; scanf(%f,a); printf(a=%f, a); char c; c=A; printf(%f,c)6 编写根据圆柱体半径r,圆柱高h,求圆柱底周长l,底面积s,圆柱体积v的程序。要求用scanf输入数据,用printf输出计算结果,小数点后取3位数字。键盘输入半径r为2.14,高h为3.48,记录程序运行后的输出结果。三 思考题编写程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数和printf函数输出这两个字符。并思考以下问题: 变量c1,c2应定

11、义为字符型或整型?还是二者皆可? 要求输出c1和c2的ASCII码,应如何处理?用putchar函数还是printf函数? 整型变量和字符型变量是否在任何情况下都可以互相代替?实验三 逻辑运算和选择结构程序设计一 实验目的1 掌握C语言表示逻辑量的方法(0代表“假”,1代表“真”);2 学会正确使用逻辑运算符和逻辑表达式;3 熟练掌握if语句和switch语句。二 实验内容 1 已知三个整数a,b,c,找出最大值放在max中。#include main() 定义整数变量a,b,c,max; 键盘输入3个整数a,b,c; 在a,b中间求出较大数max(如果a=b,则max=a;否则max=b);

12、 c与max比较,如果cmax,则max=c; 输出最大数max;根据上面的算法,编写程序;若输入下列数据,分析程序的执行顺序并写出输出结果。序号输入的3个整数a、b、c输出max11,2,321,3,232,1,342,3,153,1,263,2,12 输入某学生的成绩,经处理后给出学生的等级,等级如下:90分以上(包括90):A 8090分(包括80):B 7080分(包括70):C6070分(包括60):D 60分以下:E方法一:用嵌套的if语句#include stdio.hmain() 定义整数变量:成绩score,字符型变量:等级grade; 输入学生成绩score; 如果scor

13、e100或score=90,则等级grade=A;否则 如果score=80,则等级grade=B;否则 如果score=70,则等级grade=C;否则 如果score=60,则grade=D;否则grade=E;输出成绩等级grade;输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例如此题中100分,60分,0分以及小于0和大于100的数据。如果稍不注意就会出现小的程序缺陷。方法二:用switch语句分析:switch语句是用于处理多分支的语句。注意,case后的表达式必须是一个常量表达式,所以在用switch语句之前,必须把0100之间的成绩分别化成相关的常量。所有A(除1

14、00以外)、B、C、D类的成绩的共同特点是十位数相同,此外都是E类。则由此可把score除十取整,化为相应的常数。请同学们自己根据分析写出完整的程序段,并编译、运行、查看结果。3 从键盘上输入三个实数,它们分别代表三条线段的长度,请写一个判断这三条线段所组成的三角形属于什么类型(不等边,等腰,等边或不构成三角形)的C程序;如果能构成三角形,求出三角形的面积(取小数2位)。用下面的数据运行程序,记录程序的输出结果:abc类型三角形面积1.582.371.583.214.255.162.482.482.482.359.283.83【提示】已知三角形边长a、b、c,计算三角形面积s的公式是:求平方根

15、用函数sqrt。注意,应在程序中加入文件包含命令行:#include 【算法】定义变量 a,b,c,e,(a,b,c是三角形三边长,e是组成三角形的条件),p,s(计算三角形面积用);输入三角形三边长a,b,c;判定三角形类型并输出结果;if(组成三角形的条件)if(等腰三角形) 是等腰三角形;if(等边三角形) 输出是等边三角形;else 输出是等腰三角形;else 输出是三角形;else 输出不是三角形;如果是三角形,计算并输出面积; 组成三角形的条件 a+bc & b+ca & c+ab 等腰三角形(Isosceles triangle) a= =b|b= =c|c= =a 等边三角形(

16、Equilateral triangle) a= =b & a= =c三 注意事项:1 if-else语句书写时应采用分层缩进的格式。2 switch语句的句法格式。实验四 循环结构程序设计一 目的和要求1 掌握在设计条件型循环结构时,如何正确地设定循环条件,以及如何正确地控制计数型循环结构的次数。2 熟悉用while语句,do-while语句和for语句实现循环的方法。3 掌握在程序设计中用循环的方法实现各种算法(如穷举、选代、递推等)。4 掌握循环结构的嵌套。二 实验内容1 分析下面的程序的作用。#include main() float e=1.0,x=1.0,y,delta; /* d

17、elta 给定的误差 */ int i=1; printf(Iuput delta:); scanf(%f,&delta); y=1/x; while(y=delta) x=x*i; y=1/x; e=e+y; i+; printf(i=%dn,i-1); /* 第9行 */printf(Result is %fn,e); 阅读上面的程序,写出程序中e所依据的计算公式;输入delta=0.0001,记录程序输出。 说明程序第9行语句的作用。 将程序分别改成do-while、for循环结构,输入delta=0.0001运行程序,写出运行结果。2 有一数列: 编程求这个数列前n项之和(n在运行时从

18、键盘输入)。【分析】数列中各项的分子用变量a表示,分母用变量b表示第1项:分子a=2,分母b=1从第2项起:分子a等于前一项的分子与分母的和,分母b等于前一项的分子【算法】 定义变量:项数n,分子a(初值2),分母b(初值1),和s(初值0);请自己考虑变量的数据类型。 从键盘输入项数n。 循环求和 如用for循环:for(i=1;i=n;i+) /* 应增加变量i的定义 */循环体为:在s中加入当前项 s=s+a/b;求下一项t=a; /* 保存前一项的分子,应增加变量t的定义 */a=a+b; /* 后一项分子 */ b=t; /* 后一项分母 */ 输出和s。3 计算两个数的最大公约数。

19、【算法】 输入两个整数m、n,并求m除以n的余数k。 当k0,将除数n作为被除数m,余数k作为除数n,继续求m除以n的余数k;反复做第步,直到余数k为0结束循环。 结束循环后,除数n就是m与n的最大公约数。请同学们根据算法写出完整的程序,并运行程序(输入两整数m,n为360,135)。4 编写程序:输入6名学生5门课程的成绩,分别统计出每个学生5门课程的平均成绩。参考程序:#include main() int i,j,sum,score; float av; for(i=1;i=6;i+) printf(请输入第%d个学生的成绩:,i);sum=0; /* 注意本语句的位置 */for(j=

20、1;j=5;j+) scanf(%d,&score); sum+=score; av=sum/5; printf(序号:%d 平均分:%5.1fn,i,av); getch();三 注意事项1 while语句的句法格式及用法。2 for语句的正确使用方法。注意它的初始值、终止条件及步长的确定。3 当循环不能停止(出现死循环),可以用Ctrl+break中断程序的运行。实验五 数组一 实验目的1 掌握一维数组和二维数组的定义、赋值和输入输出的方法;2 掌握字符数组和字符串函数的使用;3 掌握与数组有关的算法(特别是排序算法)二 实验内容1 程序功能:输入12个整数,按每行3个数输出,最后输出它们

21、的平均值。#include #define N 12main() int i,aN,av; for(i=0;iN;i+) scanf(%d,ai); for(i=0;iN;i+) printf(%d,ai);if(i%3= =0) printf(n); for(i=0;i!=N;i+) av+=ai; printf(av=%fN,av);上面给出的程序有错误,请改正并运行,记录输出结果。【提示】请注意输入提示、变量赋初值、循环结束条件、输出格式等问题。2 选择排序(升序):最常用的排序方法除了冒泡排序外,还有选择排序。【算法】n个数的选择排序的算法: 定义变量、输入n及数组a各元素 n个数排序

22、要进行n-1遍以下是一遍排序(第i遍)的方法: 设最小数的下标k=i,则最小数为ak 从下标j=i+1的元素起,到最后一个元素(j=n-1),将aj与最小数ak比较,确定最小数的下标k 交换ai与最小数ak 输出已排序的n个数请根据上面的算法编写选择排序程序,并编辑运行、记录输入输出数据。3 编写程序,输出由1NN的整数组成的N阶方阵和它的上、下三角阵。例如,N=3时,输出:1 2 3 1 2 3 14 5 6 5 6 4 57 8 9 9 7 8 9N阶方阵 上三角阵 下三角阵【提示】N阶方阵用二维数组表示,用二重循环输出:外循环控制输出多少行,内循环输出每行中的整数。输出上、下三角阵时注意

23、内循环控制变量的取值。4 按照下面算法编一个程序,将两个字符串连接起来,不能用strcat函数。 定义整型变量i、j,字符串s1、s2 输入字符串s1、s2 当字符串s1尚未结束,改变字符串s1的下标,使之到s1结束处 当字符串s2尚未结束,将字符串s2逐个字符连接到字符串s1的后面 为字符串s1添加结束标志 输出连接后的字符串三 思考题编程将一个字符串中的字符按逆序重新存放,例如,原字符串: Computer逆序存放字符串:retupmoC四 注意事项1 在C语言中,数组元素的下标从0开始,最大下标总是比定义的数组长度少1。2 在C语言中,定义数组时,其长度必须指定且必须用常量表示。实验六

24、函数一 实验目的1 掌握定义函数的方法;2 掌握函数实参与形参的对应关系以及“值传递”的方式;3 掌握函数递归调用的方法;二 实验内容1 编写两个函数,分别求两个正整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个正整数由键盘输入。【提示】设有两个正整数m和n 实验四介绍了求最大公约数的算法,也可以用递归的方法求最大公约数。设hcf(int m,int n)是用来求m和n的最大公约数h函数,k=m%n,则: 若最大公约数为h,则最小公倍数为:m*n/h 。实验时,完成以下两个函数的定义,使之和主程序构成完整的程序,实现题目的要求。#include int hcf(int m

25、,int n) /* 求最大公约数的函数 */ int lcd(int m,int n,int h) /* 求最小公倍数的函数 */ 返回最小公倍数; main() int m,n,h,l; printf(请输入两个正整数m、n:); scanf(%d,%d,&m,&n); h=hcf(m,n); printf(%d和%d的最大公约数是:%dn,m,n,h); l=lcd(m,n,h); printf(%d和%d的最小公倍数是:%dn,m,n,l);程序调试通过后,用m=350、n=125和m=96、n=64两组数据运行程序,记录程序的输出。2 编写求n!的函数f(int n),在主函数中输入

26、两个整数m、n,然后调用函数求:【注意】函数f的类型应用long或double 。3 有一个字符串,输入一个字符,编写函数dstr将输入的指定字符从字符串中删去。#include void dstr(char str,char ch)main() char str80,ch; printf(请输入字符串:); gets(str); printf(请输入欲删除的字符:); scanf(%c,&ch); dstr(str,c); printf(删除指定字符后的结果:%sn,str);三 注意事项1 注意函数调用返回的特点:返回调用处,而后继续执行下面的语句。2 函数中无return语句时,函数的类

27、型定义为void或int,不可定义为其他。3 当被调函数定义在主调函数之后时,应在主调函数中说明被调函数,否则,调用时将出现错误。实验七 指针一 实验目的1 了解指针的概念,学会定义和使用指针变量。2 掌握指针、变量和数组的关系及使用方法。3 学会使用指向函数的指针变量。二 实验内容1 编写函数fun(float *sn,int n),其功能是:根据以下公式计算s,计算结果通过形参sn传回;n通过实参传入,n的值大于等于0。上机运行并记录输入输出(主函数已给出)。fun(float *sn,int n) 定义变量:和s,通项w,符号f,循环控制变量i; /* 其中s、f要初始化 */ 循环求累

28、加和s 改变符号; /* 由负变正或由正变负 */求通项w;累加:s+=w; 形参指针变量sn赋值; /* 通过形参sn传回累加和s */main() float s; int n; printf(n=); scanf(%d,&n); fun(&s,n); printf(s=%fn,s);2 想使指针变量pt1指向a和b中的大者,pt2指向小者,以下程序能否实现此目的?swap(int *p1,int *p2) int *p; p=p1;p1=p2;p2=pmain() int a,b; int *pt1,*pt2 ; scanf(%d,%d,&a,&b); pt1=&a; pt2=&b ; if(ab) swap(pt1,pt2); printf(%d,%d n,*pt1,*pt2) ;上机调试此程序。如果不能实现题目要求,指出原因并修改之。3 下面的程序用来实现将一个

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

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