對角線之和
題目描述
輸入一個矩陣,輸出右上-左下對角線上的數字和
輸入
輸入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;
}