——构造类型
->数组
->一维数组
->相同类型的一组数据
->类型修饰符--数组名—[数组的元素个数(必须是整型表达式或者是整型常量,不能是变量)] {初始化}
int arr[3] = {1,2,3}; arr[1] = 5; printf("%d",arr[1]);
->数组内存的值为变量
->使用数组的时候中括号内可以是变量
->sizeof()是一个运算符,不是一个函数,可以计算变量或者变量修饰符占了多少个字节,也可以对数组进行计算占的字节数
int a[3] = {1,2,3}; printf("%ld ",sizeof(double)); printf("%ld ",sizeof(char)); printf("%lu",sizeof(a));
->数组所占用的内存空间等于数组元素个数*单个元素所占的内存空间.
->用循环输出数组比较快
short arr[] = {1,2,3}; printf("%ld ",sizeof(arr)); for (int i = 0; i < 3 ; i ++) { printf("%d ",arr[i]); }
->数组合并
for (int i = 0; i < 100000000; i++) { int a[20] = {0}, b[20] = {0}, c[20] = {0}; for (int i = 0; i < 20; i ++) { a[i] = arc4random() % 21 + 20; b[i] = arc4random() % 21 + 20; c[i] = a[i] + b[i]; if (c[i] == 80) { printf(" a[%d](%d)+ b[%d](%d)= c[%d](%d)",i,a[i],i,b[i],i,c[i]); } // printf(" a[%d](%d)+ b[%d](%d)= c[%d](%d)",i,a[i],i,b[i],i,c[i]); } }
->循环输入值,赋值给相应的数组下标
//错误问题:
//数组是一个整体不能够参与运算
//只能取每个元素逐一使用
//随机一个具有20 整型数组 找出数组中最大值 int a[20] = {0}; int max = 0; for (int i = 0 ; i < 20; i++) { a[i] = arc4random() % 100; printf("%d ",a[i]); if (a[i] > max) { max = a[i]; } //max = a[i] > max ? a[i]:max; } printf(" 最大数:%d",max); int a[20] = {0}; int min = arc4random() % 101; for (int i = 0; i < 20 ; i++) { a[i] = arc4random() % 101; if (min > a[i]) { min = a[i]; } printf("%d ",a[i]); } printf(" 最小值:%d",min); int a[5] = {0}; for (int i = 0 ; i < 5 ; i ++) { scanf("%d",&a[i]); } for (int i = 0 ; i < 5 ; i++) { printf(" %d",a[i]); }
——算法
->数组排序
->冒泡排序
->若有n个元素,则外层循环走n - 1次
->内层循环需要, n - 1 - i 次
1 int arry[5] = {0}; 2 for (int i = 0 ; i < 5; i ++) { 3 arry[i] = arc4random()%21 + 50; 4 printf("%d ",arry[i]); 5 } 6 printf(" "); 7 for (int i = 0 ; i < 4 ; i++) { 8 for (int j = 0 ; j < 4 - i; j++) { 9 if (arry[j] > arry[j + 1]) { 10 int temp = arry[j]; 11 arry[j] = arry[j+1]; 12 arry[j+1] = temp; 13 } 14 } 15 } 16 for (int i = 0; i < 5; i++) { 17 printf("%d ",arry[i]); 18 }
->选择排序
->外层循环控制比较趟数,每趟开始的时候假定开始的位置是最小值
->内层循环,从后面的一个值开始逐一比较,如果比最小值更小,更新,最小值的 位置.
->每趟结束之后如果最小值的位置和假定的最小值位置不一样则交换,一样则不用交换位置.
(也就是每趟比较的是下标,交换的也是下标,保证每趟交换之后,下标是最小的,然后再与最初假定的最小下标相比,如果不相同 则交换值)
1 int arry[20] = {0}; 2 for (int i = 0; i < 20 ; i++) { 3 arry[i] = arc4random() % 100; 4 printf("%d ",arry[i]); 5 } 6 for (int i = 0 ; i < 19 ; i++) { 7 int minIndex = i; 8 for (int j = i + 1 ; j < 20 ; j++) { 9 if (arry[minIndex] > arry[j]) { 10 minIndex = j; 11 } 12 13 } 14 if (minIndex != i) { 15 int temp = arry[i]; 16 arry[i] = arry[minIndex]; 17 arry[minIndex] = temp; 18 } 19 } 20 printf(" "); 21 for (int i = 0 ; i < 20; i++) { 22 printf("%d ",arry[i]); 23 }
—字符数组
->数组里也都是变量
->%s专门输出字符串
->