实验五函数
//计算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; } }