一个二维数组,譬如N * M的二维数组,遍历该二维数组,找出符合条件的行,即(N可能的取值)

这个条件指的是,每一行的每一个元素都要与一个已知的值P比较,如果这一行的所有值(即这M个值)都大于这个已知的值P,那么该行有效,即把该行的值取出,请问C++怎么实现?谢谢。

#include<stdio.h>

main(){
int *a;
int i,j,N,M,P,flag;
printf("input N M, N-num of row, M-num of column\n");
scanf("%d %d",&N,&M); // 输入 行数 列数
a = (int *) malloc(sizeof(int) * N * M); //动态分配内存
printf("input data int the order of row:\n");
for (i=0;i<N*M;i++){
scanf("%d",&a[i]); // 输入 2维数组
}
printf("input P\n"); scanf("%d",&P); // 输入判据
for (j=0;j<N;j++){
flag = 1; // 成功失败标志
for (i=0;i<M;i++) {
if (a[j*M+i] <= P) {flag = 0;break;}
}
if (flag == 1) { printf("row %d: ",j); for (i=0;i<M;i++) printf("%d ",a[j*M+i]); printf("\n");}
}
return 0;
}

输出行号 和 数据。
温馨提示:答案为网友推荐,仅供参考