检查二维数组中有多少个主数

标签 c arrays function multidimensional-array

在这个程序中,我应该找出矩阵有多少个主数。主导数字是比右下方的任何数字都大的数字(请忍受我的英语)。

我输入了这个:

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///

我圈出的应该是主要的,但它给了我6,出了什么问题?

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

#define NR 4
#define NC 8

int dominants(int a[NR][NC]);
int main(int argc, char * argv[]){
int array[NR][NC];
int ndom;
int i,j;


for(i=0;i<NR;i++){
        for(j=0;j<NC;j++){

        scanf("%d", &array[i][j]);
        }
}
printf("array entered:\n\n");
for(i=0;i<NR;i++){
        printf("\n");
        for(j=0;j<NC;j++){

        printf("%d  ", array[i][j]);
        }
}

ndom=dominants(array);

printf("amount of dominant numbers:%d", ndom);
return 0;
}
int dominants(int a[NR][NC]){
int domflag;
int i,j, l, m;
int numdom=0;
for(i=0;i<NR-1;i++){
    for(j=0;j<NC-1;j++){
        for(l=i+1;l<NR;l++){
                domflag=1;
                for(m=j+1;m<NC;m++){
                if(a[i][j]<=a[l][m]){
                    domflag=0;
                                    }
                                   }
                           }
            if(domflag==1){
                numdom++;
                          }
        }

    }
    return numdom;
}

最佳答案

domflag = 1;在循环内for (l = i + 1; l < NR; l++)但应该在它之外。

减少此类错误的一个好方法是仅在需要的地方定义标识符。如果定义int domflag;例程顶部的语句 domflag = 1; 被删除。更改为int domflag = 1; ,那么编译器稍后会给出一个错误,其中 domflag == 1已进行测试,因为这超出了定义的范围。

关于检查二维数组中有多少个主数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60238338/

相关文章:

python - 功能问题

c++ - 调用函数时切换 "transfer of control bypasses initialization of:"

c - 将 struct var 分配给函数的 retval 时为 "Incompatible types"

C 函数查找数组中的模式,打印出一个全为 0 的数组

c - 与字节的 boolean 运算

arrays - go: struct 中的数组丢失了它的内容

python - 将掩码结果转换为不同的随机数

c - 我们如何计算多重集的 r 组合?

c - 为什么 printf() 可以解析变量名以访问存储在其中的值,但 scanf() 不能(在 C 编程中)?

javascript - 如何更改定义为数组的变量而不必定义两次