Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中对多维数组列进行排序_C_Arrays_Sorting_Multiple Columns - Fatal编程技术网

在C中对多维数组列进行排序

在C中对多维数组列进行排序,c,arrays,sorting,multiple-columns,C,Arrays,Sorting,Multiple Columns,我有一些C语言的代码: #include <stdio.h> #include <stdlib.h> int multiply(int); int main() { FILE *fp; int i, j, n, m, matrix[99][99], sum = 0, columnSums[99] = {0}; fp = fopen("data.txt", "r"); if(fp != N

我有一些C语言的代码:

#include <stdio.h>
#include <stdlib.h>

int multiply(int);

int main() {
    FILE *fp;
    int i, j, n, m,
        matrix[99][99],
        sum = 0,
        columnSums[99] = {0};

    fp = fopen("data.txt", "r");
    if(fp != NULL) {
        fscanf(fp, "%d", &n);
        fscanf(fp, "%d", &m);

        for(i = 0; i < n; i++) {
            for(j = 0; j < m; j++) {
                fscanf(fp, "%d", &matrix[i][j]);
            }
        }

        for(i = 0; i < m; i++) {
            for(j = 0; j < n; j++) {
                sum += multiply(matrix[j][i]);
            }
            columnSums[i] = sum;
            sum = 0;
        }
    } else {
        puts("Cannot read the file!");
    }
    puts("");
    system("pause");
    return 0;
}

int multiply(int thisNum) {
    return thisNum * thisNum *thisNum;
}
#包括
#包括
整数乘(int);
int main(){
文件*fp;
inti,j,n,m,
矩阵[99][99],
总和=0,
列和[99]={0};
fp=fopen(“data.txt”,“r”);
如果(fp!=NULL){
fscanf(fp、%d、&n);
fscanf(fp、%d、&m);
对于(i=0;i
我的任务要求我从文本文件中读取多维数组,然后通过将每个列成员相加并将其自身乘以三次对每个列进行排序。
读取一个数组并找到每个列的加法并将其存储到另一个存储每个列的加法的数组中并不困难(希望这会有所帮助),但我一直在整理它。有什么建议吗?:)

您可以使用stdlib.h中声明的qsort函数

您可以使用qsort()。别忘了包括stdlib.h

#define ARR_SIZE(a) (sizeof(a) / sizeof(*(a)))

int comp(const void* a, const void* b)
{
    return *(const int*)a - *(const int*)b;
}

...

for (i = 0; i < ARR_SIZE(matrix); i++)
{
    qsort(matrix[i], ARR_SIZE(matrix[i]), sizeof matrix[i][0], comp);
}
#定义ARR#u大小(a)(sizeof(a)/sizeof(*(a)))
内部组件(常数无效*a,常数无效*b)
{
返回*(常数整数*)a-*(常数整数*)b;
}
...
对于(i=0;i
中声明。它可能是在
libc中定义的。所以
。关于如何在我的任务中使用它,可能有什么建议吗?@iNfas你知道如何在一维数组中使用
qsort()
。将其扩展到固定宽度的二维数组相当简单。@H2CO3:对。。。更正。@WhozCraig是的,我的程序刚刚运行;)