Home Books by K. N. King Short courses Recommended books Recommended links FAQ

### Chapter 8

#### Answers to Selected Exercises

1. [was #4] The problem with `sizeof(a)` `/` `sizeof(`t`)` is that it can't easily be checked for correctness by someone reading the program. (The reader would have to locate the declaration of `a` and make sure that its elements have type t.)

2. [was #8] To use a digit `d` (in character form) as a subscript into the array `a`, we would write `a[d-'0']`. This assumes that digits have consecutive codes in the underlying character set, which is true of ASCII and other popular character sets.

7. [was #10]

```const int segments[10][7] = {{1, 1, 1, 1, 1, 1},
{0, 1, 1},
{1, 1, 0, 1, 1, 0, 1},
{1, 1, 1, 1, 0, 0, 1},
{0, 1, 1, 0, 0, 1, 1},
{1, 0, 1, 1, 0, 1, 1},
{1, 0, 1, 1, 1, 1, 1},
{1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 0, 1, 1}};
```

#### Answers to Selected Programming Projects

2. [was #2]

```#include <stdio.h>

int main(void)
{
int digit_count[10] = {0};
int digit;
long n;

printf("Enter a number: ");
scanf("%ld", &n);

while (n > 0) {
digit = n % 10;
digit_count[digit]++;
n /= 10;
}

printf ("Digit:      ");
for (digit = 0; digit <= 9; digit++)
printf("%3d", digit);
printf("\nOccurrences:");
for (digit = 0; digit <= 9; digit++)
printf("%3d", digit_count[digit]);
printf("\n");

return 0;
}
```

5. [was #6]

```#include <stdio.h>

#define NUM_RATES ((int) (sizeof(value) / sizeof(value[0])))
#define INITIAL_BALANCE 100.00

int main(void)
{
int i, low_rate, month, num_years, year;
double value[5];

printf("Enter interest rate: ");
scanf("%d", &low_rate);
printf("Enter number of years: ");
scanf("%d", &num_years);

printf("\nYears");
for (i = 0; i < NUM_RATES; i++) {
printf("%6d%%", low_rate + i);
value[i] = INITIAL_BALANCE;
}
printf("\n");

for (year = 1; year <= num_years; year++) {
printf("%3d    ", year);
for (i = 0; i < NUM_RATES; i++) {
for (month = 1; month <= 12; month++)
value[i] += ((double) (low_rate + i) / 12) / 100.0 * value[i];
printf("%7.2f", value[i]);
}
printf("\n");
}

return 0;
}
```

8. [was #12]

```#include <stdio.h>

#define NUM_QUIZZES  5
#define NUM_STUDENTS 5

int main(void)
{
int high, low, quiz, student, total;

for (student = 0; student < NUM_STUDENTS; student++) {
printf("Enter grades for student %d: ", student + 1);
for (quiz = 0; quiz < NUM_QUIZZES; quiz++)
}

printf("\nStudent  Total  Average\n");
for (student = 0; student < NUM_STUDENTS; student++) {
printf("%4d      ", student + 1);
total = 0;
for (quiz = 0; quiz < NUM_QUIZZES; quiz++)
printf("%3d     %3d\n", total, total / NUM_QUIZZES);
}

printf("\nQuiz  Average  High  Low\n");
for (quiz = 0; quiz < NUM_QUIZZES; quiz++) {
printf("%3d     ", quiz + 1);
total = 0;
high = 0;
low = 100;
for (student = 0; student < NUM_STUDENTS; student++) {
if (grades[student][quiz] > high)
if (grades[student][quiz] < low)