栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言行列的互换及常见的错误类型

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言行列的互换及常见的错误类型

c语言行列的互换

正确代码:

#include
void main()
{
	int a[2][3] = { {1,2,3},{4,5,6} }, i, j, b[3][2];
	for (i = 0; i < 2; i++)
	{
		for(j=0;j<3;j++)
		b[j][i] = a[i][j];
	}
	for (i = 0; i < 2; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%d ", b[i][j]);
		}
		printf("n");
	}
}

输出结果

1 4 2

2 5 3

注意点:一定是将互换后的数组元素重新放在一个数组中,而不是互换直接打印。

错误代码1:

#include
void main()
{
	int a[2][3] = { {1,2,3},{4,5,6} }, i, j, b[3][2];
	for (i = 0, j = 0; i < 3, j < 3; i++, j++)
	{
		b[j][i] = a[i][j];
	}
	for (i = 0, j = 0; i < 3, j < 3; i++, j++)
	{
		printf("%d", b[i][j]);
		if(i==j)
			printf('n');
	}
}
1

这种错误的点在于将双层循环改编成了单层,看似代码简短了不少,但实则逻辑已经发生了改变。

错误在于:变量i和j都是同时循环的,那么只能遍历到i,j下标相等的数组元素,所以一定不要犯这个错误哦。

错误代码2:

#include
void main()
{
	int a[2][3] = { {1,2,3},{4,5,6} }, i, j, b[3][2];
	for (i = 0; i < 2; i++)
	{
		for (j = 0; j < 3; j++)
			b[i][j] = a[j][i];
	}
	for (i = 0; i < 2; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%d ", b[i][j]);
		}
		printf("n");
	}
}

这种错误的点在于b[i][j]=a[j][i]这一行的代码,看似也是实现行列之间的交换了,但是它也产生了巨大的逻辑错误,那么其错误点就在于,我们的外层循环是对行进行遍历,而a[j][i]表达的是对一列进行遍历。

修改代码如下所示:

#include
void main()
{
	int a[2][3] = { {1,2,3},{4,5,6} }, i, j, b[3][2];
	for (j = 0; j < 2; j++)
	{
		for (i= 0; i < 3; i++)
			b[i][j] = a[j][i];
	}
	for (i = 0; i < 2; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%d ", b[i][j]);
		}
		printf("n");
	}
}
1 4 2

2 5 3

修改后就可以正常的运行了。

对于下面输出打印b数组的元素也类比于此。

​

​

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947280.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号