C语言嵌套循环打印多维数组遇到一个问题,特此记录

文章描述了一位编程学习者在尝试用嵌套循环打印二维浮点数数组时遇到的问题,只打印了第一组而未打印第二组。问题出在内循环变量未正确初始化。解决方案是为内循环重新定义局部变量l,确保每次循环开始时l的值为0,从而满足循环条件,成功打印所有数组元素。
摘要由CSDN通过智能技术生成

背景:

今天学了多维数组,上机实践,用嵌套循环打印,遇到一个问题。


问题描述

问题:只打印了第一组,没有打印第二组。

要打印的数组:

float arr[2][3] =
	{
		{1.0,1.2,1.3},//下标(0.0)、(0.1)、(0.2)
		{2.0,2.1,2.3} //下标 (1.0)、(1.1)、(1.2)
	};

有误的代码:

#include <stdio.h>

int main(void)
{
	//二维数组
	float arr[2][3] =
	{
		{1.0,1.2,1.3},//下标(0.0)、(0.1)、(0.2)
		{2.0,2.1,2.3} //下标 (1.0)、(1.1)、(1.2)
	};

	//初始化变量
	int i = 0;
	int l = 0;

	//内嵌循环,进行打印
	for (i; i < 2; i++)
		for (l; l < 3; l++)
			printf("%.1f\n",arr[i][l]);
	return 0;
}

运行结果:


原因分析:

内循环没有按原本的假想进行第二次循环。

思考:内循环为什么不随着外循环不进行第二次

//初始化变量
	int i = 0;
	int l = 0;

	//内嵌循环,进行打印
	for (i; i < 2; i++)
		for (l; l < 3; l++)
			printf("%.1f\n",arr[i][l]);

经过分析得:

因为内循环使用的变量不是本身的,而是外部的。

具体:

(1)随着外循环第一次的结束,内循环也结束,但内循环中的变量l的值也变成了3。(2)当外循环进行第二次的时候,内循环的初始值调用外部变量l,但现在变量l的值是3,使得初始值不是0,而是3,不符合循环条件。


解决方案:

请查看更改后的代码:

#include <stdio.h>

int main(void)
{
	//二维数组
	float arr[2][3] =
	{
		{1.0,1.2,1.3},//下标(0.0)、(0.1)、(0.2)
		{2.0,2.1,2.3} //下标 (1.0)、(1.1)、(1.2)
	};

	//初始化变量
	int i = 0;
	int l = 0;

	//内嵌循环,进行打印
	for (i; i < 2; i++)
		for (l=0; l < 3; l++)
			printf("%.1f\n",arr[i][l]);
	return 0;
}

运行结果:

 解决思路:

(1)因为我们所写代码的原因,使得内循环的初始值用的是外部的。

(2)既然不能使用外部的,那么我们就使用的内部的,所以进行了for (l=0; l < 3; l++)。l=0,对初始值进行定义,使得每次循环他的初始值都是0,0<3,满足条件,进行循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值