数组元素对调 查看测评数据信息
输入M行N列数组,将第I列与第J列元素对调(I,J < N)。
输入格式
第1行,两个整数M和N,1≤M,N≤100;
第2行到M+1行,每行N个整数;
第M+2行,两个整数I和J,1≤I,J≤N。
输出格式
共M行,每行N个数,表示对调后数组各元素。
输入/输出例子1
输入:
5 5
1 6 7 8 9
4 5 6 7 8
3 4 5 2 1
2 3 4 9 0
5 6 7 6 8
1 2
输出:
6 1 7 8 9
5 4 6 7 8
4 3 5 2 1
3 2 4 9 0
6 5 7 6 8
#include<bits/stdc++.h>
using namespace std;
int n,m,a[999][999],x,y;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
cin>>x>>y;
for(int i=1;i<=m;i++){
swap(a[i][x],a[i][y]);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
对角线之和 查看测评数据信息
输入一个n*n方阵,分别求两条对角线上元素之和。
输入格式
第一行,一个整数n,1≤n≤100;
接下来共n行,每行n个整数(范围为0~32767),表示n阶方阵。
输出格式
一个整数,表示方阵两条对角线元素之和(注意同一元素不要重复计算)。
输入/输出例子1
输入:
4
1 2 3 4
5 6 7 8
1 2 3 7
5 6 7 8
输出:
36
#include<bits/stdc++.h>
using namespace std;
int n,a[9999][999],s=0;
int main(){
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>a[i][j];
if(i==j||i+j==n-1){
s+=a[i][j];
}
}
}
cout<<s;
return 0;
}
二维数组的输出2 查看测评数据信息
读入一个n行n列的二维数组(方阵、矩阵),按下述要求输出。所有数据都是正整数(100以内)。(1<=n,m<=10)
输入格式
第一行三个数字:n,p,q; (p,q不同)
接下来是一个n行n列的矩阵。
输出格式
第一行输出矩阵的第一列的数据。
第二行输出矩阵的最后一列的数据。
第三行输出矩阵的左斜边的数据(从上到下)。
第四行输出矩阵的右斜边的数据(从上到下)。
第五行输出矩阵的左斜边的数据(从下到上)。
第六行输出矩阵的p行q列的数据。
输入/输出例子1
输入:
5 5 3
1 2 3 4 5
3 5 9 2 4
4 3 6 8 2
9 7 5 9 7
0 9 7 5 3
输出:
1 3 4 9 0
5 4 2 7 3
1 5 6 9 3
5 2 6 7 0
3 9 6 5 1
7
#include<bits/stdc++.h>
using namespace std;
int n,a[999][999],x,y;
int main(){
cin>>n;
cin>>x>>y;
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++){
cout<<a[i][1]<<" ";
}
cout<<endl;
for(int i=1;i<=n;i++){
cout<<a[i][n]<<" ";
}
cout<<endl;
for(int i=1;i<=n;i++){
cout<<a[i][i]<<" ";
}
cout<<endl;
int s=n;
for(int i=1;i<=n;i++){
cout<<a[i][s]<<" ";
s--;
}
cout<<endl;
for(int i=n;i>=1;i--){
cout<<a[i][i]<<" ";
}
cout<<endl;
cout<<a[x][y];
return 0;
}
建立矩阵 查看测评数据信息
上机练习5.2.5 给一维数组输入M个整数,假设M=6,数组元素分别为 7 4 8 9 1 5 ,要求建立一个如下数组(矩阵):
7 4 8 9 1 5
4 8 9 1 5 7
8 9 1 5 7 4
9 1 5 7 4 8
1 5 7 4 8 9
5 7 4 8 9 1
输入格式
第一行,一个正整数M,m<=100。
第二行,M个整数。
输出格式
M行,每行M个整数,表示一个M*M的矩阵。
输入/输出例子1
输入:
6
7 4 8 9 1 5
输出:
7 4 8 9 1 5
4 8 9 1 5 7
8 9 1 5 7 4
9 1 5 7 4 8
1 5 7 4 8 9
5 7 4 8 9 1
#include<bits/stdc++.h>
using namespace std;
int n,a[999];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<a[j]<<" ";
}
int t=a[1];
for(int j=1;j<n;j++){
a[j]=a[j+1];
}
a[n]=t;
cout<<endl;
}
return 0;
}
1234方阵 查看测评数据信息
编程打印如下规律的n*n方阵。输入n,按规律输出方阵。
方阵规律如下图:使左对角线和右对角线上的元素为0,它们上方的元素为1,左方的元素为2,下方元素为3,右方元素为4,下图是一个符合条件的5阶矩阵。
0 1 1 1 0
2 0 1 0 4
2 2 0 4 4
2 0 3 0 4
0 3 3 3 0
输入格式
正整数n(<=100)。
输出格式
所需的方阵。
输入/输出例子1
输入:
5
输出:
0 1 1 1 0
2 0 1 0 4
2 2 0 4 4
2 0 3 0 4
0 3 3 3 0
#include<bits/stdc++.h>
using namespace std;
int n,a[999][999];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j||i+j==n+1){
a[i][j]=0;
}
else if(j>i&&i+j<n+1){
a[i][j]=1;
}
else if(j<i&&i+j<n+1){
a[i][j]=2;
}
else if(j<i&&i+j>n+1){
a[i][j]=3;
}
else if(j>i&&i+j>n+1){
a[i][j]=4;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
对角线II 查看测评数据信息
输入整数 N ,输出相应方阵。
输入格式
一个整数 N 。( 0<N<10 )
输出格式
一个方阵,每个数字的场宽为 3 。
输入/输出例子1
输入:
5
输出:
0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 1 0 0 0
1 0 0 0 0
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=n;i>=1;i--){
for(int j=1;j<=n;j++){
if(i==j)cout<<setw(3)<<1;
else cout<<setw(3)<<0;
}
cout<<"\n";
}
return 0;
}
数字走向III 查看测评数据信息
输入整数 N ,输出相应方阵。
输入格式
一个整数 N 。( 0<N<10 )
输出格式
一个方阵,每个数字的场宽为 3 。
输入/输出例子1
输入:
5
输出:
#include<bits/stdc++.h>
using namespace std;
int n,a[11][11],cnt=1;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
a[j][i]=cnt;
cnt++;
}
}
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
cout<<setw(3)<<a[i][j];
}
printf("\n");
}
return 0;
}
斜三角填数 查看测评数据信息
输入正数N(N<=30),输出下列形状的三角形。例如:当N=5时输出:
11
7 12
4 8 13
2 5 9 14
1 3 6 10 15
输入格式
自然数N(N<=30)
输出格式
按要求输出n个斜行,要求每个数据元素占4个字符宽度输出。
输入/输出例子1
输入:
5
输出:
11
7 12
4 8 13
2 5 9 14
1 3 6 10 15
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,i,j,a[100][100]={0};
scanf("%d",&n);
int s=1;
int k=n;
i=n-1;
j=0;
int s1=0,s2;
while(k){
k--;
while(i<=n-1){
a[i][j]=s;
s1=i;
i++,j++;
s++;
}
i=k;
i--;
j=0;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(a[i][j]!=0)printf("%4d",a[i][j]);
}
printf("\n");
}
return 0;
}