• 集美大学 - 2840 - 实验10 - 函数题


    实验10-2 判断满足条件的三位数

    本题要求实现一个函数,统计给定区间内的三位数中有两位数字相同的完全平方数(如144、676)的个数。

    函数接口定义:

    int search( int n );
    
    • 1

    其中传入的参数int n是一个三位数的正整数(最高位数字非0)。函数search返回[101, n]区间内所有满足条件的数的个数。

    裁判测试程序样例:

    #include 
    #include 
    
    int search( int n );
    
    int main()
    {
        int number;
    
        scanf("%d",&number);
        printf("count=%d\n",search(number));
            
        return 0;
    }
    
    
    /* 你的代码将被嵌在这里 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    输入样例:

    500
    
    • 1

    输出样例:

    count=6
    
    • 1
    int search(int n) {
        int cnt = 101, count = 0;;
        while (cnt <= n) {
            int m = 1;
            while (m <= sqrt(cnt)) {
                if (cnt == m * m) {
                    int a, b, c;
                    a = cnt % 10;
                    b = cnt % 100 / 10;
                    c = cnt / 100;
                    if (a == b || b == c || c == a)count++;
                }
                m++;
            }
            cnt++;
        }
        return count;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    实验10-3 递归函数 递归求阶乘和

    本题要求实现一个计算非负整数阶乘的简单函数,并利用该函数求 1!+2!+3!+…+n! 的值。

    函数接口定义:

    double fact( int n );
    double factsum( int n );
    
    • 1
    • 2

    函数fact应返回n的阶乘,建议用递归实现。函数factsum应返回 1!+2!+…+n! 的值。题目保证输入输出在双精度范围内。

    裁判测试程序样例:

    #include 
    
    double fact( int n );
    double factsum( int n );
    
    int main()
    {
        int n;
    
        scanf("%d",&n);
        printf("fact(%d) = %.0f\n", n, fact(n));
        printf("sum = %.0f\n", factsum(n));
            
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    输入样例1:

    10
    
    • 1

    输出样例1:

    fact(10) = 3628800
    sum = 4037913
    
    • 1
    • 2

    输入样例2:

    0
    
    • 1

    输出样例2:

    fact(0) = 1
    sum = 0
    
    • 1
    • 2
    double fact(int n) {
        int cnt = 1;
        int y = 1;
        if (n == 0) return y;
        for (cnt = 1; cnt <= n; cnt++) y *= cnt;
        return y;
    }
    
    double factsum(int n) {
        int cnt = 1;
        double sum = 0;
        if (n == 0) return sum;
        else {
            for (cnt = 1; cnt <= n; cnt++) sum = sum + fact(cnt);
        }
        return sum;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    实验10-4 递归函数 递归实现指数函数

    本题要求实现一个计算 x n x^n xn(n≥1)的函数。

    函数接口定义:

    double calc_pow( double x, int n );
    
    • 1

    函数calc_pow应返回xn次幂的值。建议用递归实现。题目保证结果在双精度范围内。

    裁判测试程序样例:

    #include 
    
    double calc_pow( double x, int n );
    
    int main()
    {
        double x;
        int n;
    
        scanf("%lf %d", &x, &n);
        printf("%.0f\n", calc_pow(x, n));
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    输入样例:

    2 3
    
    • 1

    输出样例:

    8
    
    • 1
    double calc_pow(double x, int n) {
        int m = 1;
        double y;
        y = 1;
        for (m = 1; m <= n; m++) y = y * x;
        return y;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    实验10-5 递归函数 递归求简单交错幂级数的部分和

    本题要求实现一个函数,计算下列简单交错幂级数的部分和: f ( x , n ) = x − x 2 + x 3 − x 4 + . . . + ( − 1 ) n − 1 x n f(x,n)=x-x^2+x^3-x^4+...+(-1)^{n-1}x^n f(x,n)=xx2+x3x4+...+(1)n1xn

    函数接口定义:

    double fn( double x, int n );
    
    • 1

    其中题目保证传入的n是正整数,并且输入输出都在双精度范围内。函数fn应返回上述级数的部分和。建议尝试用递归实现。

    裁判测试程序样例:

    #include 
    
    double fn( double x, int n );
    
    int main()
    {
        double x;
        int n;
        
        scanf("%lf %d", &x, &n);
        printf("%.2f\n", fn(x,n));
        
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    输入样例:

    0.5 12
    
    • 1

    输出样例:

    0.33
    
    • 1
    double fn(double x, int n) {
        if (n == 1) return x;
        else return pow(-1, n - 1) * pow(x, n) + fn(x, n - 1);
    }
    
    • 1
    • 2
    • 3
    • 4

    实验10-6 递归函数 递归计算Ackermenn函数

    本题要求实现Ackermenn函数的计算,其函数定义如下:
    在这里插入图片描述

    函数接口定义:

    int Ack( int m, int n );
    
    • 1

    其中mn是用户传入的非负整数。函数Ack返回Ackermenn函数的相应值。题目保证输入输出都在长整型范围内。

    裁判测试程序样例:

    #include 
    
    int Ack( int m, int n );
    
    int main()
    {
        int m, n;
        
        scanf("%d %d", &m, &n);
        printf("%d\n", Ack(m, n));
        
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    输入样例:

    2 3
    
    • 1

    输出样例:

    9
    
    • 1
    int Ack(int m, int n) {
        if (m == 0) return n + 1;
        else if (n == 0 && m > 0) return Ack(m - 1, 1);
        else if (m > 0 && n > 0)return Ack(m - 1, Ack(m, n - 1));
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    实验10-7 递归函数 递归求Fabonacci数列

    本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:
    f(n)=f(n−2)+f(n−1) (n≥2),其中f(0)=0,f(1)=1。

    函数接口定义:

    int f( int n );
    
    • 1

    函数f应返回第nFabonacci数。题目保证输入输出在长整型范围内。建议用递归实现。

    裁判测试程序样例:

    #include 
    
    int f( int n );
    
    int main()
    {
        int n;
        
        scanf("%d", &n);
        printf("%d\n", f(n));
        
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    输入样例:

    6
    
    • 1

    输出样例:

    8
    
    • 1
    int f(int n) {
        if (n == 0) return 0;
        else if (n == 1) return 1;
        else if (n >= 2) return f(n - 1) + f(n - 2);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    实验10-8 递归函数 递归计算P函数

    本题要求实现下列函数P(n,x)的计算,其函数定义如下:

    在这里插入图片描述
    函数接口定义:

    double P( int n, double x );
    
    • 1

    其中n是用户传入的非负整数,x是双精度浮点数。函数P返回P(n,x)函数的相应值。题目保证输入输出都在双精度范围内。

    裁判测试程序样例:

    #include 
    
    double P( int n, double x );
    
    int main()
    {
        int n;
        double x;
        
        scanf("%d %lf", &n, &x);
        printf("%.2f\n", P(n,x));
        
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    输入样例:

    10 1.7
    
    • 1

    输出样例:

    3.05
    
    • 1
    double P(int n, double x) {
        if (n == 0) return 1;
        else if (n == 1)return x;
        else if (n > 1) return ((2 * n - 1) * P(n - 1, x) - (n - 1) * P(n - 2, x)) / n;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    实验10-9 递归函数 十进制转换二进制

    本题要求实现一个函数,将非负整数n转换为二进制后输出。

    函数接口定义:

    void dectobin( int n );
    
    • 1

    函数dectobin应在一行中打印出二进制的n。建议用递归实现。

    裁判测试程序样例:

    #include 
    
    void dectobin( int n );
    
    int main()
    {
        int n;
        
        scanf("%d", &n);
        dectobin(n);
        
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    输入样例:

    10
    
    • 1

    输出样例:

    1010
    
    • 1
    void dectobin(int n) {
        if (n < 2)printf("%d", n);
        else {
            dectobin(n / 2);
            printf("%d", n % 2);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    实验10-10 递归函数 递归实现顺序输出整数

    本题要求实现一个函数,对一个整数进行按位顺序输出。

    函数接口定义:

    void printdigits( int n );
    
    • 1

    函数printdigits应将n的每一位数字从高位到低位顺序打印出来,每位数字占一行。

    裁判测试程序样例:

    #include 
    
    void printdigits( int n );
    
    int main()
    {
        int n;
        
        scanf("%d", &n);
        printdigits(n);
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    输入样例:

    12345
    
    • 1

    输出样例:

    1
    2
    3
    4
    5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    void printdigits(int n) {
        if (n < 10)
            printf("%d\n", n);
        else {
            printdigits(n / 10);
            printf("%d\n", n % 10);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    【技术】BootStrapTable 滚动条控制
    学习笔记-OS - Exploits
    git基础命令
    uniapp h5 MD5加密
    App测试中ios和Android的区别
    行泊一体「起跑」
    C++ string类介绍以及模拟实现
    分布式事务深度解析,刨根问底式面试
    java生成数据库数据到excel当做下拉选择,copy就完事~
    HT for Web (Hightopo) 使用心得(1)- 基本概念
  • 原文地址:https://blog.csdn.net/im34v/article/details/126707008