美文网首页
C语言函数开发习题

C语言函数开发习题

作者: MXTeamXY | 来源:发表于2020-12-19 18:10 被阅读0次

    在我们编写一些较大程序时如果所有代码都在main函数里实现那么就会使得整个程序代码会出现非常多的重复代码,使得程序代码看起来繁琐、丑陋、恶心,导致严重缺乏可读性和可维护性。
    为了解决上面所说的问题,可以将一个大的程序分为若干个程序模块,每个模块用来实现一个特定的功能,这个程序模块就是“函数”。
    一个C语言的程序可由一个主函数和若干个其他函数构成,主函数可由调用其他的函数,其他函数也可以互相调用。同一个函数可由被一个或多个函数调用任意次。
    话不多说上题上码(附详细注释)。
    1、编写一函数,求:
    当x>1时,f(x)=x^2+1;
    当-1 <= x <= 1时,f(x)=x^2;
    当x<-1时,f(x)=x^2-1的值,要求:函数原型为double fnFun(double x);

    解题代码如下:
    #include <stdio.h>
    #include <stdlib.h>
    
    //声明fnFun函数,函数返回数据类型为双精度浮点小数型,此函数有一个形参
    double fnFun(double x);
    //定义 fnFun函数 
    double fnFun(double x)
    { 
        double sum;//初始返回值
        if(x>1)//如果x大于1 
        {
            sum=x*x+1;//返回x^2+1的值 
        }else if(x>=-1&&x<=1)//如果-1 <= x <= 1  
        {
            sum=x*x;//返回x^2的值 
        }else if(x<-1)//如果x<-1
        {
            sum=x*x-1;//返回x^2-1的值 
        }
        return sum;//返回sum到主体函数调用fnFun的结果
     } 
    
    main() //主体函数 
    {
        double sum1; 
        printf("请输入x的值:\n");
        scanf("%lf",&sum1);
        //调用fnFun函数输出结果 
        printf("f(%0.2lf)函数的值为:%0.2lf\n",sum1,fnFun(sum1)); 
    }
    
    运行结果:
    1.png
    2、用函数求1~n之和,要求:函数原型为long fnSum(int n);
    解题代码如下:
    #include <stdio.h>
    #include <stdlib.h>
    
    //声明fnSum函数,函数返回数据类型为long长整型,此函数有一个形参
    long fnSum(int n);
    long fnSum(int n)//定义 fnSum函数
    {
        int sum=0;//初始化返回值sum
        int i;
        for(i=1;i<=n;i++)//循环累加 
        {
            sum+=i;//sum=sum+i; 
        }
        //返回sum到主体函数调用fnSum的结果 
        return sum;
    }
    
    main()//主体函数 
    {
        int n1;
        printf("请输入n的值:\n");
        scanf("%ld",&n1);
        //调用fnSum函数输出结果 
        printf("1~%d的和为:%ld\n",n1,fnSum(n1));
     } 
    
    运行结果:
    2.png
    3、编写一函数判别某一数是否为素数,若是,返回值为1;否则,返回值为0.
    解题代码如下:
    #include <stdio.h>
    #include <stdlib.h>
    //声明sushu函数,函数返回数据类型为int整型,此函数有一个形参
    int sushu(int x);
    int sushu(int x)//定义sushu函数
    {
        int i;
        if(x==0||x==1)//0和1不是素数 
        {
            return 0;//返回0 
        }else if(x==2)//2是素数 
        {
            return 1;//返回1 
        }
        else{//如果x的值不符合上面两个判断条件则 
            for(i=2;i<x;i++)//执行循环取余 
            {//素数一个大于1的自然数,除了1和它本身外,不能被其他自然数整除
            //所以从2开始取余 
                if(x%i==0)//x取余i为0则不是素数 
                {
                    return 0;//返回0 
                }
                else{//否则返回1 
                    return 1;
                }
            }
        }
    }
    
    main()//主体函数 
    {
        int n;
        printf("请输入一个整数:\n");
        scanf("%d",&n);
        switch(sushu(n))//调用sushu(n)结果判断输出是否是素数 
        {
            case 0:printf("%d不是一个素数!\n",n);break;
            case 1:printf("%d是一个素数\n",n);break;
        }
    }
    
    运行结果:
    3.png

    4、用函数调用的方法求f(k,n)= 1^k + 2^k +...+n^k,其中k和n从键盘输入。

    解题代码如下:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h> 
    //声明fnSum函数,函数返回数据类型为long长整型,此函数有两个形参分别为n的值和k的值
    //因为幂运算数据长度较大因而需要使用long 
    long fnSum(int n,int k);
    long fnSum(int n,int k)//定义fnSum函数
    {
        //函数体部分
        int i;
        long sum=0;//初始化返回值sum
        for(i=1;i<=n;i++) //循环累加 
        {
            //pow函数为c语言中的math.h自带函数
            //如pow(2,3)=2^3=8 
            sum+=pow(i,k);//可以理解为sum=sum+pow(i,k); 
        }
        //返回sum到主体函数调用fnSum的结果 
        return sum;
    }
    
    //主体函数 
    main()
    {
        
        int n1,k1;//定义初始n1,k1 
        printf("请输入n的值:\n");
        scanf("%d",&n1);
        printf("请输入k的值:\n");
        scanf("%d",&k1);
        //调用fnSum函数输出结果 
        printf("1^%d+2^%d+...%d^%d=%ld\n",k1,k1,n1,k1,fnSum(n1,k1));
        
    }
    

    运行结果:

    4.png

    未完待续···

    完待续··

    待续·

    相关文章

      网友评论

          本文标题:C语言函数开发习题

          本文链接:https://www.haomeiwen.com/subject/nuscnktx.html