二维数组的填充

数组元素对调 查看测评数据信息

输入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

输出:

111.png

 

#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;
}
  • 27
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值