首页 > 解决方案 > 计算数组中有多少个数满足特定条件的函数

问题描述

我想创建一个函数来计算一个数组包含多少个“主要”数字。占主导地位的意思是一个数字比它自己右边的任何东西都大。我创建了 main 来测试它是否有效,但程序只是崩溃了。有什么建议么?

    #include <stdio.h>
    #include <stdlib.h>
    #define NR 4
    #define NC 8
    int dominants(int arr[NR][NC]);
    int main(int argc,const char *argv[]){
          int n;
          int array[NR][NC]={{5,9,2,4,1,7,2,4}
                            ,{3,5,6,2,5,6,1,2}
                            ,{1,3,4,7,8,8,3,0}
                            ,{1,3,5,6,7,8,2,1}};

          n=dominants(array);
          printf("there are %d dominants", n);
          return 0;
    }
    int dominants(int arr[NR][NC]){
        int i, j, k, l;
        int flag, num;
        num=0;
        flag=0;
        for(i=0;i<NC;i++){
            for(j=0;j<NR;j++){
                for(k=i+1;j<NC;k++){
                    for(l=k+1;l<NR;l++){
                        if(arr[j][i]<=arr[l][k]){
                            flag=1;
                        }
                    }

                }
            }
            if(flag==1)
                num++;
        }


    return num;
    }

标签: cfunctionfor-loopmultidimensional-array

解决方案


将第 24 行更改为条件有 j<NC 而它应该是 k<NC: "for(k=i+1;j<NC;k++){" 到 "for(k=i+1;k<NC;k++ ){"


推荐阅读