1.计算1!+2!+…+100!。要求定义和调用函数fact(n)计算n的阶乘。
#include<stdio.h> double fact(int n); /*调用函数fact(n)*/ int main(void) { int i; double sum; sum=0; for(i=1;i<=100;i++){ sum=sum+fact(i); /*循环计算1!+2!+...+100!的值*/ } printf("1!+2!+...+100!=%e ",sum); return 0; } double fact(int n) /*调用函数fact(n)计算n的阶乘*/ { int i; double result; result=1; /*因为阶乘,首先给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 x); /*调用函数fact(n),返回值的类型为float*/ int main(void) { int m,n; double item,sum; printf("Enter m&n:"); scanf("%d%d",&m,&n); sum=0; item=fact(n)*fact(m-n); /*运用函数进行计算*/ sum=fact(m)/item; /*运用函数进行计算*/ printf("sum=%.2f ",sum); return 0; } float fact(int x) { int i; float result; result=1; for(i=1;i<=x;i++) result=result*i; /*计算x的阶乘*/ return result; }
--------------------------------题目分割线---------------------------------
3.输入两个正整数m和n(m<n),求从m到n之间(包括m和n)所有素数的和,要求定义并调用函数isprime(x)来判断x是否为素数(素数是除1以外只能被自身整除的自然数)。
#include<stdio.h> int isprime(int x); int main(void) { int i,j,sum,m,n; printf("Enter m & n:"); scanf("%d%d",&m,&n); sum=0; for(i=m;i<=n;i++){ for(j=2;j<=i;j++){ if(i%j!=0&&i!=1) sum=sum+i; printf("sum=%d ",sum); } } return 0; }
--------------------------------题目分割线---------------------------------
4、验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如6 = 3 + 3,8 = 3 + 5,…,18 = 7 + 11。将6~100之间的每个偶数都表示成两个素数之和。函数prime(m)用于判断m是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。
--------------------------------题目分割线---------------------------------
5、某客户为购房办理商业贷款,选择了按月等额本息还款法,在贷款本金(loan)和月利率(rate)一定的情况下,住房贷款的月还款额(money)取决于还款月数(month),计算公式如下:客户打算在5~30年的范围内选择还清贷款的年限,想得到一张“还款年限—月还款额表”以供参考。
(1)定义函数cal_power(x,n)计算x的n次幂(即x^n),函数返回值类型是double。
(2)定义函数cal_money(loan,rate,month)计算月还款额,函数返回值类型是double,要求调用函数cal_power(x,n)计算x的n次幂。
(3)定义函数main(),输入贷款本金loan(元)和月利率rate,输出“还款年限—月还款额表”,还款年限的范围是5~30年,输出时分别精确到年和元。要求调用函数cal_money(loan,rate,month)计算月还款额。