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

Aeron-A發表於2018-12-06

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

/*
    本程式應 習題-9 建立。
      題目要求: 編寫一個程式,初始化一個double型別的3x5二維陣列,使用一個處理變長陣列的函式將其拷貝至另一個二維陣列中。
                 還要編寫一個以變長陣列為形參的函式以顯示兩個陣列的內容。這兩個函式應該能處理任意NxM陣列。
                 (如果編譯器不支援變長陣列,就使用傳統C函式處理Nx5的陣列。)
*/

#include<stdio.h>

#define I 3
#define O 5

void Cp(double (* a)[O], double (* b)[O]);

void Show(double  (* a)[O], double (* b)[O]);

int main(void)
{
	double a[I][O] = {};
	double b[I][O] = {};
	int y = 1;

	for (int c = 0; c < I; c++)
	{
		for (int d = 0; d < O; d++)
		{
			*(*(b+c) + d ) = y;
			y++;
		}
	}

	Cp(a, b);
	Show(a, b);

	printf("\nBye !\n");

	getchar();

	return 0;
}

void Cp(double  (* a)[O], double (* b)[O])
{
	for (int c = 0; c < I; c++)
	{
		for (int d = 0; d < O; d++)
		{
			*(*(a+c) + d ) = *(*(b+c) + d ) ;
		}
	}

	return;
}

void Show(double  (* a)[O], double (* b)[O])
{
	for (int c = 0; c < I; c++)
	{
		for (int d = 0; d < O; d++)
		{
			*(*(a+c) + d ) = *(*(b+c) + d ) ;
			printf("The array is : %lf.\n",  *(*(a+c) + d ) );
		}
	}

	return;
}

 

相關文章