iOS——一维数组

来源:互联网 发布:dijkstra算法步骤s=, 编辑:程序博客网 时间:2024/06/05 19:15

数组: 是一种构造数据,因为数组中的数据都是一个个基本数据类型组成的。

定义数组的时候,需要注意一下几点:

*     数组元素的个数,不能使用变量,只能使用常量表达式,或者符号常量

int arr[3*2] = {1,2,3,4,5,6}; 其中3*2 就是常量表达式;

*      如果我们没有完全厨师化数组,其余的部分数据,系统会默认给我们的数组赋值为0;*        定义数组的时候,如果没有指定数组的长度,那么数组元素的个数由我们往数组中输入的个数来决定。

sizeof(数据类型/变量名) : 计算数据类型在内存中所占用的字节数,如果括号内是变量名,结果即为该变量的总长度。

int arr[5] = {1,2,3,4,5};
unsigned long size = sizeof(arr/int); 结果为20/4
printf(“size = %lu\n”,size);

sizeof 的返回值是无符号长整型(没有正负),只能是个正数占位符号为 “%lu”

// 定义一个整型数组 确定元素的个数
int arr[5] = {1,2,3,4,5,6,7};
// 数组元素的个数 = 数组所占的总字节数 / 数组的数据类型
int count = sizeof(arr) / sizeof(int);

访问数组arr[i]某个元素的步骤:
数组名[下标],下标的值为i-1,从0~i-1;
注意数组的越界:printf(“arr[6] = %d\n”,arr[6]); 错误!

遍历:
使用for循环把数组中的所有元素打印出来的操作,叫做数组的遍历,遍历是数组的下标,通过数组下标的改变取出数组中的每一个元素。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                                            练习笔记:

1. 类型转换

int sum = 100;
float a = 0;
a = sum*1.0 / 8; 或者 a = sum(float) / 8;

  1. 两个数组同位置相加并放到另外一个数组中

for (int i = 0; i < 10; i++) {
arr[i] = arc4random_uniform(40-20+1)+20;
arr1[i] = arc4random_uniform(40-20+1)+20;
a = arr[i]+arr1[i];
arr2[i] = a;

  1. 三目运算求最值

n = max < arr [i] ? max : arr[i]; //最大值
n = min <= arr[i]?min:arr[i]; // 最小值

    1. 冒泡排序

int arr[10] = {0};
for ( int i = 0; i < 10 - i; i++ )
{
arr[ i ] = arc4random_uniform(30 - 10 +1 ) +10 ;
printf(“%d\t”,arr[ i ] );
}
printf (“\n”); // 第一步 为数组赋值

for( int i = 0; i < 10-i-1; i++)
{ // 外层进行控制比较趟数
for( int j = 0; j< 10 -i -1; j++)
{ // 内层控制比较次数
if ( arr [ j ] > arr [ j+1] )
{
int temp = arr [ j ];
arr [ j ] = arr [ j+1 ];
arr[ j+1 ] = temp;
}
}
} // 第二步 进行由大到小排序
for ( int i = 0; i < 10; i ++)
{
printf ( “%d\t ”,arr [i] );
} // 第三步 经过十次循环,将上个for循环得到的 arr[0]~arr[10]的值输出

  1. 利用strlen(字符串名) 计算字符串的长度

char str[ ] = “ lanou”;
unsigned long len = strlen( str); // 只计算有效长度,遇\0停止。
printf ( “len = %lu\n”,len);

  1. 利用strcyp (字符串名) 将字符串进行拷贝

// strcpy( ) 的拷贝是覆盖式的,遇到 \0就停止,前面的字符串要足够大。
char str1[20] = “lanou”;
char str2[15] = “henan”;
strcpy(str1,str2);
printf(“%s\n”,str1);

  1. 利用strcat( ) 进行字符串的拼接

    // 将后面的字符串拼接到前面的字符串后,前面的字符串容量要足够大,遇到 \0 停止。
    char str8[30] = “lan”;
    char str9[15] = “o\0u”; // 添加了 \0 只会拼接前面的一个o
    strcat(str8, str9);
    printf(“%s\n”,str8);

  2. 利用strcmp()进行字符串的比较

//两个字符串进行减法运算,一旦发现差值不为零,就立刻返回差值,后面的不再进行比较。 遇到 \0 停止

char str8[30] = “lanou”;
char str9[15] = “lanuu”;

0 0