/*#include <stdio.h>
#include <math.h>
int prime(int m, int n);
int main(void)
{
int m, n, z;
printf("please enter m , n \n");
scanf("%d", &m);
scanf("%d", &n);
printf("%d", prime(m, n));
}
int prime(int m, int n)
{
int flag, limit, k, i, sum;
sum = 0;
int cnt = 0;
if (m == 1)
m = 2;
for (i = m; i <= n; i++)
{
int isPrime = 1;
for (k = 2; k < i - 1; k++)
{
if (i % k == 0)
{
isPrime = 0;
break;
}
if (isPrime)//布尔值 isPrime!=0.c语言里任何语句都可以成为表达式,而任何表达式都是可以求值的,
//有些表达的值可能没有意义,比如对返回值为void 的函数调用求值是没意义的,编译器可能会报错。
//if语句会对括号里的表达式求值,由于if语句只接受真和假两个值,而c语言中,0为假,其他一切非0值为真,if(x)表达的意义:如果x为真(即:x不为0)。
{
cnt++;
sum += i;
}
}
}
return sum;
}*/
/*#include <stdio.h>
int countdigit(int number, int digit);
int main(void)
{
int number, digit;
printf("Please enter number and digit.\n");
scanf("%d %d", &number ,&digit);
printf("zs=%d\n", countdigit(number,digit));
}
int countdigit(int number, int digit)
{
int z;
do
{
if (number % 10 == digit)
{
z++;
number = number / 10;
}
else if (number % 10 != digit)
{
number = number / 10;
}
} while (number >0);
return z;
}
*/
/*#include <stdio.h>
int is(int number);
int pow3(int n);
int main()
{
int m, n, i, cnt = 0;
printf("input m and n :");
scanf("%d %d", &m, &n);
if (m >= 1 && n <= 1000)
{
for (i = m; i <= n; i++)
{
if (is(i) == 1)
{
cnt++;
printf("%6d", i);
if (cnt % 10 == 0)
printf("\n");
}
}
}
else
{
printf("invalid value\n");
}
return 0;
}
// 判断是否为水仙花数
int is(int number)
{
int item = 0, sum = 0, i, temp;
temp = number;
while (temp > 0)
{
item = temp % 10;
sum += pow3(item);
temp /= 10;
}
if (sum == number) //各位数字的三次幂等于原数,即为水仙花数
return 1;
else
return 0;
}
// 避免使用math.h,自己写函数pow3计算n的三次幂
int pow3(int n)
{
return n * n * n;
}*/
#include <stdio.h>
#include <math.h>
double funcos( double e, double x );
int main()
{
double e, x;
scanf("%lf %lf", &e, &x);
printf("cos(%.2f) = %.6f\n", x, funcos(e, x));
return 0;
}
double funcos( double e, double x ) {
double item = 1.0; //单个cosx项目
double numerator = 1.0; //分子
double denominator = 1.0; //分母
double cosx = 1.0; //整个cosx项目,由n个item组成
int i; //cosx的项系数,从2开始,因为第一项等于1,已经一开始赋值了
int flag = -1; //cosx的项系数的正负号
for (i = 2; fabs(item) >= e; i+=2)
{
numerator *= x*x; //分子等于x*x,每多一项就再乘一次
denominator *= i*(i-1); //分母为阶乘,每多一项就多2位的阶乘
item = flag*numerator/denominator;
cosx = cosx + item; //cosx等于所有的item相加
flag *= -1; //第二项开始符号是负数,每次变号
}
return cosx;
}
P121 L7使用函数求余弦的近似值