编写程序,求一个二维数组(5行5列)中每行的最大值和每行的和。 帮忙看看哪错了呗,谢谢啦

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写程序,求一个二维数组(5行5列)中每行的最大值和每行的和。 帮忙看看哪错了呗,谢谢啦相关的知识,希望对你有一定的参考价值。

#include"stdio.h"
#define N 5
#define M 5
main()
int i,j,max,s;
int a[N][M]=99,96,95,92,88,87,85,86,82,70,70,80,60,65,62,60,53,52,51,50,90,45,52,33,12;
for (i=0;i<N;i++)
max=a[i][0];s=0;
for(j=0;j<M;j++)
if (a[i][j]>a[i][0])
max=a[i][j];s=s+a[i][j];

printf("%d,%d",max,s);
printf("\n");

#include"stdio.h"

#define N 5

#define M 5 

main()

int i,j,max,s;

int a[N][M]=99,96,95,92,88,87,85,86,82,70,70,80,60,65,62,60,53,52,51,50,90,45,52,33,12;

for (i=0;i<N;i++)

max=a[i][0];s=0;

for(j=0;j<M;j++)

                                //少了花括号

if (a[i][j]>a[i][0])

max=a[i][j];s=s+a[i][j];

printf("%d,%d\\n",max,s);

                                //少了花括号

system("pause");

追问

如果是输入5行5列的数列,不给具体的值,该怎么定义呢

追答

int a[N][M];
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&a[i][j]);
for (i=0;i<N;i++)
max=a[i][0];s=0;
........

参考技术A

比较应该是和max比较。

另外每次计算每行的和以后没有输出s就赋为了0。

最后那个数据大得不科学的原因是少了对括号。

另外请务必使用int main和return 0;有时候会坑你的QAQ

以下是代码,亲测可用。

#include"stdio.h"
#define N 5
#define M 5 
int main()
    int i,j,max,s;
    int a[N][M]=99,96,95,92,88,87,85,86,82,70,70,80,60,65,62,60,53,52,51,50,90,45,52,33,12;
    for (i=0;i<N;i++)
        max=a[i][0];s=0;
        for(j=0;j<M;j++)
            if (a[i][j]>max)
                max=a[i][j];
            s=s+a[i][j];
        
        printf("%d,%d\\n",max,s);
    
    return 0;

追问

如果是输入5行5列的数列,不给具体的值,该怎么定义呢

追答

可能我误会了你的问题。请具体解释一下输入数列而不给值的意思,是指开了数组但是不初始化吗?

追问

就是随意输入数组

追答

问题还是不太明确……我把两种可能都答了吧。
如果是定义一个5×5的数组但是通过输入赋值的话,这样的程序修改一下就没问题了。
如果数组的大小也要变化的话,一般是开动态数组或者开最大静态数组,如果不是写一个软件之类的一般考虑开最大静态数组,然后按照第一种可能来处理。
不知道你是哪个意思。请明确一下。如果需要代码我可以继续写。

参考技术B 内层for循环不止一个语句,一定要用 括起来:
for(j=0;j<M;j++)
if (a[i][j]>a[i][0])

max=a[i][j];s=s+a[i][j];
追问

如果是输入5行5列的数列,不给具体的值,该怎么定义呢

追答

printf("请输入数据:\n");
for(j=0;ja[i][0])

max=a[i][j];s=s+a[i][j];

printf("%d,%d",max,s);

Java的二维数组的应用及杨辉三角的编写

(1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出。

(2) 编程输出杨辉三角的前10行。

找出一个,即该位置上的元素在该行上最大,在该列上最小(注:一个二维数组也可能没有这样的鞍点)。

 

 

 

/**
*
* @author liuhui
*@version Java上机实验三
*@time 2016.10.30
*/

public class javatest2 {
  public static int line = 0,row = 0;
  public static void main(String[] args) { //主函数
  int b[][] = array();
  int c[] = linearArray(b);
  double d[] = average(b);
  printArrayOne(b);
  System.out.println();
  printArrayTwo(c);
  System.out.println();
  printArrayTwo(d);
  System.out.println();
  triangle aTriangle = new triangle();

  aTriangle.print();
  int f[] = saddle(b, c);
  for(int i=0;i<f.length;i++)
  {
    if(f[i]==-1)
    break;
  else
    System.out.print(f[i]+" ");
  }

}

public static int[][] array() //获得随机二维数组
{
  int a[][] = new int[10][10];
  for(int i=0;i<10;i++)
  {
    for(int j=0;j<10;j++)
    {
      int r = (int) (Math.random()*10);
      a[i][j] = r;
     }
   }
  return a;
}
public static void printArrayOne(int a[][]) //打印二维数组
{
  for(int i=0;i<10;i++)
  {
    System.out.println();
    for(int j=0;j<10;j++)
    {
       System.out.print(a[i][j]);  
       System.out.print(" ");
    }
  }
  System.out.println();
}
public static void printArrayTwo(int a[]) //打印一维数组
{
  for(int i=0;i<10;i++)
  {
    System.out.print(a[i]+" ");
  }
}
public static void printArrayTwo(double a[])
{
  for(int i=0;i<10;i++)
  {
  System.out.print(a[i]+" ");
  }
}
public static int[] linearArray(int a[][]) //求每行数组的最大值
{
  int max = 0;

  int b[] = new int[10];
  for(int i=0;i<10;i++)
  {
    for(int j=0;j<10;j++)
    {
      if(max<a[i][j])
      {
        max = a[i][j];
        line = i;
        row = j;
      }
    }
    b[i] = max;
    max = 0;
  }
  return b;
}
public static double[] average(int a[][]) //求每列数组的平均数
{
  double b[] = new double[10];
  double sum = 0.0;
  for(int i=0;i<10;i++)
  {
    for(int j=0;j<10;j++)
    {
      sum = sum +a[i][j];
    }
    b[i] = sum/10;
    sum = 0.0;
  }
  return b;
}
public static int []saddle(int a[][],int b[]) //判断鞍点
{
  int c[] = new int [10];
  int m = 0;
  boolean k = true;
  for(int i=0;i<10;i++)
  {
    for(int j=0;j<10;j++)
    {
      if(b[i]>a[j][row])
      {
        k = false;
        break;
      }
    }
    if(k==true)
    {
      c[m] = b[i];
      m++;
    }
  }
  if(k==false)
  {
    System.out.println("没有鞍点");
    c[0] = -1;
  }
  return c;
  }
}

 

class triangle{ //做杨辉三角
public void print()
  {
    int b[][] = new int[10][];
    for(int i=0;i<10;i++)
    b[i] = new int[i+1];
    for(int i=0;i<10;i++)
    {
      for(int j=0;j<b[i].length;j++)
      {
        if(i==0||j==0||j==b[i].length-1)
          b[i][j] = 1;
        else
          b[i][j] = b[i-1][j-1] + b[i-1][j];
      }
     }

     for(int i=0;i<10;i++)
      {
        for(int k=9-i;k>=1;k--)
        System.out.print(" ");
        for(int j=0;j<i+1;j++)
        {
          System.out.print(b[i][j]+" ");
         }
        System.out.println();
      }

    }
}





































































































































































以上是关于编写程序,求一个二维数组(5行5列)中每行的最大值和每行的和。 帮忙看看哪错了呗,谢谢啦的主要内容,如果未能解决你的问题,请参考以下文章

二维数组找鞍点

java 编写一C程序,随机生成20个1 ~ 100的随机整数......

c语言编写程序,对5x5矩阵的下半三角形各元素中的值乘以2,要求数组a的每行每列元素值由随机函数

PHP如何取二维数组中的某列的最大值和最小值?

数组去重最大值二维数组

二维数组的 每行的元素个数必须一样吗?