首页 > 其他分享 >二维数组

二维数组

时间:2024-11-11 15:47:50浏览次数:1  
标签:include 20 name int char 二维 数组 main

一维数组

定义:

int a[N];

初始化:

int a[3] = {1,2,3} ;
for(i = 0;i<3; i++){
    scanf("%d",&a[i]);
}

储存结果:数组元素在内存中存放是连续的

实例:逆序存放 冒泡选择排序 二分查找

二维数组

int a[2][3];//三行四列
int a[2][3]={{1,2,3},{4,5}};
int a[2][3]={1,2,3,4,5};

标准的初始化

for(i=0;i<2;i++){
    for(j=0;j<3;j++){
    scanf("%d",&a[i][j]);
    }
}

输出

for(int i=0;i<3;i++){
    for(int j=0;j<3;j++){
        printf("%d",a[i][j]);//%3代表每次打印长度为3
    }
    printf("\n");//一行结束换行
}


#include<stdio.h>
int main(){
	int a[3][3];//定义这里不要写成a[i][j]了,笑死!
	for(int i=0;i<3;i++){
		for(int j=0;j<3;j++){
			scanf("%d",&a[i][j]);//要取地址
		}
	}
	for(int i=0;i<3;i++){
		for(int j=0;j<3;j++){
			printf("%3d",a[i][j]);//%3代表每次打印长度为3
		}
		printf("\n");//一行结束换行
	}
	return 0;
}

连续存放

#include<stdio.h>
int main(){
	int a[3][3];//这里不要写成a[i][j]了,笑死!
	for(int i=0;i<3;i++){
		for(int j=0;j<3;j++){
			scanf("%d",&a[i][j]);//要取地址
		}
	}
	for(int i=0;i<3;i++){
		for(int j=0;j<3;j++){
			printf("%x ",&a[i][j]);//%3代表每次打印长度为3
		}
		printf("\n");//一行结束换行
	}	
	return 0;
}

转置矩阵实现

#include<stdio.h>
int main(){
	int a[2][3];//这里不要写成a[i][j]了,笑死!
	for(int i=0;i<2;i++){
		for(int j=0;j<3;j++){
			scanf("%d",&a[i][j]);//要取地址
		}
	}
	for(int j=0;j<3;j++){//把i和j位置换一下
		for(int i=0;i<2;i++){
			printf("%3d",a[i][j]);//%3代表每次打印长度为3
		}
		printf("\n");//一行结束换行
	}	
	return 0;
}

杨辉三角形 n>2
1
00
1 1
10 11
1 2 1
20 21 22
1 3 3 1
30 31 32 33
1 4 6 4 1
40 41 42 43 44
a[i][i=1] = a[i][0] = 1
非1起步元素 a[2][1]
终点元素 a[i][i-1]
i=2 j=1
a[i][j]= a[i-1][j] + a[i-1][i-1]

已知数组a[2][3]

找到数组中最大值和下标

#include<stdio.h>
int main (){
	int a[2][3],r = 0,c = 0;
	for(int i=0;i<2;i++){
		for(int j=0;j<3;j++){
			scanf("%d",&a[i][j]);
		}
	}
	int max = a[0][0];
	for(int i=0;i<2;i++){
		for(int j=0;j<3;j++){
			
			if(max<a[i][j]){
				max = a[i][j];
				r = i;
				c = j;
			}
			
		}
	}

		printf("%d %d %d",a[r][c],r,c);

	return 0;
}

1 7 4 1 01(7)max 11 21 31
00 01 02 03
4 8 3 6
10 11 12 13
1 6 1 2
20 21 22 23
0 7 8 9
30 31 32 33

i=0 j=0,1,2,3 maxj=1 (7)-----tmp[0][1] tmp[i][maxj]

 j = 1

i=1 j=0,1,2,3 maxj=1 (8)-----tmp[0][1] tmp[i][maxj]

 j = 1

i=2 j=0,1,2,3 maxj=1 (6)-----tmp[0][1] tmp[i][maxj]

 j = 1

i=3 j=0,1,2,3 maxj=1 (9)-----tmp[0][3] tmp[i][maxj]

 j = 3

i=0 j=1 i=0 2 3 tmp[i][maxj] ?max --->鞍点 --->flag =1;--->andian[i][j] r=i,c=j||no andian
i=1 j=1 i=0 2 3
i=2 j=1 i=0 2 3
i=3 j=3 i=0 1 2
if(flag == 0) --- NONE
else --- printf('%d %d %d',r,c,andian[i][j])

  1. 列最小,传入坐标

  2. 行最大,检验坐标是否满足该行max

    1 7 4 1
    4 8 3 6
    1 6 1 2
    0 7 8 9

/*输出行最大值 */
#include<stdio.h>
int main (){
	int a[20][30],i = 0,j = 0,n;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			scanf("%d",&a[i][j]);
		}
	}
	int max = a[0][0];
	for(i=0;i<n;i++){
		max = a[i][0];
		for(j=0;j<n;j++){
			
			if(max<a[i][j]){
				max = a[i][j];
				
			}
			
		}
		printf("%d ",max);
	}

		

	return 0;
}

输出列最大值
#include<stdio.h>
int main (){
	int a[20][30],i = 0,j = 0,n;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			scanf("%d",&a[i][j]);
		}
	}
	int max = a[0][0];
	for(i=0;i<n;i++){
		max = a[0][i];
		for(j=0;j<n;j++){
			
			if(max>a[j][i]){
				max = a[j][i];
				
			}
			
		}
		printf("%d ",max);
	}

		

	return 0;
}

字符数组


//初始化
char name[20];
char nameplus[10][10];
char name[10][20]; //存放10个同学的名字
//%s  包括 '\0'  "abc"
//%c             'a' 'b' 'c' '\0'
for(int i=0;i<3;i++){
	c[i] 
}
//字符
//char ch = getchar(); getchar只可以输入一个字符
//putchar(ch);
//字符串
//gets函数:输入带空格的字符串
//scanf函数不可以输出 空格,第一个空格就结束了
/*输入三个同学的名字*/
char name[20];
gets(name);
puts(name);
#include<stdio.h>
int main(){
	char name[10][20];
	for(int i=0;i<3;i++){
		gets(name[i]);
	}
	for(int i=0;i<3;i++){
		puts(name[i]);
	}
	
	return 0;
}
/*输入一个同学的名字*/
#include<stdio.h>
int main(){
	char name[20];
	gets(name);
	puts(name);
	return 0;
}

//\0作为字符串结束

//#include"string.h"
//计算长度【不包括\0】
//strlen(a);
//strcpy(a,b);
//strcat(a,b);  a + b
//strcmp(a,b);  比较a,b[assci码]
//cuit --- 4
#include<stdio.h>
int length(char name[20]){
	int i = 0;
	while(name != '\0'){
		i ++;
	}
	return i;
}
int main(){
	char name[20];
	gets(name);
	int count = 0;
	count = length(name[20]);
	printf("%d",count);
	
	return 0;
}
#include<stdio.h>
//#include<string.h>
int main(){
	char a[20], b[20];
	gets(a);
//	int len = strlen(a);
	int i =0;
//	char b[len] = {0};
	while(a[i] != '\0'){	
		b[i] = a[i];
		i++;	
	}
	b[i] = '\0';//终于明白了。最后写上\0就好了
	puts(b);
	
	return 0;
}



标签:include,20,name,int,char,二维,数组,main
From: https://www.cnblogs.com/GJ504b/p/18539883

相关文章

  • 洛谷题单指南-二叉堆与树状数组-P2085 最小函数值
    原题链接:https://www.luogu.com.cn/problem/P2085题意解读:有n个函数,函数中x取值>=1,计算所有函数能得到的值中最小的m个。解题思路:函数中x取值是>=1的整数,因此每个函数的值是f(1),f(2),f(3)....,是一个递增序列,题目本质上是要从n个递增序列中找到前m个最小的数。首先,对所有函数......
  • 力扣 第540题 有序数组中的单一元素
    解题思路:        因为解决方案必须满足`O(logn)`的时间复杂度,和`O(1)`的空间复杂度。所以我们首先考虑用二分查找的思想。这个问题的关键是找到我们要找的元素在左边还是右边的判断条件。        要找的元素在左边还是右边的判断条件是什么呢?题......
  • 数组算法练习题
    第一题:寻找锦鲤公司年会有一个寻找锦鲤的游戏,每一个员工随意写一个字,如果在“锦鲤”词库中有这个字,那么就奖励500元锦鲤红包,否则就没有,每人只能玩一次。现有锦鲤字库如下,它们按照Unicode编码值从小到大排序:char[]koiFishWords={'一','今','地','定','年','开','我','果','......
  • 二维数点总结
    有很多数数题都可以转化为二维数点模型。将一些二元信息视作平面上的若干个点,查询即数一个矩形中有多少个点/点的权值之和等信息。那么这很明显是DS题(或者至少要上DS优化一下)。我们来想想怎么处理矩阵查询。离线离线的时候做法很多。但基本都有一个共性:把询问差分,转化为前缀信......
  • [数组排序] 0384. 打乱数组
    文章目录1.题目大意2.题目大意3.示例4.解题思路5.参考代码1.题目大意384.打乱数组-力扣(LeetCode)2.题目大意描述:给定一个整数数组nums。要求:设计算法来打乱一个没有重复元素的数组。打乱后,数组的所有排列应该是等可能的。实现Solutionclass:Sol......
  • C小题目:有一个一维数组score,放10个学生的成绩,求平均成绩。
    #include<stdio.h>intaverage(intx[],intlen){inti,sum=0;for(i=0;i<len;i++){sum+=x[i];printf("%d\n",x[i]);};inta=sum/len;printf("theaverageis%d\n",a);};intmain(){......
  • 912. 排序数组
    题目链接本题使用的是快排解决。思路:「荷兰国旗」问题,具体思路跳转75.颜色分类代码classSolution{public:voidswap(vector<int>&nums,inti,intj){inttmp=nums[i];nums[i]=nums[j];nums[j]=tmp;}//[L,......
  • 关于我,穿越异世界,凭c语言搅动风云vlog----利用数组进行大数相关计算
    关于我,穿越异世界,凭c语言搅动风云vlog----利用数组进行大数相关计算一.有关大数你应该要知道的那些事1.大数的概念我们一般将计算机基本数据类型无法存储的数称之为大数,本文涉及的大数均为整数,不包含小数。而且下文代码实现中的数组大小可根据需要修改。2.问题引入在c......
  • 53. 最大子数组和
    题目链接解题思路最大子数组问题,有两个基本的想法,以i开头的子数组结果是怎样的,求出所有的结果,最优的那个,就是答案;以i结尾的子数组结果是怎样的,求出所有的结果,最优的那个,就是答案。本题我们可以考虑,「以i结尾的结果是怎样的」,为啥?因为我们要求的是最大的累加和,我们求出了re......
  • 工作学习笔记(五)数组
    在Java中,数组有以下重要作用:存储数据可以将同类型的多个数据组合在一起。例如,存储一个班级学生的考试成绩。如果有50个学生,就可以创建一个 int 类型的数组 int[]scores=newint[50]; 来存放所有成绩。除了基本数据类型,也能存储对象。比如, String[]names=newStri......