实验五函数
//计算1!+2!+…+100!。要求定义和调用函数fact(n)计算n的阶乘。
#include<stdio.h>
double fact(int m);
int main()
{
int i;
double n;
n=0;//赋初值为累加做准备
for(i=1;i<=100;i++){
n=n+fact(i);
}
printf("1!+2!...+100!=%e\n",n);//输出结果
return 0;
}
double fact(int m)
{
int i;
double result;
result=1;//赋初值
for(i=1;i<=m;i++)
result=result*i;
return result;
}

//编制程序,输入m、n(m≥n≥0)后,计算下列表达式的值并输出。 要求将计算阶乘的运算编写作函数fact(n),函数返回值的类型为float
#include<stdio.h>
float fact(int n);
int main()
{
int n,m;
float s,x,y,z;//定义x,y,z来储存阶乘
printf("enter n and m:");
scanf("%d%d",&n,&m);
x=fact(n);
y=fact(m);
z=fact(m-n);
s=y/(x*z);
printf("=%.2f\n",s);
return 0;
}
float fact(int n)
{
int i;
float result;
result=1;
for(i=1;i<=n;i++)//计算阶乘
result=result*i;
return result;
}

//输入两个正整数m和n(m<n),求从m到n之间(包括m和n)所有素数的和,要求定义并调用函数isprime(x)来判断x是否为素数(素数是除1以外只能被自身整除的自然数)。
#include<stdio.h>
#include<math.h>
int isprime(int x);
int main()
{
int m,n,x,s;//变量s放结果
printf("enter m and n:");
scanf("%d%d",&m,&n);
s=0;
for(x=m;x<=n;x++)
if(isprime(x)!=0)
s=s+x;//素数累加
printf("=%d\n",s);
return 0;
}
int isprime(int x)
{
int i,n;
if(x==1)
return 0;
n=sqrt(x);
for(i=2;i<=n;i++){
if(x%i==0){
return 0;
}
else
return 1;
}
}

//验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如6 = 3 + 3,8 = 3 + 5,…,18 = 7 + 11。将6~100之间的每个偶数都表示成两个素数之和。函数prime(m)用于判断m是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。
#include<stdio.h>
#include<math.h>
int prime(int m);
int main()
{
int m,x,y;
printf("enter m:");
scanf("%d",m);
for(m=6;m<=100;m++)
if(prime!=0)
x=prime(m);
y=prime(m);
printf("这个数可以由%d,%d组成\n",x,y);
return 0;
}
int prime(int m)
{
int i,n;
if(m==1)
return 0;
n=sqrt(m);
for(i=2;i<=n;i++){
if(m%i==0){
return 0;
}
return 1;
}
}

浙公网安备 33010602011771号