如何创建一个矩阵

#今天做了学校发的国庆大礼包,遇到了些问题,在此记录一下#

如何创建一个矩阵

首先,我们要了解什么是矩阵。

矩阵就是由n行m列个一一对齐的数字构成的数字方阵

  例如

接下来,我们就可以考虑怎么通过编译在显示屏上输出矩阵。

我们可以通过for循环嵌套的方式(这是我遇到的第一个问题)进行,假如我们要输出一个3*3的有序矩阵且每行数字的宽度为6(如上图),我们可以先在外循环循环矩阵的行,在内循环循环矩阵的列,当内循环输出完3列数字之后,再跳到外循环换行后继续内循环,直到输出3*3的矩阵后停止。

代码示例

 这是我编写代码遇到的第二个问题

#include<iostream>
using namespace std;
int main()
{
	int rew, col;
	int i = 0;
	for (rew = 1; rew <= 3; rew++)//外循环为矩阵的行
	{
		for (col = 1; col <= 3; col++)//内循环为矩阵的列
		{
			i++;
			cout << "     " << i;//在这有一个错误
		}
		cout << endl;//内循环后,外循环输出换行————C++中endl为换行
	}

	return 0;
}

运行结果如下

 现在看结果是正确的,但当矩阵换成4*4甚至更多时,矩阵中会出现两位数甚至3位数,这会导致矩阵元素不能一一对齐,就不能叫做矩阵

如图  是按照上面代码得到的4*4的矩阵

原因是代码

cout << "     " << i;

是先输出5个空格再输出1个 数字来达到矩阵每行的数字宽度为6的要求,当数字为个位数时矩阵中各元素宽度刚好为6,而当数字为十位数或百位数时,这些数的宽度就变为了7或8,与前面个位数的宽度6不一致,所以会出现矩阵中元素对不齐/错位的情况。这时我们可以用到头文件<iomanip>下的setw()函数,它的作用是用来设置字符之间的宽度并使它们之间的宽度一致。比如,设setw(n),当输出值长度小于n时,则会在其左侧填补空格来达到n个字符的长度(简单点来说就是输出值右对齐);当输出值长度大于n时,则会按照它的实际长度输出。

最后,当我修改代码后

代码示例
#include<iomanip>
#include<iostream>
using namespace std;
int main()
{
	int rew, col;
	int i = 0;
	for (rew = 1; rew <= 4; rew++)//外循环为矩阵的行
	{
		for (col = 1; col <= 4; col++)//内循环为矩阵的列
		{
			i++;
			cout << setw(6) << i;//修改正确后		}
		cout << endl;//内循环后,外循环输出换行————C++中endl为换行
	}

	return 0;
}
 运行结果如下

 

 输出一个矩阵完成

 

 下面是我作业中的原题以及我的答案

#include<iomanip>
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
	int N, i, j;
	int z = 0;
	cin >> N;
	if (N <= 10 && N >= 1)
	{
		for (i = 1; i <= N; i++)
		{
			for (j = 1; j <= N; j++)
			{
				z++;
				cout <<setw(6)<< z ;
			}
			cout << endl;
		}
	}
	return 0;
}

PS:如果想输出一个元素大小为100以内随机的矩阵可以这样做

将输出元素z改成rand()%100即

cout <<setw(6)<< rand()%100 ;

意思为输出10以内的随机数

当然,rand()%后面的数可以自己定义,可以是一个数也可以是一个范围

rand()%num1+num2意思为num1~num2的随机数

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值