解决数组问题

来源:互联网 发布:苹果mac锁屏快捷键 编辑:程序博客网 时间:2024/05/29 17:30

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]);

}







0 0
原创粉丝点击