有没有C语言的朋友,帮我一下。明天就要交了。大哭,如何解决?

img


请帮我解决一下这个问题,需要用c++的程序写出完整的代码,感谢大家的帮助

类似的,如有帮助,望采纳

请编写函数fun,该函数的功能:将m行n列的二维数组中的数据,按列的顺序依次放到一维数组中。

详细代码:

#include<stdio.h>
void fun(int a[][4], int* b);
int main()
{
    int c[20] = { 0 }, f[3][4] = { 1,4,7,10,2,5,8,11,3,6,9,12 },*t=c;
    fun(f, c);
    while (*t)
    {
        printf("%d ", *t);
        t++;
    }
}
void fun(int a[][4], int* b)
{
    for (int i = 0;i < 4;i++)
    {
        for (int j = 0;j < 3;j++)
        {
            *b = a[j][i];
            b++;
        }
    }
}


c还是c++

//解决如下
#include<stdio.h>
int a[2][10];
int b[20];
int main()
{
    a[0][0]=34;//存入
    a[0][1]=45;
    a[0][2]=78;
    a[0][3]=90;
    a[0][4]=3;
    a[0][5]=40;
    a[0][6]=6;
    a[0][7]=101;
    a[0][8]=1;
    a[0][9]=76;
    a[1][0]=24;
    a[1][1]=20;
    a[1][2]=789;
    a[1][3]=109;
    a[1][4]=35;
    a[1][5]=58;
    a[1][6]=345;
    a[1][7]=15;
    a[1][8]=10;
    a[1][9]=55;
    int cnt=0;
    for(int i=0;i<=1;++i)//存一维数组,输出
    {
        for(int j=0;j<=9;++j)
        {
            b[cnt++]=a[i][j];
            printf("%d ",b[cnt-1]);
        }
    }
    printf("\n");
    for(int i=0;i<20;++i)//冒泡排序
    { 
        for(int j=0;j<19;++j)
        {
            if(b[j]>b[j+1])
            {
                int temp;
                temp=b[j];
                b[j]=b[j+1];
                b[j+1]=temp;
            }
        }
    }
    for(int i=0;i<20;++i)
    {
        printf("%d ",b[i]);
    }
    printf("\n");
    return 0;
}

@2201_75467569

首先,我們需要定義一個二維數組,它有2行10列。我們可以這樣定義它:

int[][] array = new int[2][10];

接下來,我們需要將給定的20個整數存入這個數組中。我們可以這樣做:



int[] numbers = {34, 45, 78, 90, 3, 40, 6101, 1, 76, 24, 20789109, 35, 58345, 1510055};
for (int i = 0; i < 2; i++) {
  for (int j = 0; j < 10; j++) {
    array[i][j] = numbers[i * 10 + j];
  }
}

現在,我們可以按照題目要求輸出這個二維數組。要輸出它,我們可以這樣做:


// 輸出二維數組(按輸入順序)
for (int i = 0; i < 2; i++) {
  for (int j = 0; j < 10; j++) {
    System.out.print(array[i][j] + " ");
  }
  System.out.println();
}

接下來,我們需要將這個二維數組轉換為一維數組。我們可以這樣做:


int[] array1D = new int[20];
for (int i = 0; i < 2; i++) {
  for (int j = 0; j < 10; j++) {
    array1D[i * 10 + j] = array[i][j];
  }
}

接下來,我們可以按照題目要求輸出這個一維數組。要輸出它,我們可以這樣做:


// 輸出一維數組
for (int i = 0; i < 20; i++) {
  System.out.print(array1D[i] + " ");
}

二维数组转一维数组,只需要强行转换就可以了啊

#include <iostream>
using namespace std;
int main()
{
    int a[2][10] = {{34,45,78,90,3,40,6,101,1,76},{24,20,789,109,35,58,345,15,10,55}};
    int *p = (int*)a;
    int i=0,j,t;
    for(i=0;i<20;i++)
        cout<<*(p+i)<<" ";
    cout<<endl;
    for(i=0;i<19;i++)
    {
        for(j=0;j<19-i;j++)
        {
            if(*(p+j) < *(p+j+1))
            {
                t = *(p+j);
                *(p+j) =  *(p+j+1);
                 *(p+j+1) = t;
            }
        }
    }
    for(i=0;i<20;i++)
        cout<<*(p+i)<<" ";
    return 0;
}