您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页《C语言》课内实验报告5

《C语言》课内实验报告5

来源:爱go旅游网
《C语言》实验报告

一、实验题目:

实验五 函数的应用

二、实验目的:

1.进一步掌握函数的定义方法、调用方法,实参与形参的对应关系,以及调用函数的执行过程。

2.掌握函数的嵌套调用、递归调用、数组作为函数参数的设计方法。 3.进一步理解变量的作用域和生存期。

三、实验内容:

1.定义一个求阶乘的递归调用函数double fac(int n),在主函数中调用3次该函数分别求出8!、10!、18!的准确值(结果:8!=40320,10!=3628800,18!=6402373705728000)。编写源程序,给出注释及运行结果。(提示,请参阅教材上174页例8.7的程序)。

#include /*包含头文件*/

void main() /*空类型主函数*/ {

double fac(int n); /*声明函数fac(int n)*/ int a,b,c; /*定义整型变量a,b,c*/ double x,y,z; /*定义double型变量x,y,z*/ a=8; /*将8赋给a*/ b=10; /*将10赋给b*/ c=18; /*将18赋给c*/ x=fac(a); /*将fac(a)赋给x*/ y=fac(b); /*将fac(b)赋给y*/ z=fac(c); /*将fac(c)赋给z*/ printf(\"%d!=%.0lf\\n%d!=%.0lf\\n%d!=%.0lf\\n\标准输出函数 输出a,x,b,y,c,z的值*/

}

double fac(int n) /*定义函数fac(int n)*/ { double f; /*定义double型变量f*/ if(n==0||n==1) /*如果n等于0或n等于1*/ f=1; /*将1赋给f*/ else/*否则*/

f=fac(n-1)*n; /*将函数值赋给f*/

- 1 -

《C语言》实验报告

return(f); /*返回f的值*/ }

2.编写一个将n个整数用选择法按由小到大的顺序排序的函数void sort(int array[], int n),在主函数中调用两次该函数,对任给出个数分别是10和15的两组整数进行排序。编写源程序,给出注释及运行结果。(提示,请参阅教材上181页例8.13的程序)。

#include /*包含头文件*/

void main() /*空类型主函数*/ {

void sort(int array[],int n); /*声明空类型函数sort(int array[],int n)*/ int a[10],b[15],i,j; /* 定义整形数组a[],b[]长度分别为10,15,定义整形变量i,j*/

printf(\"enter the array a:\\n\"); /*标准输出函数 输出enter the array a:*/

for(i=0;i<10;i++) /*当i等于1,i小于10时,i自加一,并执行下面循环*/

scanf(\"%d\ /*标准输入函数 以十进制输入数组a[i]的元素*/

sort(a,10); /*将长度为10的实参数组赋给形参数组a,调用函数,进行计算*/

printf(\"the sorted array:\\n\"); /*标准输出函数 输出the sorted array:*/

for(i=0;i<10;i++) /*当i等于1,i小于10时,i自加一,并执行下面循环*/

printf(\"%5d\ /*标准输出函数 输出数组a[i]*/

printf(\"\\n\"); /*标准输出函数 输出换行*/ printf(\"enter the array b:\\n\"); /*标准输出函数 输出enter the array b:*/

for(j=0;j<15;j++) /*当j等于1,j小于15时,j自加一,并执行下面循环*/

scanf(\"%d\ /*标准输入函数 以十进制输入数组b[j]的元素*/

sort(b,15); /*将长度为15的实参数组赋给形参数组b,调用函数,进行计算*/

printf(\"the sorted array:\\n\"); /*标准输出函数 输出the sorted array:*/

for(j=0;j<15;j++) /*当j等于1,j小于15时,j自加一,并执行下面循环*/

printf(\"%5d\ *标准输出函数 以十进制形式输出数组b[j]*/

- 2 -

《C语言》实验报告

printf(\"\\n\") ; /*标准输出函数 输出换行*/ }

void sort(int array[],int n) /*定义空类型 函数sort(int array[],int n)*/ { int c,d,e,f; /*定义整型变量c,d,e,f*/ for(c=0;c{ e=c; /*将c赋给e*/ for(d=c+1;dif(array[d]array[e]=array[c]; /*将array[c]赋给array[e]*/ array[c]=f; /*将f赋给array[c],实现由小到大的排列*/

} }

3.编写一个求3个学生的各科平均成绩的程序,每个学生有4科成绩,学生成绩存放在a数组中,求平均成绩需调用函数void aver(float array[][4], int n),

65677060n为学生数,其中a数组的矩阵表示为 A80879081。编写源程序,

909910098给出注释及运行结果,自己试着增加学生数或者成绩科数再运行程序。(提示,可参阅教材183页例8.14的程序,注意按科平均成绩可存入数组A中,只需将A增加1行并先付初值0,求出平均值之后替换0)

1、

#include /*包含头文件*/ void main() /*空类型主函数*/ {

void aver(float array[][4]); /*声明空类型函数aver(float array[][4])*/

int i; /*定义整型变量i*/ float a[4][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}}; /*对浮点型数组进行赋值*/

printf(\"the average is:\\n\"); /*标准输出函数 输出the average is*/

- 3 -

《C语言》实验报告

aver(a); /*将实参数组地址赋给形参数组,调用函数。*/

for(i=0;i<4;i++) /*当i等于0并小于4时,i自加一,执行循环*/

printf(\"%.2f \ /*标准输出函数 输出数组a*/

printf(\"\\n\"); /*标准输出函数 输出换行*/ }

void aver(float array[][4]) /*定义空类型函数aver(float array[][4])*/

{ int i; /*定义整型变量i*/ for(i=0;i<4;i++) /*当i等于0并小于4时,i自加一,执行循环*/

array[3][i]=(array[0][i]+array[1][i]+array[2][i])/3; /*按列求平均值并赋给最后一行*/

} 2、

#include /*包含头文件*/ void main() /*空类型主函数*/ {

void aver(float array[6][4]); /*声明空类型函数aver(float array[][4])*/

int i; /*定义整型变量i*/ float

a[6][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98},{78,88,98,64},{55,100,87,96}}; /*对浮点型数组进行赋值*/

printf(\"the average is:\\n\"); /*标准输出函数 输出the average is*/ aver(a); /*将实参数组地址赋给形参数组,调用函数。*/ for(i=0;i<4;i++) /*当i等于0并小于4时,i自加一,执行循环*/ printf(\"%.2f \ /*标准输出函数 输出数组a*/ printf(\"\\n\"); /*标准输出函数 输出换行*/ }

void aver(float array[6][4]) /*定义空类型函数aver(float array[6][4])*/ { int i; /*定义整型变量i*/

for(i=0;i<4;i++) /*当i等于0并小于4时,i自加一,执行循环*/

- 4 -

《C语言》实验报告

array[5][i]=(array[0][i]+array[1][i]+array[2][i]+array[3][i]+array[4][i])/5; } /*按列求平均值并赋给最后一行*/

四、实验结果:

1、输出结果:

2、输出结果:

3、输出结果: ⅰ、

ⅱ、

五、实验体会或遇到问题:

1、对于函数使用理解不够透彻。 2、没太掌握函数的用法,做实验较费劲。

- 5 -

《C语言》实验报告

3、所使用变量一定要定义。

4、利用函数调用,可以使程序较为简洁。 5、注意值输出时所用格式。 6、使用函数要声明,并定义。

7、要好好回去看看书,重新学习一遍,争取弄懂。 8、注意元素个数与其位置的对应。

- 6 -

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务