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

下载本文档

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

文档简介

1、C程序设计基础实验指导实验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设置系统的安装路径、包含文件路径、

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

3、口中将显示错误内容及定位错误时的语句行号,修改错误,再进行编译。 如果编译无错,按Ctrl+F9运行程序,按Alt+F5切换到用户屏,观察运行结果。 改变源程序中双引号内的字符串内容,重新编译和连接,并查看运行结果。 保存文件,查看你的工作目录下是否有该文件。编译连接的中间文件应该在Output设置的目录中。如果没有设置Output目录,中间文件应该在当前工作目录中。5 输入并运行下面一个需要在运行时输入数据的程序,程序要求从键盘输入三个浮点数,输出它们的和。#include <stdio.h>mian()float a,b,c,sum; printf(" input a

4、,b,c: ") scanf("%f %f %f",&a,&b,&c); sum=a+b+c; printf("n sum=%fn",sum); 输入该程序,然后进行编译和连接,如果出错,仔细检查并修改错误,再进行编译连接,直到没有错误为止。 按Ctrl+F9运行程序,按照屏幕提示输入a、b、c三个变量的值,变量值之间用空格分隔,输入完毕按回车键【Enter】。 查看运行结果,判断结果正确与否。 保存文件,查看你的工作目录下是否有该文件。实验2 数据类型和表达式计算【实验目的】1掌握C语言基本数据类型的概念,理解数据类型

5、与运算的关系。2熟悉简单变量的定义和赋值方法,掌握不同类型数据之间赋值的规律。3学习C语言运算符优先级和结合性的概念,掌握算术表达式的计算方法及表达式计算中的类型转换方法。4掌握数学表达式的程序表示方法。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设:

6、x=2.7,a=8,y=4.5,编程计算下面表达式的值: y+a%5*(int)(x+y)/2%44输入并运行下面程序,对照程序分析运行结果:(1) 将一个大于32767的长整型数赋给整型变量,会得到什么结果。(2) 将一个负整数赋给一个无符号的变量,会得到什么结果。(3) 将一个字符型变量赋给一个整型变量,会得到什么结果。程序如下:#include <stdio.h>main() int a,b; long d,e; unsigned f,g; char c; a=100; b=-100; c='a' d=50000; e=32767; printf("

7、%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,%dn",a,b);实验3 顺序结构程序设计【实验目的】1熟练掌握格式输入与格式输出函数的使用,理解scanf函数的工作过程。2熟练掌握赋值语句的使用方法。3进一步体会C程序的结构组成,体会主函数main的作用

8、。4使用顺序结构解决几个简单的计算问题。【实验内容】1 编写程序,使用格式输入函数,从键盘按顺序输入下列数据,再将其用合适的格式分类输出到屏幕上。注意scanf函数的格式要求。a、15、c、100、20.6、60000、3500、32768、450.34、126.34555682 编程计算半径r=2.5的圆面积、圆周长、球面积、球体积及球表面积。如果高h=4.5,计算圆柱体的表面积和体积。显示结果保留两位小数。3输入下面程序并运行#include <stdio.h>main() int a,b,c; a=getchar(); b=getchar(); c=getchar(); pr

9、intf("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 <stdio.h>main() int a,b,c,d,av; printf(" Input a,b,c,d: "); scanf(" %d,%d,%d,%d"

10、,&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

11、+5 (x<0) f(x) = x2-x+3 (0x<10) 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 - Y

12、ellow #include<stdio.h>main() 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("

13、Redn");break;case 4: printf(" Yellown");break;default: printf(" Error Inputn");运行程序,使用Turbo C中跟踪执行功能(功能键F8)查看程序执行过程。体会break语句的作用。去掉若干个break语句,观察运行结果有什么变化。并试着将程序结构改为嵌套if结构。运行并查看结果。4 scanf函数输入一个百分制成绩,输出成绩等级A、B、C、D、E,其中90100分为A,8089分为B,7079分为C,6069分为D ,60分以下分为E。要求百分制成绩用整数输入,在输入

14、前要有提示,输入后要判断成绩的合理性,对不合理的成绩,应输出出错信息。输出结果中应包括百分制和等级成绩,并要有文字说明。使用if语句和switch语句分别实现。实验5 循环结构程序设计【实验目的】1练习并掌握利用while语句、for语句、do_while语句实现循环结构的方法。2掌握循环结构和选择结构的嵌套设计方法。3掌握多重循环的设计方法,掌握控制语句break、continue、goto语句的使用方法。4调试和修改循环结构的程序。【实验内容】1编写程序,分别用while循环、for循环和do_while循环计算12+22+.+n2的值。比较三个程序在循环控制上的特点。2用迭代法求方程 x

15、3-x-1=0在x=1.5附近的根。要求:首先把方程变换为迭代公式:x=,用1.5作迭代的初值,结束条件为两次近似解之差的绝对值小于0.0001。参考程序如下:#include<stdio.h>#include<math.h>main() float x1,x=1.5; do x1=x; x=pow(x+1),1.0/3.0); while(fabs(x-x1)>=0.0001); printf("x=%6.2fn",x);3 编写程序,计算菲波那契数列第n项的值。注意数列项的数据类型,应考虑足够大项的数据表示要求。4以下程序,输出下三角形状的

16、乘法九九表。 #include <stdio.h>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;j<=i;j+) printf

17、(" %4d",i*j); /* 循环体执行一次,打印一个数据*/ printf("%c",'n'); /* 每行尾换行*/ printf("%c",'n');输入并执行该程序,观察输出结果,试着修改程序打印上三角形状的乘法九九表。实验6 模块化程序设计【实验目的】1掌握C语言中定义函数的方法2掌握函数嵌套调用和递归调用的方法。3掌握通过“值传递”调用函数的方法。4理解变量作用域和存在期的概念,掌握全局变量和局部变量,动态变量和静态变量的定义、说明和使用方法。5学习多文件程序的组织方法【实验内容】1 编

18、写程序,设计一个判别素数的函数,在主函数中输入一个整数,调用这个判别函数,并输出是否为素数的信息。参考例4.7相应程序,准备5个以上测试数据。验证程序执行结果是否正确。2编写程序,计算下面公式并输出结果。要求:(1)编写一个函数计算n!(2)编写主函数,由键盘输入n和m,调用(1)中的函数完成计算。(3)输入n和m要给出提示,并检查n和m的合理性,不合理的输入应输出错误信息,并不再进行计算。(4)运行程序并计算、。3将一个正整数n以相反的顺序输出的递归算法可以如下描述: 如果 要输出的整数只有一位则 输出该整数否则输出整数的个位数字反向输出除个位以外的全部数字结束据此算法设计的递归算法如下:v

19、oid printn(int n) if (n>=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 <stdio.h>extern void count(int); /*函数count的定义在本文件以外。main(

20、) int k; for (k=5;k<=10;k+) count(k);file2.c的内容如下:void count(int n) static int 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 N

21、ame,在输入框中输入work.prj回车。(4)编译连接,生成的执行文件应为work.exe。如果源文件中出错,编译程序会将出错文件打开。修改错误后重新进行编译。实验7 编译预处理【实验目的】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:"); scan

22、f("%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); change(c,d); printf("Now c=%f d=%fn",c,d); 输入并运行该程序,观察运行结果,体会宏定义实现的过程。比较宏调用与函数调用的区别。2 输入并运行下面的程序,体会编译程序对包含文件的处

23、理过程。(1)在当前目录中建立下面头文件head.h#define OK "passed"#define ERROR "error"int g;(2)在当前目录中建立下面程序文件#include <stdio.h>#include "head.h"main() int k=1; g=5; printf("g=%d k=%dn",g,k); printf("OK=%s ERROR=%sn",OK,ERROR);包含文件head.h 的处理:将文件内容就地展开,相当于定义了两个字符串常量

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

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

26、har 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 = 编写程序,用二维数组存储矩阵元素,从键盘输入数据,将矩阵转置后按行输出。

27、实验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编写程序,实现两个字符串拷贝

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

29、指针*/ printf("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个人的姓名、年龄和性别,然后输出。要求:分别通过结构指针和结构

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

温馨提示

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

评论

0/150

提交评论