第十一章:双重循环

本文介绍了如何使用双重循环结构解决卡牌游戏中第一张牌组合的可能性问题,以及如何利用双重循环打印长方形和直角三角形的图形示例。通过实例展示了分析方法和编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、双重循环结构

小A和小B在玩卡牌游戏,每张卡牌上都有一个数,小A手里有3张卡牌,每个卡牌上的数字为1 2 3,小B手里有5张卡牌,分别为5 6 7 8 9,他们想知道每人手里拿出来的第一张卡牌,看看总共有多少种可能性。
【样例输出】
15
这道题,有两个变量,第一个是小A拿出的牌,第二个是小B拿出的牌。他们的可能分别在1 ~ 3,5 ~ 9之间。如果这是一道数学题,那么可以用枚举法解决,C++也可以枚举,对于两个变量的,可以用双重循环解决。
完整代码:

#include <iostream>

using namespace std;

int main() {
	int sum = 0;
	for (int i = 1; i <= 3; i++) for (int j = 5; j <= 9; j++) sum++;
	cout << sum << endl;
	return 0;
}

当然,你也可以输出每次的可能。

for (int i = 1; i <= 3; i++) {
	for (int j = 5; j <= 9; j++) {
		cout << i << " " << endl;
		sum++;
	}
}

或者,如果牌数不确定,也可以这样:

#include <iostream>

using namespace std;

int main() {
	int n, m, sum = 0;
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = n + 1; j <= m + n; j++) {
			cout << i << " " << endl;
			sum++;
		}
	}
	cout << sum << endl;
	return 0;
}

二、利用双重循环打印长方形

知道了双重循环后,就可以借助双重循环打印如下的长方体图形:

****
****
****

通过上面的代码和图形,我们可以推断出第一层循环是控制行,第二层循环控制列。
代码如下:

#include <iostream>

using namespace std;

int main() {
	int n, m;
	cin >> n >> m;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) cout << "*";
		cout << endl;
	}
	return 0;
}

三、打印直角三角形

&
&&
&&&
&&&&
&&&&&

要打印输出一个直角三角形,通过前面分析,外层循环控制行数,内层循环控制列数,总共是n行。可以先把双重循环结构的框架写出来。
代码如下:

#include <iostream>

using namespace std;

int main() {
	int n, m;
	cin >> n >> m;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < i; j++) cout << "&";
		cout << endl;
	}
	return 0;
}

四、分析

通过前面的分析,处理图形问题基本上可以概括如下方法和步骤:
分析方法

  1. 先确定行数
  2. 再确定列数
  3. 确定行号和列数之间的关系

打印图形遵循规则: 从上到下、从左到右依次打印输出。
循环控制: 外层循环控制行数,内层循环控制列数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值