|
|
|
Chapter 12Answers to Selected Exercises2. [was #2] The statement is illegal because pointers cannot be added. Here's a legal statement that has the desired effect: middle = low + (high - low) / 2; The value of 4. [was #6] int *top_ptr; void make_empty(void) { top_ptr = &contents[0]; } bool is_empty(void) { return top_ptr == &contents[0]; } bool is_full(void) { return top_ptr == &contents[STACK_SIZE]; } 6. [was #10; modified] int sum_array(const int a[], int n) { int *p, sum; sum = 0; for (p = a; p < a + n; p++) sum += *p; return sum; } 13. [was #12; modified] #define N 10 double ident[N][N], *p; int num_zeros = N; for (p = &ident[0][0]; p <= &ident[N-1][N-1]; p++) if (num_zeros == N) { *p = 1.0; num_zeros = 0; } else { *p = 0.0; num_zeros++; } 15. [was #14] int *p; for (p = temperatures[i]; p < temperatures[i] + 24; p++) printf("%d ", *p); Answers to Selected Programming Projects1. [was #4] (a) #include <stdio.h> #define MSG_LEN 80 /* maximum length of message */ int main(void) { char msg[MSG_LEN]; int i; printf("Enter a message: "); for (i = 0; i < MSG_LEN; i++) { msg[i] = getchar(); if (msg[i] == '\n') break; } printf("Reversal is: "); for (i--; i >= 0; i--) putchar(msg[i]); putchar('\n'); return 0; } (b) #include <stdio.h> #define MSG_LEN 80 /* maximum length of message */ int main(void) { char msg[MSG_LEN], *p; printf("Enter a message: "); for (p = &msg[0]; p < &msg[MSG_LEN]; p++) { *p = getchar(); if (*p == '\n') break; } printf("Reversal is: "); for (p--; p >= &msg[0]; p--) putchar(*p); putchar('\n'); return 0; } 3. [was #8] #include <stdio.h> #define MSG_LEN 80 /* maximum length of message */ int main(void) { char msg[MSG_LEN], *p; printf("Enter a message: "); for (p = msg; p < msg + MSG_LEN; p++) { *p = getchar(); if (*p == '\n') break; } printf("Reversal is: "); for (p--; p >= msg; p--) putchar(*p); putchar('\n'); return 0; } Copyright © 2008, 1996 W. W. Norton & Company, Inc. All rights reserved. |