zoukankan      html  css  js  c++  java
  • 作业,7

    一、实验内容   

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

    复制代码

    #include<stdio.h>
    int sushu(int x);
    int main()
    {
    int i,a=0,b=0,c=0;
    for(i=2;i<=1000;i++)
    {
    if(sushu(i))
    {
    printf("%3d ",i);
    a++;
    if(a%10==0)
    {
    printf(" ");
    }
    }
    }
    printf(" 一共有%d个素数",a);
    }
    int sushu(int x)
    {
    int a,b;
    for(a=2;a<=x-1;a++)
    {
    if(x%a==0)
    {
    return 0;
    break;
    }
    if(a==x)
    {
    return 2;
    }
    }
    }

    复制代码

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

    复制代码

    #include<stdio.h>
    int gcd(int a,int b);
    int lcm(int a,int b);
    int main()
    {
    int a,b,c,d;
    printf("输入两个正整数,求最大约数和最小公倍数 ");
    scanf("%d%d",&a,&b);
    c=gcd(a,b);
    d=lcm(a,b);
    printf("最大公约数为%d最小公倍数为%d",c,d);
    return 0;
    }
    int gcd(int a,int b)
    {
    int r;
    while(1)
    {
    r=a%b;
    a=b;
    b=r;
    if(r==0)
    {
    return (a);
    break;
    }
    }
    }
    int lcm(int a,int b)
    {
    int r;
    r=(a*b)/gcd(a,b);
    return r;
    }

    复制代码

    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

    复制代码

    #include<stdio.h>
    #include<math.h>
    double fun(double x)
    {
    double y;
    y=x*x-5*x+4;
    return y;
    }
    int main()
    {
    double x,y1,y2,y3;
    printf("请输入x的数值 ");
    scanf("%lf",&x);
    y1=fun(2);
    y2=fun(x+15);
    y3=fun(sin(x));
    printf("y1=%.3lf,y2=%.3lf,y3=%.3lf",y1,y2,y3);
    return 0;
    }

    复制代码

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

    复制代码

    #include<stdio.h>
    int gun(int x);
    int main()
    {
    int a,b,c,d,e,f;
    for(a=0;a<=9;a++)
    for(c=0;c<=9;c++)
    {
    b=gun(a);
    d=gun(c);
    e=a+c;
    f=gun(e);
    // printf("%d %d %d ",b,d,f);
    if(b+d+f==12)
    {
    printf("%d+%d=%d ",a,c,e);
    }
    }
    return 0;
    }
    int gun(int e)
    {
    int g;
    if(e==1)
    g=2;
    if(e==2||e==3||e==5||e==17)
    g=5;
    if(e==4||e==11)
    g=4;
    if(e==6||e==9||e==0||e==14)
    g=6;
    if(e==7)
    g=3;
    if(e==8||e==12||e==13||e==15)
    g=7;
    if(e==16)
    g=8;
    if(e==18)
    g=9;
    return (g);
    }

    复制代码

    附加,函数万年历

    #include<stdio.h>
    #include<stdlib.h>
    int isValidate(int year,int month);             //  输入数据的合法性验证
    int isLeap(int year);                           //  判断闰年
    int days(int year,int month);                   //  计算某年某月的天数
    int totalDays(int year,int month);              //  计算某年某月到1900年1月1日的总天数
    void printCanlender(int year,int month);        //  输出万年历
    int main()
    {
        int a1,c1,month,year,day;
        while(a1!=1)
        {
            printf("请输入年份月份和日期,用空格隔开
    ");
            scanf("%d%d",&year,&month);
            if(isValidate(year,month))
            {
                printf("输入错误,请重新输入
    ");
                continue;
            }
            else
            {
                a1=1;
            }
        }
        system("CLS");
        printCanlender(year,month);
        return 0;
    }
    int isValidate(int year,int month)
    {
        if((year<1900)||(month>=13||month<=0))
        return 1;
        else
        return 0;
    }
    int isLeap(int year)
    {
        if((year%4==0&&year%100!=0)||(year%400==0))
        return 1;
        else
        return 0;
    }
    int totalDays(int year,int month)
    {
        int i1,sum1,sum2,sum,j1; 
        for(i1=1900,sum1=0;i1<=year-1;i1++)
        {
            if(isLeap(i1))
            {
                sum1=sum1+366;
            }
            else
            {
                sum1=sum1+365;
            }
        }
            for(j1=1,sum2=0;j1<=month-1;j1++)
            {
                if(j1==1||j1==3||j1==5||j1==7||j1==8||j1==10||j1==12)
                {
                    sum2=sum2+31;
                }
                else if(j1==4||j1==6||j1==9||j1==11)
                {
                    sum2=sum2+30;
                }
                else
                {
                    if(isLeap(i1))
                    {
                        sum2=sum2+29;
                    }
                    else
                    {
                        sum2=sum2+28;
                    }
                }
            }
        sum=sum1+sum2+1;
        return (sum);
    }
    int days(int year,int month)
    {
        int e1;
        if(month==4||month==6||month==9||month==11)      /*小月份*/ 
        {
            e1=30;
        }
        else if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)     /*大月份*/ 
        {
            e1=31;
        }
        else if(isLeap(year)&&month==2)     /*闰年二月份*/ 
        {
            e1=29;
        }
        else      /*平年二月份*/ 
        {
            e1=28;
        }
        return (e1);
    }
    void printCanlender(int year,int month)
    {
        int d1,b1,c1;
        c1=totalDays(year,month)%7;
        printf("星期日	星期一	星期二	星期三	星期四	星期五	星期六
    ");
        for(d1=c1;d1>0;d1--)
                {
                    printf("	");
                }
        for(b1=1;b1<=days(year,month);b1++)
            {
                printf("%-2d	",b1);
                if((b1+c1)%7==0)
                {
                    printf("
    ");
                }
            }    
    }

    二、知识点总结

    1、自定义函数要有一个返回值

    2、函数定义的基本格式:函数类型  函数名(形参)

     {

      说明部分

      语句部分

     }

    三、实验总结

    1.函数参数的数目和顺序,及各参数意义和类型。

    2.函数返回意义和类型。

  • 相关阅读:
    工业和信息化部“十二五”规划教材:阵列信号处理及MATLAB实现
    PHP 7从零基础到项目实战
    HTML+CSS网页设计详解
    新编 中文版Maya入门与提高
    Lua游戏AI开发指南
    这么设计能热卖:融入运营思维的电商设计进阶宝典(套装上下册)
    WCF初探-1:认识WCF
    用微信二维码登录自己的网站
    01-C语言基本知识
    「OC」内存管理
  • 原文地址:https://www.cnblogs.com/szy-65517610/p/6072834.html
Copyright © 2011-2022 走看看