当前位置: 首页 > article >正文

【C++ Primer Plus学习记录】嵌套循环和二维数组

目录

 1.初始化二维数组

2.使用二维数组


for循环是一种处理数组的工具。下面进一步讨论如何使用嵌套for循环中来处理二维数组。

C++没有提供二维数组类型,但是用户可以创建每个元素本身都是数组的数组。例如,假设要存储5个城市在4年间的最高温度,可以这样声明数组:

int maxtemps[4][5];

该声明意味着maxtemps是一个包含4个元素的数组,其中每个元素都是一个由5个整数组成的数组。可以将maxtemps数组看作4行组成,其中每一行有5个温度值。

表达式maxtemps[0]是maxtemps数组的第一个元素,因此maxtemps[0]本身就是一个由5个int组成的数组。maxtemps[0]数组的第一个元素是maxtemps[0][0],该元素是一个int。因此,需要使用两个下标来访问int元素。可以认为第一个下标表示行,第二个下标表示列(如下图)。

假设要打印数组所有的内容,可以用一个for循环来改变行,用另一个被嵌套的for循环来改变列:

for(int row = 0;row < 4;row++)
{
   for(int col = 0;col < 5;++col)//对于每个row值,内部的for循环将遍历所有的col值
      cout << maxtemps[row][col] << "\t";//在每个值之后打印一个制表符
   cout << endl;//打印完每行后,打印一个换行符
}

 1.初始化二维数组

创建二维数组时,可以初始化其所有元素。这项技术建立在一维数组初始化技术的基础之上:提供由逗号分隔的用花括号括起的值列表:

int btus[5] = {23,26,24,31,28};

对于二维数组来说,由于每个元素本身就是一个数组,因此可以使用与上述代码类似的格式来初始化每一个元素。因此,初始化由一系列逗号分隔的一维数组初始化(用花括号括起)组成:

int maxtemps[4][5] = 
{
   {96,100,87,101,105},   //values for maxtemps[0]
   {96,98,91,107,104},    //values for maxtemps[1]
   {97,101,93,108,107},   //values for maxtemps[2]
   {98,103,95,109,108}    //values for maxtemps[3]
};

可将数组maxtemps包含4行,每行包含5个数字。

2.使用二维数组

程序清单5.20初始化了一个二维数组,并使用了一个嵌套循环。这一次,循环的顺序相反,将列循环(城市索引)放在外面,将行循环(年份索引)放在里面。

另外,它还采用了C++常用的做法,将一个指针数组初始化为一组字符串常量。也就是说,将cities声明为一个char指针数组。这使得每个元素(如cities[0])都是一个char指针,可被初始化为一个字符串的地址。

//5.20
#if 1
#include<iostream>
using namespace std;
const int Cities = 5;
const int Years = 4;

int main()
{
	const char * cities[Cities] =
	{
		"Gribble City",
		"Gribbletown",
		"New Gribble",
		"San Gribble",
		"Gribble Vista"
	};

	int maxtemps[Years][Cities] = 
	{
		{ 96, 100, 87, 101, 105 },   //values for maxtemps[0]
		{ 96, 98, 91, 107, 104 },    //values for maxtemps[1]
		{ 97, 101, 93, 108, 107 },   //values for maxtemps[2]
		{ 98, 103, 95, 109, 108 }    //values for maxtemps[3]
	};

	cout << "Maximum temperatures for 2008 - 2011\n\n";
	for (int city = 0; city < Cities; city++)
	{
		cout << cities[city] << ":\t";
		for (int year = 0; year < Years; year++)
			cout << maxtemps[year][city] << "\t";
		cout << endl;
	}
	system("pause");
	return 0;
}
#endif


http://www.kler.cn/a/153051.html

相关文章:

  • 营销系统规则引擎
  • uni-app+ts----微信小程序锚点定位 、自动吸顶、滚动自动选择对应的锚点(点击tab跳转对应的元素位置)
  • 基于Spring、SpringMVC、MyBatis的外卖点餐网站
  • 【数据结构】初识排序 直接插入排序
  • Google Analytics(谷歌分析)是什么以及如何使用
  • 电商营销场景的RocketMQ实战01-RocketMQ原理
  • C语言贪吃蛇(有详细注释)
  • 四个方法,设置excel文件只读模式
  • C++相关闲碎记录(3)
  • 模糊C均值(Fuzzy C-means,FCM)聚类的可运行的python程序代码,复制即可用!!切记需要安装库 scikit-fuzzy
  • MFC、VC++操作excel后,excel程序进程无法正常退出的非暴力处理方法
  • 【Java SE】泛型
  • 高德Map
  • 基于web的舞蹈选课管理系统设计与实现
  • 反转链表的Java实现
  • Elasticsearch(ES)概述
  • 【python学习】Python 线程编程(类内多线程编程)
  • 分治算法——75. 颜色分类
  • Leetcode 2948. Make Lexicographically Smallest Array by Swapping Elements
  • 一文带你了解网络安全简史