实验报告样本(验证性实验).doc_第1页
实验报告样本(验证性实验).doc_第2页
实验报告样本(验证性实验).doc_第3页
实验报告样本(验证性实验).doc_第4页
实验报告样本(验证性实验).doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

一、实验目的和要求1掌握C语言中定义函数的方法。2掌握函数传值调用的方法。3掌握递归函数的设计方法。4掌握几个函数放在一个文件中以及分别放在几个文件中的编译、连接方法。二、实验内容1上机调试下面的程序。#includeint sum(int a,int b)/*定义一个求和函数*/ return(a+b);/*返回a+b的值*/void main()int x,y;printf(%dn,sum(x,y);/*调用sum函数并显示结果*/程序运行过程:37814751。2编写程序,在主函数中输出1!2!3!.10!的值。要求将计算阶乘的运算写成函数。#include void main()int i,sum=0; long fac(int i);for(i=1;i=10;i+)sum+=fac(i);printf(sum=%ldn,sum);long fac(int i)int r;if(i=1) r=1;else r=i*fac(i-1);return r;程序运行过程:sun=4037913.3编写函数,将输入的十进制正整数n转换为二进制数,并将转换结果输出。#include void main()int n;void Dec2Bin(int m); /*自定义函数的函数声明*/ printf(Input decimal number:n);scanf(%d,&n); Dec2Bin(n);void Dec2Bin(int m) int bin32,j; for(j=0;m!=0;j+) binj= m%2; /*除2取余,余数放入到数组中*/ m=m/2; printf(Output binary number:n); for(;j!=0;j-) /*数组内的值反序输出*/ printf(%d, binj-1 );程序运行过程:Input decimal number:8Output binary number:1000。4求方程的根,用3个函数分别求当大于0、等于0和小于0时的根,并输出结果。从主函数输入a、b、c的值。#include #include double x1,x2;void root1(double a,double b,double d)x1=(-b+sqrt(d)/2/a;x2=(-b-sqrt(d)/2/a;printf(x1=%.2lf,x2=%.2lfn,x1,x2);void root2(double a,double b)x1=x2=-b/2/a;printf(x1=%.2lf,x2=%.2lfn,x1,x2);void root3(double a,double b,double d)x1=-b/2/a; x2=sqrt(-d)/2/a;printf(x1=%.2lf+%.2lfinx2=%.2lf-%.2lfi,x1,x2,x1,x2);void main ()double a,b,c,d;printf(please input a,b,c:n);scanf(%lf,%lf,%lf,&a,&b,&c);d=b*b-4*a*c;if(d0)root1(a,b,d); else if(d=0) root2(a,b);elseroot3(a,b,d);程序运行结果:please input a,b,c:2,3,4x1=-0.75+1.20ix2=-0.75-1.20i 5.写一函数,使给定的一个二维数组(3 3)转置,即行列互换。#include#define N 3int arrayNN;void convert(int array33) /*定义转置数组的函数*/int i,j,t;for (i=0;iN;i+) /*对所有的行*/for (j=i+1;jN;j+) /*对主对角线以上的元素*/t=arrayij; /*与对应位置元素相交换*/arrayij=arrayji;arrayji=t;void main( )int i,j;printf(Input array:n);for (i=0;iN;i+) /*此双重循环读入数组元素*/for(j=0;jN;j+)scanf(%d,&arrayij);printf(noriginal array :n);for (i=0;iN;i+) /*此双重循环以矩阵形式输出数组元素*/ for (j=0;jN;j+)printf(%5d,arrayij);printf(n);convert(array); /*调用函数,对实参数组array转置*/printf(convert array:n);for (i=0;iN;i+) /*输出转置后的结果*/ for(j=0;jN;j+)printf(%5d,arrayij);printf(n);程序运行过程:Input array:1 2 34 5 67 8 9Original array:123456789Convert array:1472583696.写一函数,输入一行字符,将此字符串中最长的单词输出。#include#includeint alphabetic(char c) /* 判断当前字符是否字母,是返回1,否则返回0 */if (c=a& c=A&c=Z)return(1);elsereturn(0);int longest(char string) /* 寻找最长单词的起始位置 */ int len=0,i,length=0,flag=1,place=0,point;for(i=0;i=length) /*以point位置开始的词如为当前最长的,记住其位置*/ length=len; place=point; len=0;return(place); /*返回最长单词的起始位置*/void main( )int i;char line100;printf(Input one line:n);gets(line); /*读入一行文本*/printf(nThe longest word is :);for(i=longest(line);alphabetic(linei);i+) /*输出最长的单词*/printf(%c,linei);printf(n);运行情况:Input one line:I am a teacherThe longest word is:teacher7.m个人的成绩存放在整型数组score中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回主函数,并将低于平均分的分数存放在主函数定义的数组below中。#include stdio.hint fun(int score,int m,int below)/*计算score数组中m个元素的均值,并把小于平均值的元素逐个存放在below数组中*/int i,k=0,aver=0;for(i=0;im;i+)aver+=scorei; /* 计算总分 */aver/=m; /* 计算平均分 */for(i=0;im;i+) /* 逐个判断分数值 */if(scoreiaver) /* 如低于平均分 */belowk=scorei; /* 存放到以below为首地址的数组中 */k+; /* 统计低于平均分的人数 */return k; /* 返回人数 */void main( )int i,n,below9;int score9=10,20,30,40,50,60,70,80,90;n=fun(score,9,below); /* 调用函数,低于平均分的人数赋给n */printf(nbelow the average are:);for(i=0;in;i+) printf(%4d,belowi); /* 输出below数组中n个值 */程序运行结果:Below the average are:10203040。8.编写函数fun,功能是计算下列级数的和,返回值为计算结果。在主函数中作相应调用并输出结果。#include stdio.h#include math.hdouble fun(double x,int n) /* 计算级数的和并返回计算结果 */ double s=1,p=1,t=1;int i;for(i=1;i=n;i+) t*=i; /* 求分母 */ p*=x; /* 求分子 */s+=p/t; /* 本项累加到和变量 */return s;void main( ) printf(n%fn,fun(0.3,10); /* 将函数的返回值输出 */ 程序运行结果: 1.349859三、讨论、心得思考:主函数中sum(x,y)是如何得到实参?答:通过return语句返回的。思考:如果函数fac()写成非递归形式,应如何修改源程序?答:将long fac(int i)int r;if(i=1) r=1;else r=i*fac(i-1);return r;改为long fac(int i)int r,s;for(r=1;0i;i-)r=r*i;return r;思考:如何修改算法将十进制正整数转换成k进制数,并按位输出?答:将for(j=0;m!=0;j+) binj= m%2; /*除2取余,余数放入到数组中*/ m=

温馨提示

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

评论

0/150

提交评论