C++二维数组(3)

2023-12-14 23:29:41

对角线之和

题目描述: 输入一个矩阵,输出右上-左下对角线上的数字和 输入 输入1个整数N。(N<10)表示矩阵有n行n列 输出 对角线的和 样例

输入复制

4

1 2 3 4

2 3 4 5

4 5 6 7

1 2 3 4

输出复制

14

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	int a[110][110];
	int n;
	cin>>n;
	for(int i=0;i<n;i++)//行号 
	{
		for(int j=0;j<n;j++)//列号 
		{
			cin>>a[i][j];
	    }
	}
	int i=n-1;
	int j=0;
	int sum=0;
	while(true)
	{
		if(i<0||j>n-1)
		{
			break;
		}
		sum=sum+a[i][j];
		i--;
		j++;
	}
	cout<<sum;
	
	
	return 0;
}

右转90度

题目描述: 输入一个矩阵,输出他右转90度后的结果 输入 输入1个整数N。(N<10)表示矩阵有n行n列 输入n行,代表矩阵内的数据 输出 右转90度后的结果 样例

输入复制

3

1 2 3

4 5 6

7 8 9

输出复制

7 4 1

8 5 2

9 6 3

#include<iostream>
using namespace std;
int main()
{
	int a[110][110];
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			cin>>a[i][j];
		}
	}
	for(int i=0;i<n;i++)
	{
		for(int j=n-1;j>=0;j--)
		{
			cout<<a[j][i]<<" ";
		}
		cout<<endl;
	}
	
	
	return 0;
}

矩阵交换行

题目描述: 给定一个5*5的矩阵(数学上,一个r×c的矩阵是一个由r行c列元素 排列成的矩形阵列),将第n行和第m行交换,输出交换后的结果。 输入 输入共6行,前5行为矩阵的每一行元素,元素与元素之间以一个空格分开。 第6行包含两个整数m、n,以一个空格分开。(1 <= m,n <= 5) 输出 输出交换之后的矩阵,矩阵的每一行元素占一行,元素之间以一个空格分开。

输入复制

1 2 3?

4 5 6

7 8 9

1 3

输出复制

7 8 9

4 5 6

1 2 3

#include<iostream>
using namespace std;
int main()
{
	int a[110][110];
	int n=5;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			cin>>a[i][j];
		}
	}
	int c,b;
	cin>>c>>b;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			if(i==c-1)
			{
				cout<<a[b-1][j]<<" ";
			}
			else if(i==b-1)
			{
				cout<<a[c-1][j]<<" ";
			}
			else
			{
				cout<<a[i][j]<<" ";
			}
		}
		cout<<endl;
	}
	
	
	return 0;
}

数字走向

题目描述: 输入整数N,输出相应方阵。 输入 一个整数N。( 0 < n < 10 ) 输出 一个方阵,每个数字的场宽为3。 样例

输入复制

5

输出复制

25 24 23 22 21

20 19 18 17 16

15 14 13 12 11

10 9 8 7 6

5 4 3 2 1

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	int a[110][110]={0};
	int n;
	cin>>n;
	int cnt=n*n;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			cout<<setw(3)<<cnt;
			cnt--;
		}
		cout<<endl;
	}
	
	
	return 0;
}

同行列对角线格子

n=4,i=2,j=3表示了棋盘中的第 二行第三列的格子,如下图

? ? 第一列? ? ? 第二列? ? ? 第三列? ? ?第四列

【? ? ? ? ? ?】【? ? ? ? ? 】【? ? ? ? ?】【? ? ? ? ?】第一行

【? ? ? ? ? ?】【? ? ? ? ? 】【(2,3)】【? ? ? ? ?】第二行

【? ? ? ? ? ?】【? ? ? ? ? 】【? ? ? ? ?】【? ? ? ? ?】第三行

【? ? ? ? ? ?】【? ? ? ? ? 】【? ? ? ? ?】【? ? ? ? ?】第四行

当n=4,i=2,j=3时,输出的结果是:

(2,1)(2,1)(2,3)(2,4)? ? ? ? 同一行上格子的位置

(1,3)(2,3)(3,3)(4,3)? ? ? ? 同一列上格子的位置

(1,2)(2,3)(3,4)? ? ? ? ? ? ? ?左上到右下对角线上格子的位置

(4,1)(3,2)(2,3)(1,4)左下到右上对角线上格子的位置

输入 一行,三个自然数N,i,j,相邻两个数之间用单个空格隔开。1 <= N <= 10。 输出 四行: 第一行:从左到右输出同一行格子位置; 第二行:从上到下输出同一列格子位置; 第三行:从左上到右下输出同一对角线格子位置; 第四行:从左下到右上输出同一对角线格子位置。 其中每个格子位置用如下格式输出:(x,y),x为行号,y为列号,采用英文标点,中间无空格。 相邻两个格子位置之间用单个空格隔开。

输入复制

4 2 3

输出复制

(2,1)(2,1)(2,3)(2,4)

(1,3)(2,3)(3,3)(4,3)

(1,2)(2,3)(3,4)

(4,1)(3,2)(2,3)(1,4)

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	int a[110][110]={0};
	int n;
	cin>>n;
	int c,b;
	cin>>c>>b;
	for(int i=0;i<n;i++)
	{
		cout<<"("<<c<<","<<i+1<<")"<<" ";
	}
	cout<<endl;
	for(int i=0;i<n;i++)
	{
		cout<<"("<<i+1<<","<<b<<")"<<" ";
	}
	cout<<endl;
	int x = c-1;
	int y = b-1;
	if(x<y)
	{
		y=y-x;
		x=0;
	}
	else if(y<x)
	{
		x=x-y;
		y=0;
	}
	else
	{
		x=0;
		y=0;
	}
	while(true)
	{
		if(x==n||y==n)
		{
			break;
		}
		cout<<"("<<x+1<<","<<y+1<<")"<<" ";
		x++;
		y++;
	}
	cout<<endl;
	x=c-1;
	y=b-1;
	if(x+y<n-1)
	{
		x=x+y-1;
		y=0;
	}
	else if(x+y>n-1)
	{
		y=x+y-1;
		x=0;
	}
	else
	{
		x=n-1;
		y=0;
	}
	while(true)
	{
		if(x==-1||y==n+2)
		{
			break;
		}
		cout<<"("<<x+1<<","<<y+1<<")"<<" ";
		x--;
		y++;
	}
	
	
	return 0;
}

斜角 I

题目描述: 输入整数 N,输出相应方阵。 输入 一个整数 N。( 0 < n < 10 ) 输出 一个方阵,每个数字的场宽为 3 。 样例

输入复制

5

输出复制

1 2 3 4 5

2 3 4 5 6

3 4 5 6 7

4 5 6 7 8

5 6 7 8 9

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	int a[110][110];
	int n;
	cin>>n;
	int cnt=1;
	for(int i=0;i<n;i++)
	{
		int cnt2=cnt;
		for(int j=0;j<n;j++)
		{
			cout<<setw(3)<<cnt2;
			cnt2++; 
		}
		cout<<endl;
		cnt++;
	}
	
	
	return 0;
}

斜角II

题目描述: 输入整数 N,输出相应方阵。 输入 一个整数 N。( 0 < n < 10 ) 输出 一个方阵,每个数字的场宽为 3 。 样例

输入复制

5

输出复制

5 4 3 2 1

4 4 3 2 1

3 3 3 2 1

2 2 2 2 1

1 1 1 1 1

#include<iomanip>
#include<iostream>
using namespace std;
int main()
{
	int a[110][110];
	int n;
	cin>>n;
	int cnt=n;
	for(int i=0;i<n;i++)
	{
		int cnt2=cnt;
		int cnt3=n;
		for(int j=0;j<n;j++)
		{
			cout<<setw(3)<<cnt<<" ";
			cnt3--;
			if(cnt3<cnt2)
			{
				cnt2--;
			}
		}
		cout<<endl;
		cnt--;
	}
	
	
	return 0;
}

斜角III

题目描述: 输入整数N,输出相应方阵。 输入 一个整数N。( 0 < n < 10 ) 输出 一个方阵,每个数字的场宽为3。

输入复制

5

输出复制

A B C D E

B C D E A

C D E A B

D E A B C

E A B C D

#include<iomanip>
#include<iostream>
using namespace std;
int main()
{
	int a[110][110];
	int n;
	cin>>n;
	char cnt2='A';
	for(int i=0;i<n;i++)
	{
		char cnt2=cnt;
		for(int j=0;j<n;j++)
		{
			cout<<setw(3)<<(char)cnt2<<" ";
			cnt2++;
			if(i+j==n-1)
			{
				cnt2='A';
			}
		}
		cout<<endl;
		cnt++;
	}
	
	
	return 0;
}

斜角IV

题目描述: 输入整数N,输出相应方阵。 输入 一个整数N。( 0 < n < 10 ) 输出 一个方阵,每个数字的场宽为3。 样例

输入复制

5

输出复制

5 4 3 2 1

4 5 4 3 2

3 4 5 4 3

2 3 4 5 4

1 2 3 4 5

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	int a[110][110];
	int n;
	cin>>n;
	int cnt=1;
	for(int i=0;i<n;i++)
	{
		int cnt2=cnt;
		for(int j=n-1;j>=0;j--)
		{
			a[i][j]=cnt2;
			if(i>=j)
			{
				cnt2--;
			}
			else
			{
				cnt2++;
			}
		}
		cnt++;
	}
	for(int i=0;i<n;i++)
	{	
		int cnt2=cnt;
		for(int j=0;j<n;j++)
		{
			cout<<setw(3)<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	
	
	return 0;
}

文章来源:https://blog.csdn.net/BanyeBirth/article/details/135005407
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。