C primer plus 第六版 第十章 第十三題 程式設計練習答案

Aeron-A發表於2018-12-06

Github地址:φ(>ω<*)這裡這裡。

/*
    本程式應 習題-13 建立。
     題目要求: 編寫一個程式,提示使用者輸入3組數,每組數包含5個double型別的數。
                                                (假設使用者都正確地響應,不會輸入非數值資料)。

           該程式應完成下列任務。
    a. 把使用者輸入的資料儲存在3X5的陣列中。
    b. 計算每組(5個)資料的平均值。
    c. 計算所有資料的平均值。
    d. 找出這15個資料中的最大值。
    e. 列印結果。

      每個任務都要用單獨的函式來完成(使用傳統C處理陣列的方式)。
      完成任務b,要編寫應計算並返回一維陣列平均值的函式,利用迴圈呼叫該函式3次。
      對於處理其他任務的函式,應該把整個陣列作為引數,完成任務c和d的函式應把結果返回主函式。
*/

#include<stdio.h>

void a(int f[][5], int n);
int b_2(int f[][5], int n);
int c(int f[][5], int n);
int d(int f[][5], int n);
void e(int n);


int main(void)
{
	int i = 0;   
	int r = 0;   // 任務b .
	int av = 0;  // 任務c .
	int b = 0;   // 任務d .

	int f[3][5] = { 0 };

	// 任務a .
	a(f, 3);

	//任務b .
	for (i = 0; i < 3; i++)
	{
		r = b_2(f, i);
		printf("\n第%d行的平均值為%d.\n", i + 1, r);
	}

	putchar('\n');

	// 任務c .
	av = c(f, 3);
	printf("所有資料的平均值是 %d .\n", av);
	putchar('\n');

	// 任務d .
	b = d(f, 3);

	//任務e .
	e(b);
	putchar('\n');

	printf("\nBye !\n");

	getchar();

	return 0;
}

void a(int f[][5], int n)
{
	int i = 0;
	int j = 0;

	printf("Please input fifteen value :");

	for (i = 0; i < n; i++)
	{
		for (j = 0; j < 5; j++)
		{
			scanf("%d", &f[i][j]);
		}
	}

	putchar( getchar() );
	printf("\nPart a is over !\n\n");

	return;
}

int b_2(int f[][5], int n)
{
	int av = 0;  // Average 平均值。
	int j = 0;

	for (j = 0; j < 5; j++)
	{
		av += f[n][j];
	}

	return av / 5;
}

int c(int f[][5], int n)
{
	int i = 0;
	int j = 0;
	int av = 0;

	for (i = 0; i < n; i++)
	{
		for (j = 0; j < 5; j++)
		{
			av += f[i][j];
		}
	}

	return av / 15;
}

int d(int f[][5], int n)
{
	int i = 0;
	int j = 0;
	int b = 0;

	for (i = 0; i < n; i++)
	{
		for (j = 0; j < 5; j++)
		{
			if (b < f[i][j])
			{
				b = f[i][j];
			}
			else
			{
				// 空語句。
				;
			}
		}
	}

	return b;
}

void e(int n)
{
	printf("\n最大的值是 %d", n);

	return;
}

 

相關文章