C语言程序设计(第4版)何颜钦 课后习题随笔

/*#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使用函数求余弦的近似值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值