C语言练习题

C语言练习题: 函数部分

2019-01-04  本文已影响0人  brafei

C语言练习题:函数部分(9题)

上一篇: C语言练习题:循环部分

下一篇: C语言练习题:数组部分

斐波那契,函数递归求法

/*
    __author__ = 'xiaofeizhang'
    函数作用:递归函数实现斐波那契 
*/
#include <stdio.h>
int main(void){
    long fibonacci(int n);
    int num;
    long sum;
    printf("输入斐波那契数值:");
    scanf("%d", &num);
    sum = fibonacci(num);
    printf("%d的斐波那契数列的数值为:%d", num, sum);
    return 0;
} 

long fibonacci(int n){
    long sum;
    if (n==0){
        sum = 0;
    }
    else if (n==1){
        sum = 1;
    } 
    else {
        sum = fibonacci(n-1) + fibonacci(n-2);
    }
    return sum;
}

/*
输入斐波那契数值:20
20的斐波那契数列的数值为:6765
--------------------------------
Process exited after 2.298 seconds with return value 0
请按任意键继续. . .

*/

计算一个公式

/*
    __author__ = 'xiaofeizhang'
    函数作用:函数实现计算一个公式 
*/

#include <stdio.h>
int main(void){
    double f(int n);
    int num;
    double sum;
    printf("请输入n的值: ");
    scanf("%d", &num);
    sum = f(num);
    printf("%d经过公式计算以后得到的值为:%f", num, sum); 
    return 0;
} 

double f(int n){
    double sum_part=0;
    double sum=0;
    for (int i=1; i<=n; i++){
        for (int j=1; j<=i; j++){
            sum_part += j;
        }
        sum += 1.0/sum_part;
        sum_part = 0;
    }
    return sum; 
}

/*
请输入n的值: 11
11经过公式计算以后得到的值为:1.833333
--------------------------------
Process exited after 1.115 seconds with return value 0
请按任意键继续. . .
*/ 

根据公式求p的值,结果由函数值带回

/*
    __author__ = 'xiaofeizhang'
    函数作用:根据公式求p的值,结果由函数值带回 
*/

#include <stdio.h>
int main(void){
    float f(int m, int n);
    int m, n, t;
    float result;
    printf("输入m和n的值:");
    scanf("%d,%d", &m, &n);
    if (m<n){
        t = m;
        m = n;
        n = t;
    }
    result = f(m, n);
    printf("该函数的结果为 %f", result);
    return 0;
} 

float f(int m, int n){
    double p;
    long factorial(int value);
    p = (factorial(m)*1.0)/(factorial(n)*factorial(m-n));
    
    return p;
}


long factorial(int value){
    long result;
    if (value==0||value==1){
        result = 1;
    }
    else {
        result = value*factorial(value-1);
    }
    return result;
}

/*
输入m和n的值:12,8
该函数的结果为 495.000000
--------------------------------
Process exited after 6.617 seconds with return value 0
请按任意键继续. . .
*/ 

函数计算阶乘

/*
    __authon__ = 'xiaofeizhang'
    函数作用:阶乘 
*/

#include <stdio.h>

int main(){
    long f(int n);
    long s;
    s = f(2)+f(3)+f(1);
    printf("2!+3!+1的结果为:%d\n", s); 
    return 0;
}


long f(int n){
    long t;
    int i;
    for(i=1, t=1; i<=n; i++)
        t *=i;  
    return(t);
}
/*
2!+3!+1的结果为:9

--------------------------------
Process exited after 0.581 seconds with return value 0
请按任意键继续. . .

*/ 

递归实现阶乘

/*
    __authon__ = 'xiaofeizhang'
    函数作用: 嵌套实现阶乘 
*/ 
#include <stdio.h>

int main(void){
    long f(int n);
    int n;
    long result;
    printf("请输入值:");
    scanf("%d", &n);
    result = f(n);
    printf("%d的阶乘为:%d", n, result); 
    return 0;
} 


long f(int n){
    long t=1;
    if (n<0){
        printf(" data error"); 
    }
    if (n==1 || n==0){
        t = 1;
    }
    else {
        t = f(n-1)*n;
    }
    return t;
}

/*
请输入值:5
5的阶乘为:120
--------------------------------
Process exited after 3.417 seconds with return value 0
请按任意键继续. . .
*/

计算阶乘后相加

/*
__author__ = 'xiaofeizhang'
实现两个数各自求阶乘后相加 
*/
#include <stdio.h>

int main(void){
    int a, b;
    printf("请输入a和b的值:");
    scanf("%d, %d", &a, &b);
    long add(int x, int y);
    add(a, b);
    return 0;
}



long add(int x, int y){
    long sum=0, x1, y1;
    int i;
    long f(int x);
    sum = f(x) + f(y);
    printf("结果为:%d\n", sum);
    return(sum);
}

long f(int x){
    long t=1;
    for (int i=1; i<=x; i++ ){
        t *= i; 
    }
    return t;
} 
/*
请输入a和b的值:4,5
结果为:144

--------------------------------
Process exited after 5.624 seconds with return value 0
请按任意键继续. . .

*/ 

汉塔诺

/*
    __author__ = 'xiaofeizhang'
    汉塔诺 
*/ 
#include <stdio.h>


int main(void){
    void hanoi(int disks, char A, char B, char C);
    int disks;
    printf("输入盘子的数量:");
    scanf("%d", &disks);
    hanoi(disks, 'A', 'B', 'C'); 
    return 0;
}


void hanoi(int disks, char A, char B, char C){
    if (disks == 1){
        printf("%c->%c\n", A, B);
    }
    else{
        hanoi(disks-1, A, C, B);
        printf("%c->%c\n", A, B);
        hanoi(disks-1, C, B, A);
    }
}

/*
输入盘子的数量:4
A->C
A->B
C->B
A->C
B->A
B->C
A->C
A->B
C->B
C->A
B->A
C->B
A->C
A->B
C->B

--------------------------------
Process exited after 4.363 seconds with return value 0
请按任意键继续. . .
*/

求年龄

/*
    __author__ = 'xiaofeizhang'
    函数作用:求年龄 
*/ 
#include <stdio.h>
//例2:5个学生坐在一起,上一个学生比下一个学生分别小2岁,已知第1个学生今年10岁,那么求第5个学生的年龄。
int age(int n)
{
    int c;
    if(n==1)
        c=10;
    else
        c=age(n-1)+2;
    return c;
}

int main()
{
    int s;
    s = age(5)+age(5)+age(5); 
    printf("第5个学生的年龄是%d",s);
    return 0;
}

/*
第5个学生的年龄是54
--------------------------------
Process exited after 0.02316 seconds with return value 0
请按任意键继续. . .
*/ 

自定义两个数比大小

/*
    __author__ = 'xiaofeizhang'
    函数作用:自定义两个数比大小 
*/ 

#include <stdio.h>

int main(void){
    void sort(int x, int y);
    int a, b;
    printf("请输入a和b的值");
    scanf("%d, %d", &a, &b);
    sort(a, b);
    return 0;
}

void sort(int x, int y){
    int t;
    if (x<y){
        t = x;
        x = y;
        y = t;
    }
    printf("max为%d, min的为%d\n", x, y);
}
/*
请输入a和b的值12,13
max为13, min的为12

--------------------------------
Process exited after 5.564 seconds with return value 0
请按任意键继续. . .


*/ 
上一篇下一篇

猜你喜欢

热点阅读