C primer plus(第六版) 第十章答案
#include<stdio.h>
#define MONTHS 12
#define YEARS 5
int main(void)
{
const float rain[YEARS][MONTHS] =
{
{
4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4, 2.4, 3.5, 6.6 },
{
8.5, 8.2, 1.2, 1.6, 2.4, 0.0, 5.2, 0.9, 0.3, 0.9, 1.4, 7.3 },
{
9.1, 8.5, 6.7, 4.3, 2.1, 0.8, 0.2, 0.2, 1.1, 2.3, 6.1, 8.4 },
{
7.2, 9.9, 8.4, 3.3, 1.2, 0.8, 0.4, 0.0, 0.6, 1.7, 4.3, 6.2 },
{
7.6, 5.6, 3.8, 2.8, 3.8, 0.2, 0.0, 0.0, 0.0, 1.3, 2.6, 5.2 },
};
int year, month;
float subtot, total;
printf(" YEAR RAINFALL (inches)\n");
for (year = 0, total = 0; year < YEARS; year++)
{
for (month = 0, subtot = 0; month < MONTHS; month++)
subtot += *(*(rain + year) + month);
printf("%5d %15.1f\n", 2010 + year, subtot);
total += subtot;
}
printf("\nThe yearly average is %.1f inches.\n\n", total / YEARS);
printf("MONTHLY AVERAGES:\n\n");
printf(" Jan Feb Mar Apr May Jun Jul Aug Sep Oct ");
printf(" Nov Dec\n");
for (month = 0; month < MONTHS; month++)
{
for (year = 0, subtot = 0; year < YEARS; year++)
subtot += *(*(rain + year) + month);
printf("%4.1f ",subtot / YEARS);
}
printf("\n");
return 0;
}
#include<stdio.h>
void copy_arr(double *target, double *source, int n);
void copy_ptr(double *target, double *source, int n);
void copy_ptrs(double *target, double *source_begin, double *source_end);
void print_copy(int n, double *arr);
int main()
{
double source[5] = {
1.1, 2.2, 3.3, 4.4, 5.5 };
double target1[5];
double target2[5];
double target3[5];
copy_arr(target1 , source, 5);
copy_ptr(target2 , source, 5);
copy_ptrs(target3 , source, source + 5);
print_copy(1 , target1);
print_copy(2 , target2);
print_copy(3 , target3);
return 0;
}
void copy_arr(double *target, double *source, int n)
{
for (int i = 0; i < n; i++)
target[i] = source[i];
}
void copy_ptr(double *target, double *source, int n)
{
for (int i = 0; i < n; i++)
*(target + i) = *(source + i);
}
void copy_ptrs(double *target, double *source_begin, double *source_end)
{
for (double *i = source_begin; i < source_end; i++)
*(target++) = *i;
}
void print_copy(int n, double *arr)
{
printf("Target%d: ", n );
for (int i = 0; i < 5; i++)
printf("%.2lf ",arr[i]);
printf("\n");
}
#include<stdio.h>
int ret_max(int arry[], int n);
int main