}
{
printf(\ }
printf(\ scanf(\}
return 0;
5. 排列数计算
描述: 表示从m个元素中抽出n个元素的排列的个数。
计算公式为:编写一个用户自定义函数,该函
数有一个整数参数,函数的功能是求解这个整数的阶乘,函数的返回值为这个整数的阶乘。编写一个程序,从键盘输入m、n值,分别两次调用用户自定义函数来求解
输入: 多行测试数据,每行两个用空格隔开的整数,0 0 表示结束。
输出: 有多行,对应于非0 0行的排列值。
样例输入: 5 3
8 2 0 0
样例输出: 60
56
·程序代码:
#include \int main(void)
{
double n,m,t;
double x1,x2,i,k,kk; scanf (\ while (n!=0&&m!=0) {
x1=1;
/*if(m for(i=1;i<=m;i++) { x1*=i; } k=m-n; x2=1; for(i=1;i<=k;i++) { x2*=i; } kk=x1/x2; printf(\ scanf (\ } return 0; } 6. 素数对 描述: 哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数.做好了这件实事,就能说明这个猜想是成立的.由于可以有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的,而且素数对中的第一个数不大于第二个数. 输入:输入中是一些偶整数M(6 输出:对于每个偶数,输出两个彼此最接近的素数,其和等于该偶数(要求这两个素数是不等的)。 样例输入: 20 30 40 46 样例输出: 7 13 13 17 17 23 17 29 ·程序代码: #include \int prime(int n) { int i; for (i=2;i int main() { int m,i; while(scanf(\ for(i=m/2;i>=2;i--) if(prime(i)&&prime(m-i)&&i!=m-i) { printf(\ break; } return 0; } 7. 函数表达式计算 描述:计算下列表达式的值: 输入:输入x和n的值,其中x为非负实数,n为正整数。 输出:输出f(x,n),保留2位小数。 样例输入: 3 2 样例输出: 2.00 ·程序代码: #include \#include \/* f(x,1)=sqrt(1+x); f(x,2)=sqrt(2+sqrt(1+x))=sqrt(2+f(x,1)); f(3,x)=sqrt(3+sqrt(2+qrt(1+x)))=sqrt(3+f(x,2)); ...... f(x,n)=sqrt(n+f(x,n-1));*/ double f(double x,int n) { if(n>1) return sqrt(n+f(x,n-1)); else return sqrt(1+x); } int main() { int n; double x; scanf(\ printf(\ return 0; } 8. 递归公约数 描述:递归形式的公约数定义如下: 使用此定义求两个整数的最大公约数。 输入: 有多行,每行为两个用空格隔开的整数。 输出: 对应的有多行,每行为对应输入的两个整数的最大公约数。 样例输入: 12 6 9 5 11 3 样例输出: 6 1 1 ·程序代码: # include \int gcd(int m, int n ) { if(m%n==0) return n; else gcd(n,m%n); } int main(void) { int a,b; while (scanf(\ { printf(\ } return 0; }