数组: 是一种构造数据,因为数组中的数据都是一个个基本数据类型组成的。
定义数组的时候,需要注意一下几点:
* 数组元素的个数,不能使用变量,只能使用常量表达式,或者符号常量
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;
- 两个数组同位置相加并放到另外一个数组中
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;
- 三目运算求最值
n = max < arr [i] ? max : arr[i]; //最大值
n = min <= arr[i]?min:arr[i]; // 最小值
-
- 冒泡排序
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]的值输出
- 利用strlen(字符串名) 计算字符串的长度
char str[ ] = “ lanou”;
unsigned long len = strlen( str); // 只计算有效长度,遇\0停止。
printf ( “len = %lu\n”,len);
- 利用strcyp (字符串名) 将字符串进行拷贝
// strcpy( ) 的拷贝是覆盖式的,遇到 \0就停止,前面的字符串要足够大。
char str1[20] = “lanou”;
char str2[15] = “henan”;
strcpy(str1,str2);
printf(“%s\n”,str1);
利用strcat( ) 进行字符串的拼接
// 将后面的字符串拼接到前面的字符串后,前面的字符串容量要足够大,遇到 \0 停止。
char str8[30] = “lan”;
char str9[15] = “o\0u”; // 添加了 \0 只会拼接前面的一个o
strcat(str8, str9);
printf(“%s\n”,str8);利用strcmp()进行字符串的比较
//两个字符串进行减法运算,一旦发现差值不为零,就立刻返回差值,后面的不再进行比较。 遇到 \0 停止
char str8[30] = “lanou”;
char str9[15] = “lanuu”;