• 第七次作业


    1. 定义一个判断素数的函数isprime(int n),利用该函数输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)

    #include<stdio.h>
    int isprime(int n);
    int main()
    {
        int m,n,i;
        for(m=0,i=2;i<=1000;i++)
        {
            if(isprime(i))
            {
                printf("%3d   ",i);
                m++;
                if(m%10==0)
            {
                printf("
    ");
            }
            }
        }
        printf("%d",m);
    }
    int isprime(int n)
    {
        int ia;
        for(ia=n-1;ia>=2;ia--)
        {
            if(n%ia==0)
            {
                return 0;
            }
         } 
         return 1;
    }

     2.求两个正整数的最大公约数和最小公倍数。用一个函数gcd(int a,int b)求最大公约数,另一个函数lcm(int a,int b)根据求出的最大公约数求最小公倍数。

    #include<stdio.h>
    int m;
    int gcd(int a,int b);
    int lcm(int a,int b);
    int main()
    {
        int x,y,n;
        scanf("%d %d",&x,&y);
        m=gcd(x,y);
        if(gcd(x,y))
        {
            n=x*y; 
            printf("没有公约数,最小公倍数为%d
    ",n);
        }
        else
        {
            n=lcm(x,y);
            printf("最大公约数为%d,最小公倍数为%d
    ",m,n);
        }
    }
    int gcd(int a,int b)
    {
        int ii,ia;
        for(ii=a;ii>=1;ii--)
        {
            if(a%ii==0&&b%ii==0)
            {
                return ii;
            }
        }
        return 0;
    }
    int lcm(int a,int b)
    {
        int i=1;
        while(1)
        {
            if(i%a==0&&i%b==0)
            {
                break;
            }
            else
            {
                i=i*m;
            }
        }
        return i;
    }

    3.编写一个函数fun(double x)求表达式x2-5x+4的值,x作为参数传给函数。在主函数中调用该函数求下列式子的值:

           y1= 22-5*2+4

           y2= (x+15)2-5*(x+15)+4

           y3= sin2x-5*sinx+4    

       求y3用数学函数 sin(x)  头文件math.h

       求解y2和y3时需要输入x的值。

       样例:

       y1=-2, x=0.5时,y2=166.75,y3=1.832721

    #include<stdio.h>
    #include<math.h>
    double fun(double x);
    int main()
    {
        double y3;
        int x,y1,y2;
        scanf("%d",&x);
        y1=fun(x);
        y2=fun(x+15);
        y3=fun(sin(x));
        printf("y1=%d,y2=%d,y3=%lf",y1,y2,y3);
    }
    double fun(double x)
    {
        double i;
        i=x*x-5*x+4;
        return i;
    }

     4.用函数实现:火柴棍等式问题。

    #include<stdio.h>
    int sum(int x);
    int main()
    {
        int x,y,z,i;
        for(x=0;x<=9;x++)
        {
            for(y=0;y<=9;y++)
            {
                for(z=0;z<=9;z++)
                {
                    if(x+y==z&&sum(x)+sum(y)+sum(z)==12)
                    {
                        printf("%d+%d=%d    ",x,y,z);
                    }
                }
            }
        }
    }
    int sum(int x)
    {
        int i;
        switch(x)
        {
            case 1 :i=2;break;
            case 7 :i=3;break;
            case 4 :i=4;break;
            case 5 :
            case 3 :
            case 2 :i=5;break;
            case 6 :
            case 9 :
            case 0 :i=6;break;
            case 8 :i=7;break;    
        }
        return i;
    }

    二、知识点总结

    1、函数声明只是告诉程序“我有这个函数”,而程序的反应是“我知道了,帮你看看”,只有在写这个函数时这个函数才真正具有内容。

    2、调用函数,可以在任何时候,其方式因函数种类而异。个人认为分两种,及自定义函数的调用和非自定义函数的调用。

    3、形参即“模板位置”,实参为“实际内容”,运算时实参被传递到形参代表的“模具位置”进行运算。

    4、全局(外部)变量应声明于所运用的函数之前。

    三、实验总结

    1、火柴问题中,要注意将“多对一”的问题交给switch解决,switch很难解决这种情况下的“一对多”问题。

    2、实验二中的全局变量实际多余......

  • 相关阅读:
    【Nginx】ngx_event_core_module模块
    ELMAH--Using HTTP Modules and Handlers to Create Pluggable ASP.NET Components 77 out of 90 rated th
    nyist oj 214 单调递增子序列(二) (动态规划经典)
    java 入门书籍(java7)
    ARCGIS将WGS84坐标投影到高斯平面
    【linux】linux下对java程序生成dump文件,并使用IBM Heap Analyzer进行分析,查找定位内存泄漏的问题代码
    【springboot】【socket】spring boot整合socket,实现服务器端两种消息推送
    【linux】linux修改open file 大小
    【docker】docker限制日志文件大小的方法+查看日志文件的方法
    【docker】docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志
  • 原文地址:https://www.cnblogs.com/wxc123/p/6083047.html
Copyright © 2020-2023  润新知