有没有人解答,速度一点的!

函数题
定义一个二维数组 每一行都以0结束 然后找出每一行中绝对值最大的数输出

你题目的解答代码如下:

#include<stdio.h>
#include<stdlib.h>
int main(){
    int n,m,i,j,max;
    int a[100][100] = {0};
    printf("输入二维数组行数:");
    scanf("%d", &n);
    for(i = 0; i < n; i++){
        j = 0;
        scanf("%d", &a[i][j]);
        while (a[i][j]!=0)
        {
            j++;
            scanf("%d", &a[i][j]);
        }
    }
    for(i = 0; i < n; i++){
        max = a[i][0];
        for (j = 1; a[i][j]!=0; j++)
        {
            if (abs(max)<abs(a[i][j]))
            {
                max = a[i][j];
            }
        }
        printf("%d\n", max);
    }
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

简单的实现,参考代码如下:

int main(int argc, const char * argv[]) {
    // 比如定义一个二维数组a 有2行5列  根据需要进行赋值,这里没有赋值
    int a[2][5] = {{1, 2, -5, -8, 3}, {2, -10, 9, 8, 3}};
    // 遍历每一行
    for (int i = 0; i < 2; i++) {
        int max = 0; // 定义一个临时变量记录第i+!行绝对值最大的数
        // 遍历第i+1行的每一列,即每一个数
        for (int j = 0; j < 5; j++) {
            // 遇到 0 结束
            if (a[i][j] == 0) {
                break;
            }
            if (j == 0) {
                max = a[i][j];
            }
            if (abs(max) < abs(a[i][j])) {
                max = a[i][j];
            }
        }
        printf("第%d行绝对值最大的数是:%d\n", i+1, max);
    }
    
    return 0;
}

二维数组必须指定行数和列数,作为一般性函数,可以这样设计

void maxAbs(double *a, int n,int m){ /*a是数组的入口,n是行数,m是列数*/
    int  i,j;
    double max,mAbs;/*用来存储每行最大绝对值相关信息*/
    double t,tAbs;/*用来获取一个临时数*/
    for(i=0;i<n;i++){
        max=0;
        mAbs=0;
        for (j=0;j<m;j++){
              t=a[i*m+j];
              if ( t==0 ) break;
              if (t<0){
                   tAbs=-t;
              }else{
                   tAbs=t;
              }
              if (tAbs>mAbs){
                   mAbs=tAbs;
                   max=t;
              }
        }
        print("第%d行绝对值最大的数是:%f\n",i ,max);
    }
}