1
//计算1!+2!+…+100!。要求定义和调用函数fact(n)计算n的阶乘
#include<stdio.h> double fact(int n); int main(void) { int i; double sum; sum=0; for(i=1;i<=100;i++) sum=sum+fact(i); printf("1!+2!+...+100!=%e ",sum); return 0; } double fact(int n) { int i; double result; result=1; for(i=1;i<=n;i++) result=result*i; return result; }
2 函数的调用,主体不能重复
//编制程序,输入m、n(m≥n≥0)后,计算下列表达式的值并输出。 要求将计算阶乘的运算编写作函数fact(n),函数返回值的类型为float
#include <stdio.h> float fact(int n); main(void) { int m,n; float value,sum; printf("Enter m and n"); scanf("%d%d", &m, &n); sum=fact(m-n); value=fact(m)/(fact(n)*sum); printf("value=%f ", value); return 0; } float fact(int n) { int i; float result=1; for(i=1; i<=n; i++) result=result*i; return result; }
3
//输入两个正整数m和n(m<n),求从m到n之间(包括m和n)所有素数的和,要求定义并调用函数isprime(x)来判断x是否为素数(素数是除1以外只能被自身整除的自然数)。 #include<stdio.h> int main(void) { int m,n; int is_prime(int x); //定义 isprime函数判断是否为素数 int sum=0; printf("请输入两个正整数m,n(m<n): "); scanf("%d %d",&m,&n); int i; for(i=m;i<=n;i++) { if(is_prime(i)) sum += i; //将结果累和 } printf("m,n之间的所有素数之和为:%d ",sum); return 0; } int is_prime(int x){ int tmp=x/2; //一个数若不能被它的1/2内的所有数整除,就是素数,也可用平方根求 int i; for(i=2;i<=tmp;i++) { if(x%i==0) //若能被整除,即不是素数,结果返回0 return 0; } return 1; //是素数则返回1 }
4
//验证哥德巴赫猜想 #include<stdio.h> int prime(int m); int main(void) { int a,b,i; for(i=6;i<=100;i+=2){ //当i大于6小于等于100时开始循环,因为是偶数所以每次增加2 for(a=2;a<=i;a++){ //设置其中一个素数,则另一个等于总数-该素数 b=i-a; if (prime(a)&&prime(b)){ //当a和b都为素数时,输出结果 printf("%d=%d+%d ",i,a,b); if(i%5==0) //每行显示5个 printf(" "); break; } } } } int prime(int m) // 调用prime函数,求素数 { int n ; for( n=2; n<=m/2; n++) if ( m%n==0) break; return ( n>m/2 ); }
5