一、一维数组
1.定义
2.定义的四种形式:
二、数组排序(*冒泡排序、选择排序、快速排序等)
冒泡排序:
三、字符数组
代码:
int main(int argc, const char * argv[]) {
//类型说明符 变量名 初值
// int a = 0;
//定义一个数组
//类型说明符 变量名 初值
//注意:1.数组中的每一个元素类型都相同
// 2.变量名同样要满足定义普通变量的要求
// 3.数组名方括号"[]"中要加"常量表达式"
// int array[5] = {1, 2, 3, 4, 5};
//初值的第二种写法
//相当于{3.1, 4.4, 5.6, 0, 0}
// float arrayF[5] = {3.1, 4.4, 5.6};
//初值第三种写法
//相当于{0, 0, 0, 0, 0}
// int arrayE[5] = {0};
//初值的第四种写法
//根据初值的个数来自动分配数组元素个数
//注意:定义数组时一定要指定好元素个数
// int arrayI[] = {1, 2, 3, 4, 5};
//一维数组定义练习
// double arrayA[10] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
// short arrayB[8] = {1, 2, 3, 4};
// char arrayC[4] = {0};
// int arrayD[] = {1, 2, 3, 4};
// char arrayM[5] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’};
//使用数组中的元素
//数组名[元素标号]
//注意:标号是从0开始的
// array[2] = 5;
//注意:越界错误!!!数组下标从0开始!!!
//相当于出轨
// int array[5] = {0};
// array[5] = 10;
//数组输出
// int array[5] = {1, 2, 3, 4, 5};
// printf(“%d “, array[0]);
// printf(“%d “, array[1]);
// printf(“%d “, array[2]);
// printf(“%d “, array[3]);
// printf(“%d “, array[4]);
// //for (int i = 0; i < 5; i++) {
// // printf(“%d “, array[i]);
// //}
// int array[1000] = {1, 2, 3};
//printf(“%d “, array[99]);
// int i = 1;
//引用数组元素,注意与定义的区分
//1.定义数组时要有类型说明符,引用时没有
//2.定义数组,”[]”中只能是加常量表达式,引用数组”[]”中可以是常量表达式,也可以是变量表达式
// printf(“%d “, array[i]);
//注意i的初始值和最终值,小心数组越界!!!
//数组是一个整体,不能直接参与运算,只能对单个元素进行处理,通常用到数组的地方都会用到循环
//名词:"遍历"->分别对数组中的元素进行一次操作
// for (int i = 0; i < 1000; i++) {
// //注意下标从0开始
// //将数组中每一个元素赋值为不同值
// array[i] = i;
// }
// for (int i = 0; i < 1000; i++) {
// printf(“%d “, array[i]);
// }
// printf(“\n”);
//练习
// 1.
// int array[20] = {0},sum = 0;
// for (int i = 0; i < 20; i++) {
// array[i] = arc4random() % (70 - 30 + 1) + 30;
// printf(“%d “, array[i]);
// sum += array[i];
// }
// printf(“\n数组的和是:%d\n”, sum);
// 2.
// int arrayA[10] = {0}, arrayB[10] = {0};
// for (int i = 0; i < 10; i++) {
// arrayA[i] = arc4random();
// printf(“arrayA[%d]=%d “, i, arrayA[i]);
// arrayB[i] = arrayA[i];
// printf(“arrayB[%d]=%d “, i,arrayB[i]);
// printf(“\n”);
// }
// 3.生成两个各有10元素数组,跟别求和存在另一个数组中
// int arrayA[10] = {0}, arrayB[10] = {0}, arrayC[10] = {0};
// for (int i = 0; i < 10; i++) {
// arrayA[i] = arc4random() % (40 - 20 + 1) + 20;
// printf(“arrayA[%d]=%d “, i, arrayA[i]);
// arrayB[i] = arc4random() % (40 - 20 + 1) + 20;
// printf(“arrayB[%d]=%d “, i, arrayB[i]);
// arrayC[i] = arrayA[i] + arrayB[i];
// printf(“arrayC[%d]=%d “, i, arrayC[i]);
// printf(“\n”);
// }
// int arr[10] = {0};
// for (int i = 0; i < 10; i++) {
// arr[i] = arc4random() % (40 - 20 + 1) + 20;
// printf(“%d “, arr[i]);
// }
// printf(“\n”);
// for (int i = 0; i < 10; i++) {
// if (7 == arr[i] % 10) {
// printf(“%d “, arr[i]);
// }
// }
//*******冒泡排序*******
// int a[10] = {0}, temp = 0;
// for (int i = 0; i < 10; i++) {
// a[i] = arc4random() % (40 - 20 + 1) + 20;
// printf(“%d “, a[i]);
// }
// printf(“\n排列之后的顺序为:\n”);
// //外循环控制进行几轮比较
// //排序N个元素的数组,只需将循环条件改成N - 1
// for (int i = 0; i < 9; i++) {
// //进行每轮比较,找当前一轮的最值
// for (int j = 0; j < 9 - i; j++) {
// //若当前元素大于后一个,则交换
// if (a[j] > a[j + 1]) {
// //交换两个元素
// temp = a[j];
// a[j] = a[j+1];
// a[j+1] = temp;
// }
// }
// }
// for (int i = 0; i < 10; i++) {
// printf(“%d “, a[i]);
//
// }
// printf(“\n”);
//对字符数组进行排序
// char arr[10] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’};
// //或者 char arr[11] = “abcdefghij”;
// for (int i = 0; i < 9; i++) {
// for (int j = 0; j < 9 - i; 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(“%c “, arr[i]);
// }
// printf(“\n”);
// char arrayC[] = {‘c’, ‘a’, ‘i’, ‘q’, ‘i’, ‘\0’};
// for (int i = 0 ; i < 6; i++) {
// printf(“%c”, arrayC[i]);
// }
// printf(“\n”);
//打印字符数组中的所有元素
//根据’\0’结束符来判断是否结束
//字符串打印 “%s”
//字符串定义,系统会自动在字符串结尾添加结束符’\0’
//注意:定义字符数组时,要多定义一个空间给’\0’
// char arrayC[6] = “caiqi”;
// printf(“%s\n”, arrayC);
// strlen() 计算字符串长度
// strcpy() 字符串拷贝
// strcat() 字符串拼接
// strcmp() 字符串比较
//函数"strlen()"求字符串长度
// char arrayC[6] = “caiqi”;
// int i = 0;
// while (arrayC[i] != ‘\0’) {
// i++;
// }
// printf(“%d\n”, i);
// long ret = 0;
// //作用:求一个字符串的长度
// //用法:存长度的变量 = strlen(待判断字符串)
// ret = strlen(arrayC);
// printf(“%ld\n”, ret);
//函数"strcpy()"字符串拷贝
// char arrayC[6] = “caiqi”;
// char temp[] = {0};
// //作用:复制一个字符串到另外一个字符数组中
// //用法:strcpy(目的数组,被复制的字符数组)
// //注意:temp要有足够的空间来存
// //const修饰一个变量,此变量不再可以被改变
// strcpy(temp, arrayC);
// printf(“%s\n”, temp);
//函数"strcat()"字符串拼接
// char arrayC[6] = “caiqi”;
// char temp[12] = “xiao”;
// //作用:将arrayC与temp两个字符串拼接起来,结果存于temp中(arrayC接在temp后面)
// //用法:strcat(字符串1, 字符串2);
// //注意:存字符串1的数组(即temp)需有足够空间来存拼接后的字符串
// strcat(temp, arrayC);
// printf(“%s\n”, temp);
//函数"strcmp()"字符串比较
// char arrrayC[6] = “caiqi”;
// char temp[12] = “xiao”;
// int ret = 0;
// //作用:比较两个字符串大小
// //用法:结果 = strcmp(字符串1, 字符串2);
// //解释:当第一大于第二个时,ret > 0;相等 ret = 0;小于 ret < 0;
// //解释:由左往右一次比较每个字符,当得到第一个不相等的字符,不再向后比较,并返回结果,结果为ascii码的差值
// ret = strcmp(temp, arrrayC);
// printf(“%d\n”, ret);
//练习:查数组中的空格个数
// int count = 0;
// char array[] = “I love iOS, i want an iPhone5s”;
// for (int i = 0; i < strlen(array); i++) {
// if (’ ’ == array[i]) {
// count++;
// }
// }
// printf(“%d\n”, count);
//字符串倒转
// char array[] = “afjnpue”;
// long ret = strlen(array);
// for (int i = 0; i < ret / 2; i++) {
// char temp = array[i];
// array[i] = array [ret - 1 - i];
// array [ret - 1 - i] = temp;
// }
// printf(“%s\n”, array);
return 0;
}