C语言程序设计现代方法_第二版,CH9第九章练习题(Exercises)

CH9_1

//两处错误,下为改正后函数:
double triangle_area(double base, double height)
{
    double product;

    product = base * height;
    return product / 2;
}

CH9_2

int check(int x, int y, int n) 
{
	return x >= 0 && x <= n && y >= 0 && y <= n;
}

CH9_3

int gcd(int m, int n) 
{
	int t;
	while (n != 0) {
		t = m % n;
		m = n;
		n = t;
	}

	return m <= 0 ? -m : m;
}

CH9_4

int day_of_year(int month, int day, int year) 
{
	int days = day;
	int m[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
	if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
		m[1]++;
	}
	for (int i = 0; i < month-1; i++) {
		days += m[i];
	}

	return days;
}

CH9_5

int num_digits(int n)
{
    int digits = 0;

    while (n > 0) {
        n /= 10;
        digits++;
    }

    return digits;
}

CH9_6

int digit(int n, int k)
{
    int digit = -1;

    while (k > 0) {
        digit = n % 10;
        n /= 10;
        k--;
    }
    return digit;
}

CH9_7

All right

CH9_8

(a)and(b)are valid prototypes

CH9_9

i = 1, j = 2

CH9_10

(a):
int largest(int a[], int n)
{
    int i, largest = a[0];

    for (i = 1; i < n; i++) {
        if (a[i] > largest)
            largest = a[i];
    }

    return largest;
}

(b):
double average(int a[], int n)
{
    int i;
    double sum = a[0];

    for (i = 1; i < n; i++)
        sum += a[i];

    return sum / n;
}

(c):
int positive_number(int a[], int n)
{
    int i, count = 0;

    for (i = 0; i < n; i++) {
        if (a[i] > 0)
            count++;
    }

    return count;
}

CH9_11

double average(char grades[], int n)
{
    int i;
    double sum = 0;
    for (i = 0; i < n; i++) {
        switch (toupper(grades[i])) {   //<ctype.h> wanted
        case 'A':   sum += 4.0;
            break;
        case 'B':   sum += 3.0;
            break;
        case 'C':   sum += 2.0;
            break;
        case 'D':   sum += 1.0;
            break;
        }
    }

    return sum / n;
}

CH9_12

double inner_product(double a[], double b[], int n)
{
    int i;
    double sum = 0;

    for (i = 0; i < n; i++) {
        sum += a[i] * b[i];
    }

    return sum;
}

CH9_13

int evaluate_position(char board[8][8])
{
    int white = 0, black = 0;
    int row, col;

    for (row = 0; row < 8; row++) {
        for (col = 0; col < 8; col++) {
            switch (board[row][col]) {
            case 'Q':   white += 9; 
                break;
            case 'R':   white += 5; 
                break;
            case 'B':
            case 'N':   white += 3; 
                break;
            case 'P':   white += 1; 
                break;
            case 'q':   black += 9;
                break;
            case 'r':   black += 5;
                break;
            case 'b':
            case 'n':   black += 3; 
                break;
            case 'p':   black += 1;
                break;
            }
        }
    }

    return black - white;
}

CH9_14

bool has_zero(int a[], int n)
{
    int i, count = 0;

    for (i = 0; i < n; i++) {
        if (a[i] == 0) {
            count++;
        }
    }
//怀疑此题翻译有错误,给出条件并非全集,有错误
    if (count == 0) {
        return true;
    }
    else if (count == n) {
        return false;
    }
}

CH9_15

double median(double x, double y, double z)
{
    int mid = x;

    if ((y - x) * (z - y) >= 0)
        mid = y;
    else if ((z - y) * (x - z) >= 0)
        mid = z;

    return mid;
}

CH9_16

int fact(int n)
{
	return n <= 1 ? 1 : n * fact(n - 1);
}

CH9_17

int fact(int n)
{
    int i, sum = 1;
    for (i = 2; i <= n; i++)
        sum *= i;

    return sum;
}

CH9_18

int gcd(int m, int n)
{
	if (n == 0) {
		return m <= 0 ? -m : m;
	}
	else {
		gcd(n, m % n);
	}
}

CH9_19

//该函数将一个数输出为二进制形式
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值