当前位置:文档之家› C语言:函数的应用实验报告

C语言:函数的应用实验报告

课程名称:结构化程序设计与C语言开课实验室:年月日一、实验目的用C语言编写和调试函数的程序。

从而对函数的定义、调用、全局变量的灵活运用有比较深入的了解。

二、内容及结果1、程序一素数函数1)程序要求:写一个判断是否是素数的函数,在主函数输入一个整数,调用它后输出结果。

2)代码:#include<stdio.h>#include<math.h>int prime(int n){ int i,k;k=sqrt(n);for(i=2;i<=k;i++)if(n%i==0) break;if(i<=k)return 0;elsereturn 1;}int main(){ int prime(int n);int n;printf("Please enter n:");scanf("%d\n",&n);if(prime(n)==1)printf("%d is a prime number",int(n));elseprintf("%d is not a prime number",int(n)); }3)运行截图:2、程序二用递归方法求n阶勒让德多项式的值1)程序要求:递归公式为:当n=0,=)(xP n 1当n=1, =)(xP n x;当n>=1, =)(xP n((2n-1)x-Pn-1(x)-(n-1)Pn-2)x))/n2)代码:#include<stdio.h>#include<math.h>int p(int n,int x);void main(){int n,x;scanf("%d",&x);for(n=0;n<=10;n++)printf("p(%d,%d)=%d\n",n,x,p(n,x));}int p(int n,int x){if(n==0)return 1;elseif(n==1)return x;elsereturn((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n; }3)运行截图:3、程序三成绩统计程序1)程序要求:输入10个学生5门课的成绩,分别用函数实现以下功能:计算每个学生的平均分;计算每门课的平均分;找出所有50个分数中最高的分数所对应的学生和课程;计算平均方差。

2)代码:#include<stdio.h>float x1[10],x2[5];float pp(float f[10][5]);float cc(float y[10][5]);void find(float z[10][5],float s[5],int t[5]);float xx(float q);int main(){char name[5][20],class1[5][20];float score[10][5],o,k=0,max[5];int a[2],i,j;printf("请你输入名字:\n");for(i=0;i<10;i++)gets(name[i]);printf("请你输入班级:\n");for(j=0;j<5;j++)gets(class1[j]);printf("请你输入十个学生五门课的成绩:\n"); for(i=0;i<10;i++)for(j=0;j<5;j++)scanf("%f",&score[i][j]);x1[i]=pp(score);x2[j]=cc(score);find(score,max,a);o=xx(k);for(i=0;i<10;i++){puts(name[i]);printf("%.3f\n",x1[i]);}for(j=0;j<5;j++){puts(class1[j]);printf("%.3f\n",x2[j]);}for(j=0;j<5;j++){printf("%.3f \n",max[j]);puts(name[a[j]]);puts(class1[j]);}printf("o=%.3f\n",o);return 0;}float pp(float f[10][5]) {float sum;int i,j;for(i=0,sum=0;i<10;i++) {for(j=0;j<5;j++)sum=sum+f[i][j];x1[i]=sum/2;sum=0;}return 0;}float cc(float y[10][5]) {float sum;int i,j;for(j=0,sum=0;j<5;j++) {for(i=0;i<10;i++) sum=sum+y[i][j]; x2[j]=sum/2;sum=0;}return 0;}void find(float z[10][5],float s[5],int t[5]) {int i,j;for(j=0,s[j]=z[0][j];j<5;j++)for(i=0;i<10;i++)if(s[j]<z[i][j]){s[j]=z[i][j];t[j]=i;}}float xx(float q){float f=0,e=0;int i;for(i=0;i<10;i++){e=x1[i]*x1[i]+e;f=f+x1[i];}q=e/10-(f/10)*(f/10);return(q);}3)运行截图:4、程序四大奖赛评分系统。

1)程序要求:已知某大奖赛有10个选手参赛,5个评委为参赛选手评分(最高10分,最低0分),统分规则为:在每个选手的5个得分中,去掉一个最高分和最低分后,取平均分作为该选手的最后得分。

要求编程实现:根据选手的最后得分,从高到低输出选手的得分名次表,以确定获奖名单;根据各选手的最后得分与各评委给该选手所评分数的差距,对每个评委评分的准确性和评分水准给出一个定量的评价,从高到低输出各评委得分的名次表。

2)代码:#include<stdio.h>#define N 10float max=0,min=0;int j,k;float find(float b[N]);void mingci(float aver[5]);void pwei(float a[5]);int main(){float a[N],aver[5];int i;for(j=1;j<=N;j++){printf("请各位评委亮分:\n");for(i=0;i<5;i++)scanf("%f",&a[i]);aver[j]=find(a);printf("第%d号选手的最后得分为%.2f分\n",j,aver[j ]);}mingci(aver);for(j=1;j<=N;j++)pwei(a);return 0;}float find(float b[N]){int i;float sum=0,aver[5];min=max=b[0];for(i=0;i<5;i++){ if(b[i]>max)max=b[i];else if(b[i]<min)min=b[i];}printf("第%d号选手去掉一个最高分%.2f和去掉一个最低分%.2f最后得分:\n",j,max,min);for(i=0;i<3;i++){ max=0;min=0;sum=sum+b[i];aver[j]=sum/3;}return (aver[j]);}void mingci(float aver[5]){float t;for(j=1;j<=10;j++)for(k=1;k<=5-j;k++)if(aver[k]<aver[k+1]){t=aver[k];aver[k]=aver[k+1];aver[k+1]=t;}printf("\n");for(k=1;k<=10;k++)printf("第%d名的分为%.2f\n",k,aver[k]); printf("\n");}void pwei(float a[5]){int i;for(i=0;i<5;i++){if(a[i]>=8&&a[i]<=10)printf("该评委评分优秀\n");else if(a[i]>=5&&a[i]<8)printf("该评委评分委良\n");else if(a[i]>=0&&a[i]<5)printf("该评委评分中\n");}}3)运行截图:三、实验结果、分析和结论:此次试验主要就是函数的运用,以及再次复习了循环语句、条件语句。

在函数运用中,最重要的就是函数的调用.函数调用分为函数调用语句、函数调用表达式、函数调用参数三种方式,在主调函数和被调用函数之间又有数据的传递,即实参和形参间的数据传递。

同时也知道了,在调用函数时还需具备一些条件:(1)被调用的函数必须是已经定义的函数;(2)如果使用库函数,应该在本文件开头用#include指令将调用有关库函数时所需用到的信息“包含”到文件中来;(3)如果使用用户自己定义的函数,而该函数的位置在调用它的函数的后面,应该在主调函数中对调用函数作声明。

函数的调用也是编程中一个重要的类容,我们也应该熟练的掌握,以此才能更好的运用于学习实践中。

相关主题