The C Primer Plus 第十章答案

10.13.2

#include<stdio.h>
#include<stdlib.h>
void copy_arr(double target1[], double s[], int);
void copy_ptr(double target2[], double s[], int);
int main(void)
{
	double source[5] = { 1.1,2.2,3.3,4.4,5.5 };
	double target1[5];
	double target2[5];

	copy_arr(target1, source, 5);
	copy_ptr(target2, source, 5);


	putchar('\n');
	system("pause");
	return 0;
}
void copy_arr(double target1[], double s[], int n)
{
	int i;
	for (i = 0; i<n; i++)
	{
		*(target1 + i) = *(s + i);
		printf("%4.1f", target1[i]);
	}
	putchar('\n');
}
void copy_ptr(double target2[], double s[], int n)
{
	double *pt;
	pt = s;
	int i;
	for (i = 0; i < n; i++)
	{
		target2[i] = pt[i];
		printf("%4.1f", target2[i]);
	}
}
10.13.13
#include<stdio.h>
#define ROWS 3
#define COLS 5
void get_number(double arr[][COLS]);
void get_average(const double arr[][COLS ]);
double get_totalaver(const double arr[][COLS]);
double get_max(const double(*ptr)[COLS]);
int main(void)
{
	double max;
	double orig[ROWS][COLS];
	printf("请输入15个数:\n");
	get_number(orig);
	get_average(orig);
	printf("所有数据的平均值为:%g\n", get_totalaver(orig));
	max=get_max(orig);
	printf("最大值为:%g\n", max);
	return 0;
}
void get_number(double arr[][COLS])
{
	int i, j;
	for(i=0;i<ROWS;i++)
		for (j = 0; j < COLS; j++)
		{
			scanf("%lf",&arr[i][j]);
		}
	getchar();
}
void get_average(const double arr[][COLS])
{
	double tot;
	int i;
	int j;
	for (i = 0; i < ROWS; i++)
	{
		tot = 0;
		for (j = 0; j < COLS; j++)
		{
			tot += arr[i][j];

		}
		printf("第%d组数的平均值:%g\n",i+1,tot/COLS);
	}

}
double get_totalaver(double arr[][COLS])
{
	int r, c;
	double total=0;
	for (r = 0; r < ROWS; r++)
	{
		for (c = 0; c < COLS; c++)
		{
			total += arr[r][c];
		}
	}
	return total / (ROWS*COLS);
}
double get_max(const double arr[][COLS])
{
	int r, c;
	double max=arr[0][0];
	for (r = 0; r < ROWS; r++)
	{
		for (c = 1; c < COLS; c++)
		{
			if (max < arr[r][c])
				max = arr[r][c];
		}
	}
	return max;
}

猜你喜欢

转载自blog.csdn.net/qq_42543697/article/details/82387678