C语言程序设计-实验第五次上机实验报告.doc_第1页
C语言程序设计-实验第五次上机实验报告.doc_第2页
C语言程序设计-实验第五次上机实验报告.doc_第3页
C语言程序设计-实验第五次上机实验报告.doc_第4页
C语言程序设计-实验第五次上机实验报告.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

6.第五次实验C语言程序设计 实验报告专业 计算机科学与技术 班级 信安1302班 日期 2014.5.10 成绩 实验组别 第 5 次实验 数组实验 指导教师 周时阳 学生姓名 熊雅媛 学号 U201315156 同组人姓名 实验名称 数组实验 6.1实验目的1.掌握数组的说明、初始化和使用。2.掌握一维数组作为函数参数时实参和形参的用法。3.掌握字符串处理函数的设计,包括串操作函数及数字串与数之间转换函数的实现算法。4.掌握基于分治策略的二分查找法和选择法排序算法的思想,以及相关算法的实现。6.2实验内容(一)设计一个实现多个功能(如,N个数求最大数和一元二次方程求根等等)的演示系统。源程序如下:shangji5chengxu25#include #include#includeroot.h#includemax.h#includeshuixianhaushu.h#includewanquanshu.hint main() int a,b,c; int b1100,n,i; printf(input :); scanf(%d%d%d,&a,&b,&c); root(a,b,c); printf(input n:); scanf(%d,&n); printf(input numbers:); for(i=0;in;i+) scanf(%d,&b1i); max(b1,i); return 0;void max(int a,int n)/*计算n个数的最大值*/ int max, i; max=a0; for(i=1;imax) max=ai; printf(max=%dn,max);void root(int a,int b,int c)/*求出一元二次方程的根,其中a,b,c为参数*/ int d; d=b*b-4*a*c; if(d0) printf(input error!); else if(d=0) printf(x1=x2=%.2lfn,-(1.0*b)/(2.0*a); else printf(x1=%.2lfn,(-1.0*b)+sqrt(d)/(2.0*a); printf(x2=%.2lfn,(-1.0*b)-sqrt(d)/(2.0*a); int sxh(int x)/*判断一个数是否为水仙花数,是则输出1,不是则输出0*/ int s,r,x1; x1=x; s=0; do r=x%10; s+=r*r*r; while(x/=10)!=0); if(s=x1) return (1); else return (0);int wqs(int x)/*判断一个数是否为完全数,是则输出1 不是则输出0*/ int i,s; s=0; for(i=1;i=x/2;i+) if(!(x%i) s+=i; if(s=x) return (1); else return (0);实验步骤: 步骤一:分别定义几个子函数,分别可以用来计算n个数中的最大值,计算一元二次方程的根,判断一个数是否为水仙花数和完全数(也可以选用具有其他功能的子函数),放在不同的头文件中。 步骤二:在主函数中,用include处理自己定义的头文件,以方便主函数的调用。调试及编译过程:测试数据:输入a=1,b=-2,c=2求该方程的根,输入五个数求最大值出现的不足及修改:无 实验结果:在主函数中用到了前两个子函数,输出正确的结果,用户可根据自己的需要调用其他的子函数。(二)设计一个递归程序计算组合数C(n,m)=A(n,m)/m!源程序如下:shangji5chengxu26#include int c(int m,int n);int main() int x1,x2; printf(x1=?x2=?); scanf(%d%d,&x1,&x2); printf(%d,c(x1,x2); return 0;int c(int m,int n) if(!n) return 1; else return(c(m,n-1)*(m-n+1)/n);实验步骤: 步骤一:将计算组合数的值定义为子函数,在主函数前声明该函数,在主函数中调用子函数。 步骤二:在子函数的定义中,利用递归的思想。调试及编译过程:测试数据:1,0(特殊情况)测试数据:6,3(一般情况)出现的不足及修改: 无 实验结果:出现预期的结果。(三)mccathy函数m(x)定义如下,编写一个递归程序计算给定x的m(x)的值。 源程序如下:shangji5chengxu27#include int m(int x);int main() int a; printf(a=?n); scanf(%d,&a); printf(mccathy(a)=%dn,m(a); return 0;int m(int x) if(x100) return (x-10); else return (m(m(x+11);实验步骤: 步骤一:将计算此函数的过程定义为一个子函数,子函数的返回值即为计算的结果。在主函数前声明,主函数中调用。 步骤二:主函数编写结束后,进行子函数的定义。调试及编译过程:测试数据:90(x100)出现的不足及修改:无 实验结束:出现预期的结果。(四)根据任意三角形的面积公式(海伦公式):S = p (p a )( p-b)( p-c), 其中,p=(a+b+c)/2, a.b.c为三角形三边,使用宏计算计算任意三角形的面积。源程序如下:shangji5chengxu28#include #include #define p(a,b,c) (a)+(b)+(c)/2.0)#define s(p,a,b,c) (sqrt(p)*(p)-(a)*(p)-(b)*(p)-(c)int main() double x1,x2,x3,l; printf(input :); scanf(%lf%lf%lf,&x1,&x2,&x3); l=p(x1,x2,x3); printf(%.2lf,s(l,x1,x2,x3); return 0;实验步骤:步骤一:在宏定义中给出中间量p=(a+b+c)/2的定义,再给出面积的定义。 步骤二:在主函数中通过将实参赋给形参的宏计算得出计算结果。调试及编译过程:测试数据:3,4,5(方便计算)出现的不足及修改:无 实验结果:输出预期的结果。(五)教材63面源程序1改错改错后的程序如下:shangji5jiaocai63.1#include void sort(int b,int n);int main() int a10=27,13,5,32,3,17,43,55,39; int i; sort(a,10); for(i=0;i10;i+) printf(%6d,ai); printf(n); return 0;void sort(int b,int n) int i,j,t; for(i=0;in-1;i+) for(j=0;jbj+1) t=bj;bj=bj+1;bj+1=t; 调试及编译过程:出现的问题及不足:无 运行结果:出现预期的结果。(六)教材65面4(1)对3*4矩阵进行赋值,转置后输出原矩阵和该矩阵源程序如下:shangji5jiaocai65.4(1)#include int main() int a34; int i,j; for(i=0;i3;i+) for(j=0;j4;j+) scanf(%d,&aij); printf(原矩阵为:n); for(i=0;i3;i+) for(j=0;j4;j+) printf(%4d,aij); printf(n); printf(转置后的矩阵为:n); for(j=0;j4;j+) for(i=0;i3;i+) printf(%4d,aij); printf(n); return 0;调试及编译过程:出现的不足及修改:无 运行结果:出现预期的结果。(七)教材65面4(2)源程序如下:shangji5jiaocai65.4(2)#include int main() int x,i,k=1; char c16; printf(input x:); scanf(%d,&x); for(i=0;i16;i+) if(x&k)=0) ci=0; else ci=1; k=k=0;i-) printf(%c,ci); return 0;调试及编译过程:测试数据:1测试数据:17出现的不足及修改:无 运行的结果:出现预期的结果。(八)教材65面4(3)输入n个学生的姓名和成绩按从高到低顺序排列,且在输入一个成绩时能找到对应的学生。源程序如下:shangji5jiaocai65.4(3)#include #include int main() int n,i,j,t; char s20; printf(enter the number of students:); scanf(%d,&n); int scoren; char namen20; printf(input the name and score of each student:); for(i=0;in;i+) scanf(%s%d,namei,&scorei); for(i=0;in-1;i+) for(j=0;jn-1-i;j+) if(scorejscorej+1) t=scorej;scorej=scorej+1;scorej+1=t; strcpy(s,namej);strcpy(namej,namej+1);strcpy(namej+1,s); for(i=0;in;i+) printf(%s %dn,namei,scorei); int so; printf(enter a score:); scanf(%d,&so); for(i=0;in;i+) if(scorei=so) printf(%s %d,namei,scorei); return 0; printf(not found!); return 0;调试及编译过程:测试数据:三个学生,分数能被找到测试数据:输入三个学生的成绩,后来输入的分数不能被找到出现的不足及修改:无 运行结果

温馨提示

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

评论

0/150

提交评论