对角线之和
题目描述
输入一个矩阵,输出右上-左下对角线上的数字和
输入
输入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>
using namespace std;
int main()
{int n,cnt=0;cin>>n;int a[100][100];for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>a[i][j];}}int sum=0;for(int i=0;i<n;i++){sum=a[i][cnt]+sum;cnt++;}cout<<sum;
}
右转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[100][100];int n;cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a[i][j];}}for(int i=1;i<=n;i++){for(int j=n;j>=n;j--){cout<<a[j][i]<<"\t";}cout<<endl;}
}
矩阵交换行
描述
给定一个5*5的矩阵(数学上,一个r×c的矩阵是一个由r行c列元素
排列成的矩形阵列),将第n行和第m行交换,输出交换后的结果。
输入
输入共6行,前5行为矩阵的每一行元素,元素与元素之间以一个空格分开。
第6行包含两个整数m、n,以一个空格分开。(1 <= m,n <= 5)
输出
输出交换之后的矩阵,矩阵的每一行元素占一行,元素之间以一个空格分开。
#include<iostream>
using namespace std;
int main()
{int n,m,a[100][100];for(int i=0;i<5;i++){for(int j=0;j<5;j++){cin>>a[i][j];}}cin>>n>>m;for(int i=0;i<5;i++){for(int j=0;j<5;j++){if(j==n){cout<<a[i][n]<<" ";}else if(j==m){cout<<a[i][m]<<" ";}else{cout<<a[i][j]<<" ";}}cout<<endl;}
}
数字走向
题目描述
输入整数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[20][20];int num=1;int i=5,j=5;while(i>=1&&j>=1){a[i][j]=num++;j--;if(j<1){j=5;i--;}}for(i=1;i<=5;i++){for(j=1;j<=5;j++){cout<<setw(3)<<a[i][j];}cout<<endl;}
}
斜角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>
using namespace std;
int x[]={0,1,0,-1};
int y[]={1,0,-1,0};
int k=1,num=1,i=1,j=1,n,m,tx,ty;
int a[100][100]={0};
int main()
{cin>>n>>m;while(num<=n*m){if(i>=1&&i<=n&&j>=1&&j<=m){a[i][j]=num;}i++;j--;if(j<1){i=1;k++;j=k;num++;}}for(i=1;i<=n;i++){for(j=1;j<=m;j++){cout<<a[i][j]<<"\t";}cout<<endl;}}
蛇形遍历
用数字1,2,3,4,...,n*n这n2个数蛇形填充规模为n*n的方阵。
蛇形填充方法为:
对于每一条左下-右上的斜线,从左上到右下依次编号1,2,...,2n-1;按编号从小到大的顺序,将数字从小到大填入各
条斜线,其中编号为奇数的从左下向右上填写,编号为偶数的从右上到左下填写。
比如n=4时,方阵填充为如下形式
输入
输入一个不大于10的正整数n,表示方阵的行数。
输出
输出该方阵,相邻两个元素之间用单个空格间隔。
#include<iostream>
using namespace std;
int x[]={0,1,0,-1};
int y[]={1,0,-1,0};
int k=1,num=1,i=1,j=1,n,m,tx,ty;
int a[100][100]={0};
int main()
{cin>>n>>m;while(num<=n*m){if(i>=1&&i<=n&&j>=1&&j<=m){a[i][j]=num;num++;}i++;j--;if(j<1){i=1;k++;j=k;}}for(i=1;i<=n;i++){for(j=1;j<=m;j++){cout<<a[i][j]<<"\t";}cout<<endl;}}
回形遍历
给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按回形从外向内顺时针顺序遍历整个
数组。如图所示:
输入
输入的第一行上有两个整数,依次为row和col
。
余下有row行,每行包含col个整数,构成一个
二维整数数组。
(注:输入的row和col保证0 < row < 100, 0
< col < 100)
输出
按遍历顺序输出每个整数。每个整数占一行。
输入复制
3 3
1 2 3
8 9 4
7 6 5
输出复制
1
2
3
4
5
6
7
8
9
#include<iostream>
using namespace std;
int x[]={0,1,0,-1};
int y[]={1,0,-1,0};
int k=0,num=1,i=1,j=1,n,m,tx,ty;
int a[100][100]={0};
int main()
{cin>>n>>m;while(num<=n*m){a[i][j]=num;num++;tx=i+x[k];ty=j+y[k];if(a[tx][ty]==0&&tx>=1&&tx<=n&&ty>=1&&ty<=m)i=tx,j=ty;elsek++;if(k>3)k=0;i=i+x[k];j=j+y[k];}for(i=0;i<=n;i++){for(j=0;j<=m;j++){cout<<a[i][j]<<"\t";}cout<<endl;}}
用while循环输入句子:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{int a[20][20];int num=1;int i=5,j=5;while(i>=1&&j>=1){a[i][j]=num++;j--;if(j<1){j=5;i--;}}for(i=1;i<=5;i++){for(j=1;j<=5;j++){cout<<setw(3)<<a[i][j];}cout<<endl;}
}
左右翻转:
#include<iostream>
using namespace std;
int main()
{int a[50][50];int num=1;int n=5,m=5;for(int i=1;i<=5;i++){for(int j=1;j<=5;j++){a[i][j]=num;num++;}}for(int i=1;i<=5;i++){for(int j=1;j<=5;j++){cout<<a[i][j]<<"\t";}cout<<endl;}cout<<"左右翻转"<<endl;for(int i=1;i<=5;i++){for(int j=5;j>=1;j--){cout<<a[i][j]<<"\t";}cout<<endl;}return 0;
}
上下翻转:
#include<iostream>
using namespace std;
int main()
{int a[50][50];int num=1;int n=5,m=5;for(int i=1;i<=5;i++){for(int j=1;j<=5;j++){a[i][j]=num;num++;}}for(int i=1;i<=5;i++){for(int j=1;j<=5;j++){cout<<a[i][j]<<"\t";}cout<<endl;}cout<<"上下翻转"<<endl;for(int i=5;i>=1;i--){for(int j=1;j<=5;j++){cout<<a[i][j]<<"\t";}cout<<endl;}return 0;
}
行列互换:
#include<iostream>
using namespace std;
int main()
{int a[50][50];int num=1;int n=5,m=5;for(int i=1;i<=5;i++){for(int j=1;j<=5;j++){a[i][j]=num;num++;}}for(int i=1;i<=5;i++){for(int j=1;j<=5;j++){cout<<a[i][j]<<"\t";}cout<<endl;}cout<<"行列互换"<<endl;for(int i=1;i<=5;i++){for(int j=1;j<=5;j++){cout<<a[j][i]<<"\t";}cout<<endl;}return 0;
}