题目:

编写一个程序,声明一个int类型的3*5二维数组,并用合适的值初始化它。

  1. 该程序打印数组中的值,然后各值翻倍(即是原来的2倍),并显示出各个元素的新值。
  2. 编写一个函数显示数组的内容,再编写一个函数把各元素的翻倍。
  3. 这两个函数都以函数名和行数作为参数。

分析:

写2个函数即可。

  1. 翻倍函数,用于使原值翻倍
  2. 打印函数,用于打印新值的结果

代码实现:

#include <stdio.h>
#include <assert.h>

#define ROWS 3
#define COLS 5

void Print_arr(const int arr[][COLS], int rows)
{
	assert(arr);
	
	int i = 0;
	int j = 0;

	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < COLS; j++)
		{
			printf("%-2d ", arr[i][j]);
		}
		printf("\n");
	}
}

void Double_arr(int arr[][COLS], int rows)
{
	assert(arr);

	int i = 0;
	int j = 0;

	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < COLS; j++)
		{
			arr[i][j] *= 2;
		}
	}
}

int main()
{
	//声明
	int arr[ROWS][COLS] = { {1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15} };

	//打印原值
	printf("原值为:\n");
	Print_arr(arr, ROWS);

	//原值翻倍
	Double_arr(arr, ROWS);

	//打印新值
	printf("\n新值为:\n");
	Print_arr(arr, ROWS);

	return 0;
}

运行结果:

C Primer Plus 中文第6版 10.13 第11题_#include