上机实验指导 c语言程序设计.doc
上机实验指导实验一实验一 C 语言的运行环境和运行过程语言的运行环境和运行过程 一、实验实训目的及要求一、实验实训目的及要求 1、C 语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系 统。 2、了解在该系统上如何编辑、编译、连接和运行一个 C 程序。 3、通过运行简单的 C 程序,初步了解 C 源程序的特点。 二、实验内容二、实验内容 1、C 的启动以及工作环境介绍。 2、在 Visual C 环境中运行 C 语言源程序 三、实验实训指导三、实验实训指导 Visual C+提供了一个集源程序编辑、代码编译与调试于一体的开发环境,这个环境称 为集成开发环境,对于集成开发环境的熟悉程度直接影响程序设计的效率。开发环境是程 序员同 Visual C+的交互界面,通过它程序员可以访问 C 源代码编辑器、资源编辑器,使用 内部调试器,并且可以创建工程文件。Microsoft Visual C+是多个产品的集成。Visual C+从 本质上讲是一个 windows 应用程序。Visual C+有两个版本,对于每一个版本,都有对应的 文档: (1)专业版本,它包括一个更高级的优化编译器,更广泛的文档,并能设计基于 DOS 的应用程序。 (2)标准版本,其费用较低,没有那么高级的编译器,文档较少,且不能设计基于 DOS 的应用程序。 用鼠标单击“开始” 、 “程序” 、 “Microsoft Visual Studio 6.0” 、 “Microsoft Visual C+ 6.0” , 然后打开一个工程文件,就会显示如图 1.5.1 所示的窗口,图中标出了窗口中各组成部分的 名称,而且显示了已装入 Graph 工程文件的 Visual C+ 6.0 的开发环境,这是在建立了工程 文件之后的结果。 菜单栏菜单栏 1File 菜单 2Edit 菜单 3View 菜单 4Insert 菜单 5Project 菜单 6Build 菜单 7Tools 菜单 如下图如下图编辑编辑 C 源程序源程序例一个 C 源程序。 #include int add(int,int); void main() int a,b;a=5;b=7;int c=add(a,b);cout>a>>b; cin>>x>>y; cin>>c1>> cout>a>>b>>c; s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); cout>r>>h; l=2*pi*r; v=pi*r*r*h; cout>c; f=5.0/9*c+32; cout>a>>b>>c; if (a>=b) max=a; /*a>=b*/ else max=b; /*amax) max=c; /*c 是最大值*/ cout>score; if(score>100|score=90) grade='A' else if(score>=80) grade='B' else if(score>=70) grade='C' else if(score>=60) grade='D' else grade='E' cout>g; s=g/10; if(s10) cout>x; if (x>number; if (prime(number) cout>arrayij; coutv) t=u; u=v;v=t; a=u; b=v; while(r=b%a)!=0) b=a; a=r; return(a); lcd(u,v,h) int u,v,h; return(u*v/h); main() int u,v,h,l; cin>>u>>v; h=hcf(u,v); cout>str; if (strlen(str)>N) coutstri+1) t=stri; stri=stri+1; stri+1=t; 四、实验实训思考题四、实验实训思考题 编写一个程序,包括主函数和如下子函数。 (1) 输入 10 个无序的整数; (2) 用起泡方法从大到小排序; (3) 要求输入一个整数,用折半查找法找出该数,若存在,在主函数中输出其所处的 位置,否则,插入适当位置。 分析:input 函数完成 10 个整数的录入。sort 函数完成起泡法排序,search 函数完成输 入数的查找。 实验七实验七 指针指针 一、实验实训目的及要求一、实验实训目的及要求 1掌握指针变量的定义与引用。 2熟练使用函数指针、数组指针、字符串指针编写应用程序。 二、实验实训内容二、实验实训内容 1、写一函数,求一个字符串的长度。 2、编写一个函数,将数组中 n 个数按反序存放。 3、设一个函数,调用它时,每次实现不同的功能:(1)求两个数之和;(2)求两个数之 差;(3)求两个数之积。 三、实验实训指导三、实验实训指导 1、分析: (1) 本部分习题要求全部用指针完成; (2) 在 main 函数中输入字符串,并输出其长度; (3) 本题不能使用 strlen()函数; 方法说明: 在主函数中定义一个指向字符串的指针变量 pstr,并将输入的字符串的首地址赋值给 pstr,然后调用求字符串长度的函数 strlenth(char*p),得到字符串的长度。在函数 strlenth(char *p)中,判断*p 是否为 0 ,如果不为 0 ,则进行 len+的操作,直到遇到 0 为止。然后返回 len 值。 求字符串长度的函数 strlenth(char *p)算法如下: (1)定义 int len=0; (2)当*p!= 0 时,重复执行(2.1)(2.2),否则算法终止。 len=len+1 p+ (3)return(len) 2、分析: (1)在主函数中输入 10 个数,并输出排好序的数。 (2)编写函数 invert()将 10 个数按反序存放。 3、分析: (1)在主函数中输入 2 个数 a,b,并输出 a,b 的和、差和乘积。 (2)分别编写函数 add()、sub()、mul()计算两个数的和、差、积。(3) 编写函数 process(), 分别调用函数 add()、sub()、mul()。 四、实验实训思考题四、实验实训思考题 实现指针移动的几种方法。 实验八实验八 一维数组一维数组 一、实验实训目的及要求一、实验实训目的及要求 1、掌握一维数组的定义、赋值和输入输出的方法; 2、掌握字符数组的使用; 3、掌握与数组有关的算法(例如排序算法) 。 二、实验实训内容二、实验实训内容 1、在键盘上输入 N 个整数,试编制程序使该数组中的数按照从大到小的次序排列。 2、青年歌手参加歌曲大奖赛,有 10 个评委对她的进行打分,试编程求这位选手的平 均得分(去掉一个最高分和一个最低分) 。 3、输入一串字符,计算其中空格的个数。 三、实验实训指导三、实验实训指导 1、分析:C 中数组长度必须是确定大小,即指定 N 的值。排序的方法有多种,我们 取出其中两种作为参考。 方法一:起泡排序 从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则 使这两个数交换位置。第一遍的(N-1)次比 较后,最大的数已放在最后,第二遍只需考虑(N-1)个数,以此类推直到第(N-1) 遍比较后就可以完成排序。 源程序如下: #define N 10 #include“iostream.h“ main() int aN,i,j,temp; cout>ai; for(i=0;iaj+1) temp=aj; aj=aj+1; aj+1=temp; cout>ai; for(i=0;i>ai; for(i=1;iaj) min=j; temp=ai; ai=amin; amin=temp; for(i=2;i main( ) char c30; int i,sum=0; gets(c); for(i=0;imax) max= aij; r=i; c=j; cout>aij; for(i=1;i<N;i+) for(j=1;j<N;j+) cout<<aij<<endl; for(i=1;i<N;i+) for(j=1;j<=i;j+) sum=sum+aij; cout<<“sum=“<<sum; 四、实验实训思考题四、实验实训思考题 求一个 3×3 矩阵对角线元素之和。 实验十实验十 结构体和共用体程序设计结构体和共用体程序设计 一、实验实训目的及要求一、实验实训目的及要求 1、掌握结构体类型和结构体变量的定义。 2、掌握结构类型变量的定义和使用; 3、掌握链表的概念,初步学会对链表进行操作; 4、掌握共用体的概念和使用。 二、实验实训内容二、实验实训内容 1、有五个学生,每个学生的数据包括学号,姓名,三门课的成绩,从键盘输入五个学 生的数据,要求打印出每个学生的平均成绩, 以及最高分的学生的数据(包括学号,姓名,三门课的成绩,平均分数)。 2、三个人围成一圈,从第一个人开始顺序报号 1,2,3。凡报到“ 3” 者退出圈子,找出 最后流在圈子中的人原来的序号。 3、建立一个链表,每个结点包括:学号,姓名,性别,年龄。输入一个年龄,如果链 表中的结点所包含的年龄等于此年龄,则将此 结点删去。 三、实验实训指导三、实验实训指导 用一个函数输入五个学生的数据;用一个函数求总平均分;用函数找出最高分学生数 据,总平均分和最高分的学生的数据都在主函 数中输出。 四、实验实训思考题四、实验实训思考题 用链表实现排序。