二维数组转一维数组,,

img

帮一下啊!!求一下!!?不知道从哪去下手做

二维数组转为一维数组,可以用一个指向二维数组的指针来遍历二维数组的元素,然后把每个元素赋值给一维数组即可;

然后一维数组的排序可以使用冒泡排序或者选择排序都可以。

代码如下:

参考链接:
选择排序_百度百科


#include <stdio.h>

int main(void){
    
    int arr[2][10]={{34,45,78,90,3,40,6,101,1,76},{24,20,789,109,35,58,345,15,10,55}};
    int arrTemp[20];
    int *p=&arr[0][0]; //用一个int型指针指向二维int型数组第一个元素,用于后面遍历二维数组的内容 
    
    int i=0;
    while(i<20){ //用指针遍历二维数组的所有元素,然后把每个元素的值赋值给一维数组的相应元素 
        arrTemp[i]=p[i];
        i++;
    }    
    
    //打印转换为一维数组后的结果 
    printf("转为一维数组后的结果为:\n"); 
    for(i=0;i<20;i++){
        printf("%d ",arrTemp[i]); 
    }
    printf("\n");
    
    int temp,j;    
    // 使用选择排序从到小排序一维数组
    //   https://baike.baidu.com/link?url=uzrzDH96tRLJRnR1W_602MUyK6ztPxRH5VueQ9Mk3P2Kfb6H3jC5UlzEUUFfIe9BguHxuXWYUYdyZPyx2zgm_zBvdcXRyeOFS1M_Hk3fORsCnulIudiobRQ-ANOS38Sl 
    for(i=0;i<20;i++){
        for(j=i;j<20;j++){
            
            if(arrTemp[i]<arrTemp[j]){
                temp = arrTemp[i];
                arrTemp[i] = arrTemp[j];
                arrTemp[j] = temp;
            }
            
        }
    }
    
    printf("从大到小排序后的结果为:\n");
    for(i=0;i<20;i++){
        printf("%d ",arrTemp[i]); 
    }
    printf("\n");
    
    return 0;
} 

img