006-数组

数组

数组故名思议就是一组数据的集合。

int a[10];//可以存储10个整数

char  c[8];//可以存储8个字符‘

一般格式:数组类型 数组名[元素个数];

数组元素的访问:下标,a[2],a[0],a[4];//下标是从0开始的

下面是示例

1 #include<stdio.h>
 2
 3
 4
 5 //数组作为函数参数
 6 void show(int a[],int n);
 7 //逆序输出数组
 8 void reverseArray(int a[],int n);
 9 //输出最大值
10 int returnMax(int a[],int n );
11 //求数组元素的和
12 int returnSum(int a[],int n);
13 int main()
14 {
15     int a[3];//定义
16     int nArray[] = {0,1,2,3,4,5,6,7,8,9};//定义并初始化
17
18     printf("%lu\n",sizeof(a));//数组的大小 = 数组类型*元素个数
19
20     //逐个赋值
21     a[0] = 11;
22     a[1] = 22;
23     a[2] = 33;
24
25     //数组的使用,注意数组越界问题
26     int arrayLenght = sizeof(nArray)/sizeof(int);
27     int i = 0;
28     while( i ++ < arrayLenght)//while循环实现遍历
29     {
30         printf("%d ",nArray[i]);
31     }
32     printf("\n");
33     show(a,3);
34     reverseArray(a,3);
35     printf("max :%d\n",returnMax(a,3));
36     printf("sum:%d\n",returnSum(a,3));
37
38     return 0;
39 }
40 //数组作为函数参数,在形参列表中,int a[10] 实际意义是int *a;
41 void show(int a[],int n)//a是数组,n是元素个数
42 {
43     //不要再函数中对函数参数数组进行sizeof,因为,数组再函数参数中传递的实际是一个指针,即数组的首地址
44     // sizeof on array function parameter will return sizeof ‘int *‘ instead of ‘int []‘
45     //printf("函数参数:%lu\n",sizeof(a));//数组的大小 = 数组类型*元素个数
46     for (int i = 0; i < n; i ++)//for循环实现遍历
47     {
48         printf("%d ",a[i]);
49     }
50     printf("\n");
51 }
52
53 //逆序输出数组
54 void reverseArray(int a[],int n)
55 {
56     while (n-- > 0 ) {
57          printf("%d ",a[n]);
58     }
59      printf("\n");
60 }
61
62 //输出最大值
63 int returnMax(int a[],int n )
64 {
65     int max = 0;
66     for (int i = 0; i < n; i ++)//for循环实现遍历
67     {
68         if (max < a[i])
69         {
70             max = a[i];//取得最大值
71         }
72     }
73     return max;
74 }
75 //求数组元素的和
76 int returnSum(int a[],int n)
77 {
78     int sum = 0;
79     for (int i = 0; i < n; i ++)//for循环实现遍历
80     {
81         sum += a[i];//累计求和
82     }
83     return sum;
84 }

二维数组以及多维数组

二位数组是一种特殊的一维数组:它的元素是一维数组。

二位数组就相当于一个表格,有行有列。

int a[3][2];//两行三列,如下图所示

a[0][0] a[0][1]
a[1][0] a[1][2]
a[2][0] a[2][2]

下标也是从零开始,数组名就是数组的地址,也就是第一个元素的地址a[0][0]

可以理解为三个一维数组:a[0],a[1],a[2].

  其中a[0] 包括a[0][0],a[0][1],

    a[1] 包括a[1][0],a[1][1],

    a[2] 包括a[2][0],a[2][1]

二维数组示例

1 #include <stdio.h>
 2
 3 //二维数组练习
 4
 5 void show(int a[][2],int h,int l);
 6 int main()
 7 {
 8
 9     //定义
10     int a[3][2];
11     //for循环初始化
12     for (int i= 0; i < 3; i++)
13     {
14         for (int j = 0; j< 2; j ++)
15         {
16             a[i][j] = i+j;
17         }
18     }
19     printf("length: %lu\n",sizeof(a));
20     //数组存储顺序,先行后列
21     printf("数组存储顺序\na[0]: %p\n",&a[0]);
22     printf("a[1]: %p\n",&a[1]);
23     printf("a[2]: %p\n",&a[2]);
24     show(a,3,2);
25
26     return 0;
27 }
28
29 void show(int a[][2],int h,int l)
30 {
31     //数组名也是当做一个指针传进来的,int (*)[2];
32     //sizeof on array function parameter will return size of ‘int (*)[2]‘ instead of ‘int [3][2]‘
33    // printf("%lu\n",sizeof(a));
34
35     //遍历数组,循环嵌套
36     for (int i= 0; i < h; i++)
37     {
38         for (int j = 0; j< l; j ++)
39         {
40             printf("%p\t",&a[i][j]);//数组存储顺序,先行后列
41             //printf("%d ",a[i][j]);
42         }
43         printf("\n");
44
45     }
46     printf("\n");
47
48 }

字符串

"hello" //这就是一个字符串,由多个字符组成,以字符\0结束,\0字符不可见。

字符串输出时用 %s。

字符串的长度:strlen函数获取字符处的长度,不包括\0字符

1 #include <stdio.h>
 2 #include <string.h>//strlen 函数头文件
 3
 4 //是否包含字符c,有得话返回,否则返回1
 5 char containC(char str[],int n);
 6
 7 //字符串
 8 int main()
 9 {
10     char c1[] = "jkhasdjkfhnkcdfdf";//系统自动添加结束字符 \0
11     char c2[] = {‘1‘,‘2‘,‘3‘,‘\0‘};//这样赋值的话,要自己加上结束字符 \0
12     printf("%s\t %s\n",c1,c2);
13     printf("%lu\t %lu\n",strlen(c1),sizeof(c1));//strlen获得字符串长度,不包括\0
14
15     printf("%c\n",containC(c1,strlen(c1)));
16
17     return 0;
18 }
19
20 //是否包含字符c,有得话返回,否则返回1
21 char containC(char str[],int n)
22 {
23     //循环遍历字符串
24     for (int i = 0; i < n ; i ++)
25     {
26         if (str[i] == ‘c‘)
27         {
28             return ‘1‘;//找到返回1
29         }
30     }
31     return ‘0‘;//找不到返回0
32 }
时间: 2024-10-18 10:54:09

006-数组的相关文章

Javascript简明教程(3) 数组

JavaScript的Array可以包含任意数据类型,并通过索引来访问每个元素.要取得Array的长度,直接访问length属性: [JavaScript] 纯文本查看 复制代码 ? 001 002 var arr = [1, 2, 3.14, 'Hello', null, true]; arr.length; // 6 请注意,直接给Array的length赋一个新的值会导致Array大小的变化: [JavaScript] 纯文本查看 复制代码 ? 001 002 003 004 005 00

oc_类的数组的实现和操作

OC的数组对象的基本方法的使用:因为OC的数组中存储的为对象类型,所以我们可以新建一个Person类,通过Person生成对象进行操作. 其中Person.h中的代码为: 01.#import<Foundation/Foundation.h> 02.@interfacePerson: NSObject{ 03. NSString*_name;//姓名 04. NSString*_sex;//性别 05. NSInteger_age;//年龄 06.} 07.-(NSInteger)age; 0

【LeetCode】006 ZigZag Conversion

题目:LeetCode 006 ZigZag Conversion 题意:给一个字符串"PAYPALISHIRING" 按照ZigZag的形式,即按照下面的顺序排列,然后 在转换成一行一行的读取方式,得到"PAHNAPLSIIGYIR".其中行数不定. 思路:肯定是不能去开一个二维数组的,必须要找出规律来直接输出.发现间隔是和总行数numRows有关,另外,第一行和最后一行需要单独考虑,每两个字符间隔一致,为2*(numRows-1):其余行有两种间隔,设当前为第L

Ruby七天入门(2 函数,数组和类)

DAY 2 第二天学习继续,今天重点学习函数,数组和类等编程的基本要素. 2.1 函数 2.1.1 简单定义 def tell_me puts true end 定义一个简单的函数(无参无返回值)很简单,使用def end包裹函数体即可. 2.1.2 参数 def tell_me(a) puts a end tell_me 1 1 => nil 使用参数和其他语言类似,加括号加变量名即可. 2.1.2.1 参数默认值 同样可以指定参数默认值: def tell_me(a='1',b) puts

第一周 从C走进C++ 006 动态内存分配

1. 用new 运算符实现动态内存分配 第一种用法,分配一个变量: P = new T; T是任意类型名,P是类型为T * 的指针. 动态分配出一片大小为 sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P.比如: int * pn; pn = new int; * pn = 5; 第二种用法,分配一个数组: P = new T[N]; T :任意类型名 P :类型为T * 的指针 N :要分配的数组元素的个数,可以是整型表达式 动态分配出一片大小为 sizeof(T)字节的内

关于数组的一些

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

移除数组中第一个负数后的所有负数

scala> val a = ArrayBuffer[Int](1, 2,3, 5, -1, 2, -3, -5) a: scala.collection.mutable.ArrayBuffer[Int]= ArrayBuffer(1, 2, 3, 5, -1, 2, -3 , -5)   scala> :paste // Entering paste mode (ctrl-D tofinish)   var foundFirstNegative = false val keepIndexes

NumPy基础:数组和失量计算

NumPy : Numerical Python,是高性能科学计算和数据分析的基础包. 部分功能: ndarray:一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组: 用于对整组数据进行快速运算的标准数学函数(无需编写循环): 用于读写磁盘数据的工具以及用于操作内存映射文件的工具: 线性代数.随机数生成以及傅里叶变换功能: 用于集成C.C++.Fortran等语言编写的代码工具: 大部分数据分析应用关注的功能: 用于

Matlab - 求数组的零值与过零点索引

function zeroindex=pickzero(x)%找出数组的零值及过零点(正负相交处,可能偏离0)m = length(x);x1=x(1:m-1);x2=x(2:m);indz = find(x==0); %zero pointindzer = find(x1.*x2<0); %negative/positiven=length(indzer);for i=1:n if abs(x(indzer(i)))>abs(x(indzer(i)+1)) indzer(i)=indzer(

Java中数组的概念

1.什么是二维数组?有几种表达方式?分别是什么? 答:多维数组即数组的数组,即数组的元素也是数组. 例:int[] [] a = {{1},{1,2},{1,2,3}}; 有三种方式 1).int [] [] a;  2).int [] a1 [];  3).int a2 [] []; *强烈推荐用第1种,不容易混淆a的数据类型: 2.多维数组的创建过程是什么? 答: 例:int [] [] a = new int [2] []; a[0] = {1,2,3}; a[1] = {4,5,6};