|
|
|
|
|
|
![]() 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. |