GOCOID112 2022-12-05 18:48 采纳率: 66.7%
浏览 27
已结题

二维数组转一维数组,,

img

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

  • 写回答

1条回答 默认 最新

  • a5156520 2022-12-05 19:26
    关注

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

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

    代码如下:

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

    
    #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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月5日
  • 已采纳回答 12月5日
  • 修改了问题 12月5日
  • 修改了问题 12月5日
  • 展开全部