C语言:函数的应用实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程名称:结构化程序设计与C语言开课实验室:年月日
一、实验目的
用C语言编写和调试函数的程序。从而对函数的定义、调用、全局变量的灵活运用有比较深入的了解。
二、内容及结果
1、程序一素数函数
1)程序要求:写一个判断是否是素数的函数,在主函数输入一个整数,调用它后输出结果。2)代码:
#include
#include
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;
else
return 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));
else
printf("%d is not a prime number",int(n)); }
3)运行截图:
2、程序二用递归方法求n阶勒让德多项式的值
1)程序要求:
递归公式为:
当n=0,=
)
(x
P n 1
当n=1, =
)
(x
P n x;
当n>=1, =
)
(x
P n((2n-1)x-P
n-1(x)-(n-1)P
n-2
)x))/n
2)代码:
#include
#include
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;
else
if(n==1)
return x;
else
return((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n; }
3)运行截图:
3、程序三成绩统计程序
1)程序要求:输入10个学生5门课的成绩,分别用函数实现以下功能:
计算每个学生的平均分;计算每门课的平均分;找出所有50个分数中最高的分数所对应的学生和课程;计算平均方差。
2)代码:
#include
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;