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;
}