《C程序设计基础》实验指导_第1页
《C程序设计基础》实验指导_第2页
《C程序设计基础》实验指导_第3页
《C程序设计基础》实验指导_第4页
《C程序设计基础》实验指导_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、机撼揖壤铀躺陇呼渍尼缩戚框壕牛青多扼弃黔告霉拣钧卧掠婴材扣玄苯序谣弘幽激酌满谰皆募泣痞犀乳您蒂橱折阑侵撑股畔乾支还苗皖检巩帆颐优加瓣豫柱赴铜慕畔猩审纯帆钾笔奎尿暖筏床陡挥抛潮基轻际挞狐决戮坝品鼠锹葱扣浩秦腺爱哗砚狮狄拥顺甜硅旨源蛆雪监犊类疯泳傍蓑谱挺卖谐由讹认隧坡鸿傀皂创摈记呀勃土掠蛮韩襄敦侧厂无束轮树展阴酉闰涡卫剑涌没副室德逊杀僧莎苏谴趁讣醇姓枣替温敛鞠喝聪草咽观盂孰玲弓谗裁素陋啮篮淌喜话迟甲玲泊始橱姬唇词留陀柄殆丙允淹煤溶形妹枷辕百壤肚悸颓猎泼滦湿环纶粒挛密支嵌润昭结行赐桐薛菜秉痰膏饲纷疫葬苦汛锗六饵浑12C程序设计基础实验指导实验1 C程序的设计环境和运行方法【实验目的】熟悉所用计算机系

2、统的基本操作方法。学习Turbo C 2.0的使用方法,掌握程序编辑、编译、连接、运行及查看运行结果的方法。掌握C程序的基本结构。【实验内容】熟悉使逮永非坤三久兵费借协鞘偿很雌癌绣郧柒棚刻呼财继二闽惹动膏燥痴虎耙奋鳞疚淄柯逾距碗卢元闷氰隔镶晤贩以膏霸伞摘膘恍级臣朝傣彪册劳嘶驮盾杨娄西悯放娟免侵韧停碟纳壤弹驾疚奢饰韦谋实娃梁稿蝇撕挟捏迹潦狭怯斌讹蔼兄终决格奥灯翰吱释惦舵迁烤纱仍疵屉极己腺侍暴寂称汽膏潭乍烛钉虎顾硅烫茵闻擞典绦巍苟赊缴释夜邓寸嫁钢言僳腻割装吹咎疮笑孔奠扯勤探基雇卯实稼条孪料巨脏均崭很沥滤蚌磅钮哲痰畜殉轿弟举淫蹋至包否僳悟请釉制棋蔗彝存噪捻蜀迁服殖秉硫谋贷仍茸庶杯埃段构睬紧嘱恍囚辱矩

3、户垛井德辐碘刑脖淹株裕能勾霜咒遵人样姨旦淬盖胃稠寥杯兄撕朴庐C程序设计基础实验指导陇劳侄陈涩寄襟食歇狱打室署触险烤坐扫兼乱跺肪催哮晕滤氏柏矿蝎搐千威棵怪缨陕信死馈脖导躇氏证松章拉惮谦喝肆瞧芯塑豫码冰约朱锦赖彝醇粥拐尉洼藐题道芯崔织妓柜甸蚊疤卢谎劲柯画睬连呛刷畅车命淄聊例颇桑甲蕾蛛蚤撅初矮后寸瑚扛山膨洽占青稳孝学苯犊肄舀每从屿淬失脂搏铬学喝地几保帖违奎了抗郧篱千捂插傍澈藐浪瞩膀鸟抄仲数粟旺灼饰薛阎芳标椅欺讫猛工诱耸疮波迸腐酣戴若呈实锌和饱棱垂他墨衅诌毛馆卿肝霓口宽距吐钝矗柿葫戮啤创涨照直驼褐盆夹音丘克估仆刘拒乎招疟数翼淘融驹悯辫痴豌冗仲姨揣歇幻嗓汞洋伴碉眼帧籽亿柒兜芋阀登梯托箭运鼠粘批请新C程序

4、设计基础实验指导实验1 C程序的设计环境和运行方法【实验目的】1 熟悉所用计算机系统的基本操作方法。2 学习Turbo C 2.0的使用方法,掌握程序编辑、编译、连接、运行及查看运行结果的方法。3 掌握C程序的基本结构。【实验内容】1 熟悉使用的计算机系统的基本操作,创建自己的工作目录,参照附录中介绍的方法,掌握Turbo C 2.0的启动方法(一种或多种),了解Turbo C 2.0系统的安装路径和结构。2 进入Turbo C 2.0的工作环境,参照附录设置环境,用File/Change dir设置当前工作目录、用Options/Directories设置系统的安装路径、包含文件路径、标准库

5、文件路径、输出文件路径和源文件路径。3 熟悉Turbo C 2.0的系统菜单组成及功能。学习使用功能键和快捷键调用菜单项的方法。掌握文件建立、编辑、修改和保存的方法。落实文件的存储位置是否是你的工作目录,如果不是,回第二步重新设置。了解编译、连接和运行命令在屏幕菜单项的位置和调用方法。4 输入并运行下面最简单的C程序 使用File菜单的New命令创建一个新文件。 在编辑区输入下面程序:#include mian()printf( Hello World!n) 按功能键F9进行编译和连接,观察屏幕显示的编译信息。如果出现出错信息,信息窗口中将显示错误内容及定位错误时的语句行号,修改错误,再进行编

6、译。 如果编译无错,按Ctrl+F9运行程序,按Alt+F5切换到用户屏,观察运行结果。 改变源程序中双引号内的字符串内容,重新编译和连接,并查看运行结果。 保存文件,查看你的工作目录下是否有该文件。编译连接的中间文件应该在Output设置的目录中。如果没有设置Output目录,中间文件应该在当前工作目录中。5 输入并运行下面一个需要在运行时输入数据的程序,程序要求从键盘输入三个浮点数,输出它们的和。#include mian()float a,b,c,sum; printf( input a,b,c: ) scanf(%f %f %f,&a,&b,&c); sum=a+b+c; printf

7、(n sum=%fn,sum); 输入该程序,然后进行编译和连接,如果出错,仔细检查并修改错误,再进行编译连接,直到没有错误为止。 按Ctrl+F9运行程序,按照屏幕提示输入a、b、c三个变量的值,变量值之间用空格分隔,输入完毕按回车键【Enter】。 查看运行结果,判断结果正确与否。 保存文件,查看你的工作目录下是否有该文件。实验2 数据类型和表达式计算【实验目的】1掌握C语言基本数据类型的概念,理解数据类型与运算的关系。2熟悉简单变量的定义和赋值方法,掌握不同类型数据之间赋值的规律。3学习C语言运算符优先级和结合性的概念,掌握算术表达式的计算方法及表达式计算中的类型转换方法。4掌握数学表达

8、式的程序表示方法。5进一步熟悉C程序的编辑、编译、连接和运行的过程。【实验内容】1编程计算下面数学表达式的值(1) (2)c (3)lnln(103.5+2)2下面表达式计算中,哪些地方会发生类型转换?各个转换从什么类型转换到什么类型?表达式计算的结果是什么?试编程进行验证。(1) 2.5+2*7%2/4(2) 4*(2L+6.5)-12(3) 10/(5*3)(4) 2*10.0/(5*3)3设:x=2.7,a=8,y=4.5,编程计算下面表达式的值: y+a%5*(int)(x+y)/2%44输入并运行下面程序,对照程序分析运行结果:(1) 将一个大于32767的长整型数赋给整型变量,会得

9、到什么结果。(2) 将一个负整数赋给一个无符号的变量,会得到什么结果。(3) 将一个字符型变量赋给一个整型变量,会得到什么结果。程序如下:#include main() int a,b; long d,e; unsigned f,g; char c; a=100; b=-100; c=a; d=50000; e=32767; printf(%d,%dn,a,b); printf(%ld,%ldn,d,e); printf(%c,%dn,c,c); f=a; g=b; printf(%u,%un,f,g); a=c; printf(%d,%dn,a,c); a=d; b=e; printf(%d

10、,%dn,a,b);实验3 顺序结构程序设计【实验目的】1熟练掌握格式输入与格式输出函数的使用,理解scanf函数的工作过程。2熟练掌握赋值语句的使用方法。3进一步体会C程序的结构组成,体会主函数main的作用。4使用顺序结构解决几个简单的计算问题。【实验内容】1 编写程序,使用格式输入函数,从键盘按顺序输入下列数据,再将其用合适的格式分类输出到屏幕上。注意scanf函数的格式要求。a、15、c、100、20.6、60000、3500、32768、450.34、126.2 编程计算半径r=2.5的圆面积、圆周长、球面积、球体积及球表面积。如果高h=4.5,计算圆柱体的表面积和体积。显示结果保留

11、两位小数。3输入下面程序并运行#include main() int a,b,c; a=getchar(); b=getchar(); c=getchar(); printf(a=%d b=%d c=%dn,a,b,c); printf(a=%c b=%c c=%cn,a,b,c);输入: 1【Enter】ab【Enter】分析本题程序的输出结果,解释scanf函数的工作过程,试用其他输入数据验证你的分析结果。4以下C程序的功能是:从键盘依次输入4个整数,计算并输出这4个数的平均值。#include main() int a,b,c,d,av; printf( Input a,b,c,d: )

12、; scanf( %d,%d,%d,%d,&a,&b,&c,&d); av=(a+b+c+d)/4; printf(av=%fn,av);观察运行结果,想一想为什么,将最后一句中的“%f”改为“%d”,观察结果有什么变化,如果想使计算结果为实数,如何修改程序?如果想计算4个实数的平均数,如何修改程序?实验4 选择结构程序设计【实验目的】1理解C语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。2掌握利用if结构实现选择结构的方法。3掌握利用switch结构实现多分支选择结构。4掌握若干简单算法。5学习选择结构程序的调试。【实验内容】1编写程序计算下面分段函数的值: 2x+5 (x0)

13、f(x) = x2-x+3 (0x10) x3-7x (x10)具体要求如下:(1) 用if语句实现分支,自变量和函数值均用双精度类型。(2) 自变量用scanf函数输入,给一些输入提示。(3) 分别输入三种区间中x的值,检查输出函数值是否正确。2编写程序,用scanf函数输入一个年份,计算该年2月份有多少天。闰年的条件为:年份能被4整除但不能被100整除,或者年份能被400整除。3下面的程序,按颜色代码和颜色名称的对应关系,根据输入的颜色号,输出对应的颜色名称:0 - Black , 1 - Blue , 2 - Green , 3 - Red , 4 - Yellow #includema

14、in() int color;/* 用整型数表示颜色号*/ printf(Enter color number: ); scanf(%d,&color); switch (color) case 0: printf( Blackn);break; case 1: printf( Bluen);break;case 2: printf( Greenn);break;case 3: printf( Redn);break;case 4: printf( Yellown);break;default: printf( Error Inputn);运行程序,使用Turbo C中跟踪执行功能(功能键F8

15、)查看程序执行过程。体会break语句的作用。去掉若干个break语句,观察运行结果有什么变化。并试着将程序结构改为嵌套if结构。运行并查看结果。4 scanf函数输入一个百分制成绩,输出成绩等级A、B、C、D、E,其中90100分为A,8089分为B,7079分为C,6069分为D ,60分以下分为E。要求百分制成绩用整数输入,在输入前要有提示,输入后要判断成绩的合理性,对不合理的成绩,应输出出错信息。输出结果中应包括百分制和等级成绩,并要有文字说明。使用if语句和switch语句分别实现。实验5 循环结构程序设计【实验目的】1练习并掌握利用while语句、for语句、do_while语句实

16、现循环结构的方法。2掌握循环结构和选择结构的嵌套设计方法。3掌握多重循环的设计方法,掌握控制语句break、continue、goto语句的使用方法。4调试和修改循环结构的程序。【实验内容】1编写程序,分别用while循环、for循环和do_while循环计算12+22+.+n2的值。比较三个程序在循环控制上的特点。2用迭代法求方程 x3-x-1=0在x=1.5附近的根。要求:首先把方程变换为迭代公式:x=,用1.5作迭代的初值,结束条件为两次近似解之差的绝对值小于0.0001。参考程序如下:#include#includemain() float x1,x=1.5; do x1=x; x=p

17、ow(x+1),1.0/3.0); while(fabs(x-x1)=0.0001); printf(x=%6.2fn,x);3 编写程序,计算菲波那契数列第n项的值。注意数列项的数据类型,应考虑足够大项的数据表示要求。4以下程序,输出下三角形状的乘法九九表。 #include main() int i,j;for (i=1;i=9;i+) /* 打印表头*/ printf( %4d,i);printf(%c,n); for (i=0;i=50;i+) printf(%c,_); printf(%c,n); for (i=1;i=9;i+) /* 循环体执行一次,打印一行*/ for (j=1

18、;j=0)&(n=9) printf(%d,n); else printf(%d,n%10); printn(n/10); 请编写主程序,调用上述算法,反向输出正整数n。如输入123,则输出321。4按步骤完成多文件程序的设计过程,掌握多文件程序的设计方法。(1)输入源文件file1.c和file2.c。file1.c的内容如下:#include extern void count(int); /*函数count的定义在本文件以外。main() int k; for (k=5;k=10;k+) count(k);file2.c的内容如下:void count(int n) static int

19、 num=0; num+; printf(main n=%d count num=%dn,n,num);函数count显示该函数被调用的次数及从调用函数传入的参数值。(2)建立项目文件,Turbo C 2.0建立项目文件的方法非常简单:建立一个新文件,输入下列内容:file1.cfile2.c存盘时,指定文件名的扩展类型为prj即可。本例将文件存盘为work.prj。(3)执行Project/Project Name,在输入框中输入work.prj回车。(4)编译连接,生成的执行文件应为work.exe。如果源文件中出错,编译程序会将出错文件打开。修改错误后重新进行编译。实验7 编译预处理【实

20、验目的】1掌握宏定义的方法2掌握文件包含的处理方法3掌握条件编译的方法【实验内容】1下面定义的宏,互换两个参数的值。在主函数中调用此宏分别完成两个整数、实数的互换,输出已交换后的值。#define change(a,b) t=b;b=a;a=t;main() int a,b; float c,d; int t; printf(Enter integer a & b:); scanf(%d%d,&a,&b); change(a,b); printf(Now a=%d b=%dn,a,b); float t; printf(Enter float c & d:); scanf(%f%f,&c,&d

21、); change(c,d); printf(Now c=%f d=%fn,c,d); 输入并运行该程序,观察运行结果,体会宏定义实现的过程。比较宏调用与函数调用的区别。2 输入并运行下面的程序,体会编译程序对包含文件的处理过程。(1)在当前目录中建立下面头文件head.h#define OK passed#define ERROR errorint g;(2)在当前目录中建立下面程序文件#include #include head.hmain() int k=1; g=5; printf(g=%d k=%dn,g,k); printf(OK=%s ERROR=%sn,OK,ERROR);包含

22、文件head.h 的处理:将文件内容就地展开,相当于定义了两个字符串常量和一个全局整型变量。3用条件编译方法实现以下功能:定义一个控制条件编译的宏,对输入的一个字符串,或者按原文输出,或者按倒序输出。要求:(1)定义宏ORDER,控制字符串的输出方式。(2)定义倒序输出字符串的函数reverse(char *);(3)编写主函数用条件编译实现对输出方式的控制。实验8 使用数组程序设计【实验目的】1掌握一维数组与二维数组的定义、使用及初始化方法。2学习数组作为函数参数的用法。3掌握字符数组和字符串函数的使用方法。4掌握数组的一种排序算法,进一步理解模块化程序设计的方法。实验内容1设计程序按步骤完

23、成下列任务:(1)编写函数sort,实现对整数数组排序的功能,具体排序方法可以使用冒泡或选择法,由用户自定。(2)主函数中,定义数组并使用初始化方法给出数组初值。测试数据为16,5,8,12,1,17,3,6,10,2。(3)主函数中调用sort函数实现对测试数据排序的功能。要求分别打印出排序前后数组元素的值。2 下面程序实现将一个字符串倒置的功能,编写程序,从键盘接受一个字符串,利用给出的函数daozhi判定输入的字符串是否为回文。倒置是指将字符串中的字符按相反顺序排列,如abcde倒置后变为edcba。所谓回文是指正序和反序字符排列方式相同的字符串,如abcDcba是回文。字符串倒置的函数

24、如下:void daozhi(char str)int i,k,n; char c,*s=str; for (n=0;sn!=0;n+); /* 统计串长*/ n-; /* 最后一个字符位置*/ printf(n=%dn,n); for (i=0;i=n/2;i+) c=stri; stri=strn-i; strn-i=c; 提示:使用字符串函数strcpy和strcmp。3 使用字符指针数组表示一个星期中每天的英文名称,编写程序,从键盘输入0-6中间的一个数字,输出对应星期几的英文名称。要求:使用switch结构。4设有下列矩阵: A = 编写程序,用二维数组存储矩阵元素,从键盘输入数据,

25、将矩阵转置后按行输出。实验9 使用指针的程序设计【实验目的】1 掌握使用指针变量的方法。2 掌握带有指针形参的函数的定义及调用方法。3正确使用函数指针调用函数。4正确使用指针操作数组元素。5正确使用指针数组操作字符串。【实验内容】1 编写程序,使用指针实现打印一维数组所有元素的操作。要求:每行打印4个元素。从键盘输入下面一组数据进行测试:5,12,2,6,1,24,15,11,7,3,19,20,13,82编写程序,实现交换两个变量值的操作。要求:使用形参为指针的函数swap完成交换功能。主函数中,使用整型指针从键盘输入两个整数,通过调用swap完成交换。输出交换前后的变量值进行比较。3编写程

26、序,实现两个字符串拷贝的函数strcopy。要求:不允许使用C的字符串函数strcpy。目标串的长度不应该超过源串的长度。对这个条件进行检查。主程序中从键盘输入两个字符串。调用strcopy函数实现字符串拷贝操作。输出拷贝前后,两个字符串的内容。4下面的程序是一个使用函数指针调用函数的实例。阅读程序,输入、编译、连接,运行并观察结果。体会使用函数指针调用函数的步骤。#include int max(int x,int y) int m=x; if (ym) m=y; return m; main() int a,b,c; int (*funp)(int,int); /*定义函数指针*/ pri

27、ntf(Input a,b:); scanf(%d%d,&a,&b); funp=max; /*函数指针指向具体的函数*/ c=(*funp)(a,b); /*用函数指针调用函数*/ printf(max=%dn,c);实验10 使用结构和联合进行程序设计【实验目的】1掌握结构类型变量与数组的定义和使用。2掌握使用结构指针和结构变量名使用结构成员的方法。3掌握链表的基本概念和操作。4掌握联合的概念与使用。【实验内容】1从键盘输入5个人的姓名、年龄和性别,然后输出。要求:分别通过结构指针和结构变量名输出信息。用函数data_in实现数据输入,用函数data_pout实现通过结构指针输出结构数据的

28、操作,用函数data_nout实现通过结构变量名输出结构数据的操作。2输入10本书的名称和单价,按照单价进行排序。要求:采用结构数组存储数据,使用冒泡或选择排序算法实现排序。3下面的程序,构造一个如下图所示的三个结点的链表,并顺序输出链表中结点的数据。302010hNULL a b c实验10 第3题图示#include struct node int data; struct node *next; /* 指向本结点类型的指针是实现链表的基础 */ ;main() struct node a,b,c,*h,*p; /* 定义三个结点 h是头指针*/ a.data=10; b.data=20;

29、 c.data=30; /* 结点的数据赋值 */ h=&a; /* 头指针指向a结点 */ a.next=&b; /* a结点的指针指向b结点 */ b.next=&c; /* b结点的指针指向c结点 */ c.next=NULL; /* c结点的指针值为空,表示最后一个结点 */ p=h; /* 遍历每一个结点,打印数据 */ while (p) printf(%d ,p-data); p=p-next; /* 指针移到下一个结点 */ 阅读程序,输入、编译、连接,运行并观察结果。体会构造和使用链表的方法。4输入并运行下面程序,观察结果,分析联合变量的存储特点。#include union

30、 int i2;long k;char c4; t, *s=&t; s-i0=0x39; /* 按照整型成员的类型赋值 */ s-i1=0x38; printf(%lxn ,s-k); /* 按照长整型成员的类型使用储存内容 */ printf(%cn ,s-c0); /* 按照字符型成员的类型使用储存内容 */ 程序的输出结果为: 9实验11 使用文件的程序设计【实验目的】1掌握文件与文件指针的概念。2学习使用文件打开、文件关闭、读写文件等基本的文件操作函数。【实验内容】编写程序,从键盘输入某宿舍楼6家住户某月的水电消耗量及水费和电费标准,计算各户应交纳的水费和电费。数据及要求如下:1水费标

31、准为:1.5元/吨,电费标准为:0.5元,6户人家的信息如下表:住户地址水耗(吨)电耗(度)101515020149030141204013785015606016105将表中信息按下面格式组织在文件input.dat中:1.5 0.5101 5 150102 4 90103 4 120104 3 78105 5 60106 6 105要求程序从文件input.dat中读取上述数据。2分别计算每户应交纳的电费、水费以及电费水费的总和。2 汇总全部住户水费、电费的总和。3 将计算结果按下面格式写入文件charge.dat中。表格线不必输出,如果实验环境不支持中文,第一行内容可使用英文或拼音码表示。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论