C語言練習-泰勒展開/第多少天/四個數的最大公約數

1.sin(x)的泰勒展開

#include<stdio.h>
#define pi 3.1415926
double mysin(double x);

double fact(double x);
int main( )
{
    double aa,bb;
    aa=mysin(pi/2);
    bb=mysin((56.0/180)*pi);
    printf("sin90 is %.5f\n", aa);
    printf("sin56 is %.5f\n", bb);
    return 0;
}


double mysin(double x)
{
    double fx=0,item;  // fx清零,否則第二次調用會累加第一次的結果
    double i,n=1,flag=1;
    do
    {
        item=1;
//        printf("*%f,%f,%f\n",flag,n,x);
        for(i=1;i<=n;i++)
            item *= x;
//        printf("**%f,%f,%f\n",flag,n,x);
        item = item/fact(n);
        fx += item*flag;
        n += 2;
        flag = -flag;
//        printf("***%f,%f,%f\n",flag,n,x);
    }while(item>=0.00001);

    return fx;
}


double fact(double x)
{
    double ret;
    if(x==1)
        ret=1;
    else
        ret=x*fact(x-1);
    return ret;
}

2.當天是該年的第多少天

#include<stdio.h>
int days(int y, int m, int d);
int main()
{
    int year, month, day;
    printf("Enter the date xxxx xx xx: \n");
    scanf("%d %d %d",&year,&month,&day);
    printf("the date should be the %dth day of the year.\n", days(year, month, day));
    return 0;
}

int days(int y, int m, int d)
{
    int ds[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int cnt,ret;
    if((y%400==0) || (y%4==0&&y%100!=0))
        ds[2]=29;
    for(cnt=1;cnt<m;cnt++)
    {
        ret +=ds[cnt];
    }
    ret += d;
    return ret;

}

3.求四個數的最大公約數

int gcd(int a,int b)
{
    int i1,i2=1,max=1;
    int ulimit;
    ulimit =(a<b)?a:b;
    for(i1=1;i1<=ulimit;i1++)
    {
        if(a%i1==0 && b%i1==0)
        {
            max=(i1>i2)?i1:i2;
            i2=max;
        }
    }
    return max;
}

int gcds(int x,int y,int z,int w)
{
    int x1,x2,res;
    x1=gcd(x,y);
    x2=gcd(z,w);
    res=gcd(x1,x2);
    return res;
}

int main()
{
    int a,b,c,d,g;
    scanf("%d %d %d %d",&a,&b,&c,&d);
    g=gcds(a,b,c,d);
    printf("%d\n",g);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_38486169/article/details/86484060