二维数组(26道)

1335: 【入门】数字走向I

#include<bits/stdc++.h>
using namespace std;
int a[11][11];
int main(){
	int n;
	cin>>n;
	int m=1;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			a[i][j]=m;
			m++;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){	
			cout<<setw(3)<<a[i][j];
		}
		cout<<endl;
	}
	return 0;
}

1352: 【入门】拐角VI

#include <bits/stdc++.h>
using namespace std;
int n, a[10][10];
int main()
{
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
		a[n+1-i][i]=i; 
		for(int j=i+1; j<=n; ++j){
			a[n+1-i][j]=a[j-i][i]=i;
		}
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
} 

1347: 【入门】拐角I

#include <bits/stdc++.h>
using namespace std;
int n, a[10][10];
int main()
{
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
		a[i][i]=i;
		for(int j=i+1; j<=n; ++j){
			a[i][j]=a[j][i]=a[i][i];
		}
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
} 

1341: 【入门】对角线I

#include <bits/stdc++.h>
using namespace std;
int n, a[10][10];
int main() {
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
		a[i][i]=1;
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
} 

1358: 【入门】有趣的数字图形IV

#include <iostream>
#include <cstdio>
using namespace std;
int main(){
	int n;
	scanf("%d",&n);
	int arr[13][13]={0};
	for(int i=0;i<n;i++){
		arr[i][i]=i+1;
	}
	for(int i=n-1;i>=0;i--){
		for(int j=i+1;j<=n;j++){
			arr[i][j]=arr[i+1][j]+arr[i][j-1];
		}
	}
	for(int i=n-1;i>=0;i--){
		for(int j=0;j<n;j++){
			if(arr[i][j]==0){
				printf("%5c",' ');
			}
			else{
		 	    printf("%5d",arr[i][j]);
			}
		}
		if(i>0)
  		    printf("\n");
	}
	return 0;
}

1336: 【入门】数字走向II

#include <iostream>
#include <iomanip>
using namespace std;
int main(){  
    int i,n,j,c,t;
    cin>>n;
    t=n*n;c=0;
    for (i=1; i<=n; ++i){
        t=t-n;
        for (j=1; j<=n; ++j){
            cout<<setw(3)<<t+j;
        }
        cout<<endl;
    }
    return 0;
}

1353: 【入门】拐角VII

#include <bits/stdc++.h>
using namespace std;
int n, a[10][10];
int main() {
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
		a[i][1]=n+1-i;
		for(int j=2; j<=n; ++j){
			if(j<=n+1-i){
				a[i][j]=n+1-i;
			}
			else{
				a[i][j]=a[i][j-1]+1;
			}
		}
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
} 

1348: 【入门】拐角II

#include <bits/stdc++.h>
using namespace std;
int n, a[10][10];
int main()
{
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
		a[i][i]=n+1-i;
		for(int j=1; j<i; ++j){
			a[i][j]=a[j][i]=a[i][i];
		}
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
} 

1342: 【入门】对角线II

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    int a[n][n];
    for(int i=1;i<=n;i++){
        for(int j=n;j>=1;j--){
            if(i==j){
                cout<<setw(3)<<"1";
            }
            else{
                cout<<setw(3)<<"0";
            }
        }
        cout<<endl;
    }
    return 0;
}

1359: 【基础】螺旋方阵

#include <bits/stdc++.h>
using namespace std;
int n, cnt=1, row=1, column=1, a[10][10];
int flag=1;	
int main() {
	cin >>n;
	while(1){
		if(flag==1){
			while(column<=n && a[row][column]==0){
				a[row][column]=cnt;
				cnt++;
				column++; 
			}
			row++;
			column--; 
			flag=3;
			if(cnt>n*n){							//如果此时已经填满n*n个数了,就跳出循环 
				break;
			}
		} 
		if(flag==3){ 
			while(row<=n && a[row][column]==0){		//只要下边的没有填充,而且没有超出数组范围
				a[row][column]=cnt;					//就一直填充
				cnt++;
				row++;								//行++
			}
			column--;								//接下来要从右往左了,列要-- 
			row--; 									//由于刚才的while循环使得行多加了一个,因此行要--
			flag=2;									//flag标记为2,接下来要从右往左了
			if(cnt>n*n){							//如果此时已经填满n*n个数了,就跳出循环
				break;
			}
		}
		if(flag==2){
			while(column>=1 && a[row][column]==0){	//只要左边的没有填充,而且没有超出数组范围
				a[row][column]=cnt;					//就一直填充
				cnt++;	
				column--;							//列-- 
			}
			row--;									//接下来要从下往上了,行要-- 
			column++;								//由于刚才的while循环使得列多减了一个,因此列要++
			flag=4;									//flag标记为4,接下来要从下往上了
			if(cnt>n*n){							//如果此时已经填满n*n个数了,就跳出循环
				break;
			}
		}
		if(flag==4){ 
			while(row>=1 && a[row][column]==0){		//只要上边的没有填充,而且没有超出数组范围
				a[row][column]=cnt;					//就一直填充
				cnt++;				
				row--;								//行-- 
			}
			column++;								//接下来要从左往右了,列要++ 
			row++;									//由于刚才的while循环使得行多减了一个,因此行要++
			flag=1;									//flag标记为1,接下来要从左往右了
			if(cnt>n*n){							//如果此时已经填满n*n个数了,就跳出循环
				break;
			}
		}
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3d", a[i][j]);
		}
		printf("\n");
	}
	return 0;	
} 

1337: 【入门】数字走向III

#include<stdio.h>
main()
{
	int N;
	scanf("%d",&N);
	
	for(int i=1;i<=N;i++)
	{
		
		for(int j=i;j<=N*N-N+i;j+=N)
		{printf("%3d",j);}
		
		printf("\n");
	}
}

1354: 【入门】拐角VIII

#include <bits/stdc++.h>
using namespace std;
int n, a[10][10];
int main() {
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
 
		a[i][n]=i;
		for(int j=n-1; j>=1; --j){
			if(n+1-j<=i){
				a[i][j]=i;
			}
			else{
				a[i][j]=a[i][j+1]+1;
			}
		}
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
} 

1349: 【入门】拐角III

#include <bits/stdc++.h>
using namespace std;
int n, a[10][10];
int main(){
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
		a[i][i]=n+1-i;
		for(int j=i+1; j<=n; ++j){
			a[i][j]=a[j][i]=a[i][i];
		}
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
} 

1360: 【基础】回形方阵

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a;
    cin >> a;
    int N = a * 2 + 1;
    int n[N];
    for (int i = 0; i < N; i++)
    {
        cout<<" ";
        for (int j = i; j < N - i; j++)
            n[j] = a;
        for (int j = N - i - 1; j <= i - 1; j++)
            n[j] = -a;
        for (int j = 0; j < N; j++)
            cout << n[j] << " ";
        cout << endl;
        --a;
    }
    return 0;
}

1338: 【入门】数字走向IV

#include<cstdio>
using namespace std;
int main(){
	int N;
	scanf("%d",&N);
	
	for(int i=1;i<=N;i++)
	{
		
		for(int j=N*N-N+i;j>=i;j-=N)
		{printf("%3d",j);}
		
		printf("\n");
	}
}

1355: 【入门】有趣的数字图形I

#include<iostream>
#include<iomanip>
using namespace std;
void hinput(int x,int a[]) {
	for (int k = 0; k < x; k++)
		cout << setw(5) << a[k];
}
 
int main() {
	int n;
	cin >> n;
	int a[100];
	for (int i = 0; i < 100; i++)
		a[i] = i + 1;
	for (int i = 1; i <= n; i++) {
		int x = n - i + 1;
		for (int j = 1; j <= n; j++) {
			if (i <= j) {
				hinput(x, a);
				break;
			}
			else cout << "     ";
		}
		cout << "\n";
	}
	return 0;
}

1350: 【入门】拐角IV

#include <bits/stdc++.h>
using namespace std;
int n, a[10][10];
int main() {
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			if(j<=i){
				a[i][j]=i;
			}
			else{
				a[i][j]=a[i][j-1]+1;
			}
		}
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
} 

1344: 【入门】斜角II

#include <bits/stdc++.h>
using namespace std;
int n, a[10][10];
bool flag; 
int main() {
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
		a[i][1]=i;
		flag=false; 
		for(int j=2; j<=n; ++j){
			if(a[i][j-1]==n){
				flag=true;	
			}
			if(flag==false){
				a[i][j]=a[i][j-1]+1;	
			}
			else{
				a[i][j]=a[i][j-1]-1;	
			}
		}
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
} 

1361: 【基础】马鞍数

#include <bits/stdc++.h>
using namespace std;
bool flag;
int n, m, a[11][11], ans, mn[11], mx[11], row[11], column[11];
int main() {
    scanf("%d %d", &n, &m);
    for(int i=1; i<=n; ++i){
    	mn[i]=10;
        for(int j=1; j<=m; ++j){
            scanf("%d", &a[i][j]);
            mx[j]=a[i][j];
        }
    }
    for(int i=1; i<=n; ++i){
        for(int j=1; j<=m; ++j){
        	mn[i]=min(mn[i], a[i][j]);
		}
    }
    for(int i=1; i<=m; ++i){
        for(int j=1; j<=n; ++j){ 
        	mx[i]=max(mx[i], a[j][i]);
		}
    }
    for(int i=1; i<=n; ++i){
    	for(int j=1; j<=m; ++j){
			if(a[i][j]==mn[i] && a[i][j]==mx[j]){
    			printf("%d %d %d\n", i, j, a[i][j]);
    			flag=true;
			}
		}
	}
    if(flag==false){
    	printf("not exist");	
	}
    return 0;
}

1339: 【入门】数字走向V

#include<bits/stdc++.h>
using namespace std;
int n, a[11][11], cnt=1;
int main()
{
	scanf("%d", &n);
	for(int i=n; i>=1; --i){
		for(int j=n; j>=1; --j){
			a[i][j]=cnt;
			cnt++;
		}
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3d", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

1351: 【入门】拐角V

#include <bits/stdc++.h>
using namespace std;
int n, a[10][10];
int main() {
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
		a[i][n+1-i]=i; 
		for(int j=1; j<=n-i; ++j){
			a[i][j]=a[i+j][n+1-i]=a[i][n+1-i];
		}
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
} 

1345: 【入门】斜角III

#include <bits/stdc++.h>
using namespace std;
int n, a[10][10];
bool flag; 
int main(){
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
		a[i][1]=i;
		flag=false; 
		for(int j=2; j<=n; ++j){
			if(a[i][j-1]==n){
				flag=true;	
			}
			if(flag==false){
				a[i][j]=a[i][j-1]+1;	
			}
			else{ 
				if(a[i][j-1]==n){
					a[i][j]=1;
				}
				else{
					a[i][j]=a[i][j-1]+1;		
				}
			}
		}
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3c",a[i][j]+'A'-1);
		}
		printf("\n");
	}
	return 0;
} 

1346: 【入门】斜角IV

#include <bits/stdc++.h>
using namespace std;
int n, a[10][10];
bool flag; 
int main() {
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
		a[i][1]=n-i+1;
		flag=false; 
		for(int j=2; j<=n; ++j){
			if(a[i][j-1]==n){
				flag=true;	
			}
			if(flag==false){
				a[i][j]=a[i][j-1]+1;	
			}
			else{	
				a[i][j]=a[i][j-1]-1;	
			}
		}
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
} 

1340: 【入门】数字走向VI

#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=n; j>=1; --j){
			a[i][j]=cnt;
			cnt++;
		}
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3d", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

1357: 【入门】有趣的数字图形III

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	scanf("%d",&n);
	int arr[n][n];
	int i=0;
	int j=0;
	int cnt=1;
	int k=0;
    int space=n-1;
	for(int i=0;i<n;i++){
		for(int k=0;k<space;k++){
			printf("%5c",' ');
		}
		for(int j=space;j<n;j++,cnt++){
			printf("%5d",cnt);
		}
		space--;
		cnt=1;
		printf("\n");
	}
	return 0;
}

1343: 【入门】斜角I

#include <bits/stdc++.h>
using namespace std;
int n, a[10][10];
int main() {
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
		a[i][1]=a[i-1][1]+1;
		for(int j=2; j<=n; ++j){
			a[i][j]=a[i][j-1]+1;
		}
	}
	for(int i=1; i<=n; ++i){
		for(int j=1; j<=n; ++j){
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
} 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Asucceed

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值