1.将两个数组合并成一个新的数组,并对其进行从小到大的顺序排列(冒泡排序)
int a[5] = {12, 63, 51, 23, 9};
int b[5] = {20, 35, 15, 98, 60};
int c[10] = {0};
//定义两个数组和空数组(数组长度为10)
for (int i = 0; i < 10; i++) {
if (i > 5) {
c[i] = a[i];
}
else c[i] = b[i - 5];
}
//实现数组的合并,将其放入一个新的数组c[10]里
for (int i = 0; i < 10; i++) {
printf("c[%d] = %d\n", i + 1, c[i]);
}
//for循环依次输出排序后新的数组元素
2.二维数组的行和列交换,存储到另外一个新的数组中
//先定义两个数组,其中一个为空数组
int arr1[2][3] = {2, 3, 4, 9, 6, 1};
int arr2[3][2] = {0};
//进行两个for循环将两个数组的行和列交换,在两个数组赋值交换的时候,不要将“=”两边的数组写反了,尤其是数组下标,下标要进行交换的
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
arr2[j][i] = arr1[i][j];
}
}
//一个for循环将得到的新数组输出,现在的数组第一维下标是j,第二维下标是i,不要弄反了。
for(int j = 0; j < 3; j++) {
for(int i = 0; i < 2; i++) {
printf("arr2[%d][%d] = %d\n", j, i, arr2[j][i]);
}
}
3.在数组中找出最大元素的方法除了用if条件语句外,还可以用三目运算符来找出最大元素
例:if (array[m][n] > max){
max = array[m][n];
}
//if语句可以直接找出最大元素的位置(即下标),三目运算符中比较一直循环,不能直观的看出下标,再用一个for循环找出下标,即当最大值等于数组中的某一元素时,位置就显而易见了
三目运算符:
max = max < array[m][n] ? max : array[m][n];
4.字符串数组
注意:1.求字符串长度的结果数据类型是unsigned long(无符号长整型);2.无论是赋值还是两个数作比较,都要双方类型一致;3.字符串访问:数组名加一维下标
5.计算字符长度是用strlen 如:unsigned long length = strlen(str);
输出长度时用%lu格式化输出;在字符串数组(二维数组)中求某一元素长度时,选取第一维数组的整个元素,即二维数组a[i][j],求长度:strlen(a[i]).
6.字符数组拼接用strcat,字符数组进行复制时用strcpy,字符数组比较用strcmp,在字符数组比较的时候,是根据对应下标字符的ASCII码值来比较(减法),直至差为0,说明两个数组不相同,返回差值。
例:创建一个字符串数组,内容是周围一圈人得名字,对字符串(英文)从小到大排序
//先定义一个字符串数组
char string[3][15] = {字符串1, 字符串2,字符串3};
//用冒泡排序法进行比较
for (int i = 0; i < 3 - 1; i++) {
for (int j = 0; j < 3 - 1 - i; j++) {
//字符串比较strcmp和复制strcpy
if (strcmp(string[i], string[i + 1]) > 0 ) {
strcpy(&temp, string[i + 1]);
strcpy(string[i + 1], string[i]);
strcpy(string[i], &temp);
}
}
}
for(int i = 0; i < 3; i++) {
printf("字符串排序string[%d] = %s\n", i, string[i]);
}