C Primer plus 第九章

编程练习

1.

#include <stdio.h>
double min(double, double);
int main(void)
{
    double a, b;

    printf("Enter two double:");
    scanf("%lf %lf", &a, &b);
    printf("The smaller is %lf.\n", min(a,b));
    return 0;
}

double min(double x, double y)
{
    if (x < y)
        return x;
    if (y < x)
        return y;
}

很简单的函数,白送。

2.

#include <stdio.h> 
void chline(char , int , int );
int main(void)
{
    int x, y;
    char ch;

    printf("Please enter the char: ");
    scanf("%c", &ch);
    printf("Enter teo int:");
    scanf("%d %d", &x, &y);
    chline(ch, x, y);
    return 0;
}

void chline(char ch, int i, int j)
{
    int k;
    for(k = 1; k < i; k++)
        printf(" ");
    for( ; k <= j; k++)
        printf("%c", ch);
    printf("\n");
}

依旧白送。

3.

#include <stdio.h> 
void line(char, int, int);
int main(void)
{
    int x, y;
    char ch;

    printf("Please enter the letter: ");
    scanf("%c", &ch);
    printf("links and row?");
    scanf("%d %d", &x, &y);
    line(ch, x, y);
    return 0;
}

void line(char ch, int link, int row)
{
    int m, n;
    for(m = 0; m < row; m++)
    {
        for(n = 0; n < n; n++)
            printf("%c", ch);
        printf("\n");
    }
}

两个for的使用让我想起python了。。。。。

4.

double calculate(double num1, double num2)
{
    return 1 / ((1/num1) + (1/num2));
}

5.

double larger_of(double *x, double *y)
{
    *x = *y = *x>*y?*x:*y;
}

指针用法。

6.

#include <stdio.h> 
#include <ctype.h>
int ABC(char);

int main(void)
{
    char ch;

    printf("Enter a letter:");
    scanf("%c", &ch);
    printf("Position is %d", ABC(ch));
    return 0;
}

int ABC(char ch)
{
    if(isalpha(ch))
        return tolower(ch) - 'a' + 1;
    else
        return -1;
}

9.

#include <stdio.h>
void to_base_n(unsigned long n,unsigned int base);

int main(void)
{
    unsigned long number;
    unsigned int base;
    printf("Enter an integer(q to quit): \n");
    while(scanf("%lu %u", number, base) == 2)
    {
        printf("Binary equivalent: ");
        to_base_n(number, base);
        putchar('\n');
        printf("Enter an integer(q to quit): \n");
    }
    printf("Done.\n");
    return 0;
}

void to_base_n(unsigned long n, unsigned int base)
{
    int r;
    r = n % base;
    if(n >= 2)
        to_base_n(n / base, base);
    putchar('0' + r);

    return;
}

void to_base_n(unsigned long n, unsigned int base)
{
    int r;
    r = n % base;
    if(n >= 2)
        to_base_n(n / base, base);
    putchar('0' + r);

    return;
}

10.

#include <stdio.h>
long Fibonacci(int n);

int main(void)
{
    int n;

    printf("Enter an integer:");
    while((scanf("%d", &n)) == 1)
    {
        printf("The term %d of Fibonacci is %d", n, Fibonacci(n));
        printf("Enter an integer:");
    }
    printf("Done.\n");
    return 0;
}

long Fibonacci(int n)
{
    int n1, n2, i, temp;
    if(n > 2)
        for(n1 = 1, n2 = 1, i = 3; i <= n; i++)
        {
            temp = n1 + n2;
            n1 = n2;
            n2 = temp;
        }
    else 
        n2 = 1;
    return n2;
}       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值