编写程序,找出二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。要求使用C语言,不是C++

编写程序,找出二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。要求使用C语言,不是C++,第1张

设计思路:

使用两个相同的二维数组,一个存数据,一个存是鞍点的可能性,可能性若为0,则不是鞍点;若为1,则不是鞍点,但是行最大数或者列最小数;若为2,则是鞍点;

首先,获取每行最大数,并赋给max,并将改行中与max相等的数是鞍点的可能性设为1,其他数的可能性设为0;

其次,获取每列最小数,并赋给min,并将该列中与min相等的数是鞍点的可能性增加1;

最后,判断每个数是鞍点的可能性,若是2,则是鞍点,输出。

流程图自己画吧

#include <stdioh>

#include <stdlibh>

#include <stringh>

#define ROW     3

#define COL    3

void main()

{

  int a[ROW][COL];

  int flag[ROW][COL];    //记录每个元素是鞍点的可能性,

  int i, j, max, min, count=0;

  printf("输入数组内容(%d行%d列):\n", ROW, COL);

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

  {

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

      {

          scanf("%d", &a[i][j]);

      }

  }

  for (i=0; i<ROW; i++)  //查找每行最大数, 并设置每个数是鞍点的可能性

  {

      max = a[i][0];

      for (j=1; j<COL; j++)

      {

          max = (max < a[i][j])a[i][j]:max;

      }

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

      {

          if (a[i][j] == max)//若是最大数,则鞍点可能性设为1,否则为0

              flag[i][j] = 1;

          else

              flag[i][j] = 0;

      }

  }

  for (j=0; j<COL; j++) //查找每列最小数,并设置每个数是鞍点的可能性

  {

      min = a[0][j];

      for (i=1; i<ROW; i++)

      {

          min = (min > a[i][j])a[i][j]:min;

      }

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

      {

          if (a[i][j] == min)//若是最小数,则鞍点可能性增加1

          {

              flag[i][j]++;

              count++;

          }

      }

  }

  printf("鞍点个数为:%d \n", count);

  for (i=0; i<ROW; i++)  //输出鞍点信息

  {

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

      {

          if (flag[i][j] == 2)

              printf("%d, (%d行%d列)\n", a[i][j], i, j);

      }

  }

  return;

}

public class Question {

  public Question() {

  }

  public static void main(String[] agrs ) {

  int[][] arr=new int[][]{ {2,3,9,6},{5,6,7,2},{1,2,8,4} };

  int i,j,k,t,col;

  for(i=0;i<arrlength;i++) {

  for(j=1,k=j+1;k<arr[i]length;k++) {

  if(arr[i][j]<arr[i][k]) {

  j=k;

  }

  }

  for(t=1,col=t+1;col<arrlength;col++) {

  if(arr[t][j]>arr[col][j]) {

  t=col;

  }

  }

  if(i==t) {

  Systemoutprintln(i+"  "+j);

  break;

  }

  }

  if(i>=arrlength) {

  Systemoutprintln("No");

  }

  }

}

直接写了,你有心可以改进!

(1)编写一个应用程序,要求将一个浮点数强制转化成整型后输出;

解答:

import javautilScanner;

public class Answer1 {

public static void main(String []args)

{

//(1) 强制转换

Scanner reader=new Scanner(Systemin);

Systemoutprint("请输入一个浮点数: ");

float f=readernextFloat();

//强制转换成整数

int d=(int)f;

Systemoutprintf("强制转换后等于: %d", d);

}

}

2)请计算出3~1000范围内最大的10个素数,放入数组中,并计算出其累加和;

解答:

import javautilScanner;

public class Answer2 {

public static void main(String []args)

{

//求1000以内的所有素数

int[] ss=new int[10];

int sum=0;

int n=1000;

int t=2;

int m;

int count=0;//记录素数的个数

for(m=n-1;m>2;m--)

{

while(m%t!=0)

{

if(t<m/2)

t++;

else

{

if(count+1<=10)

{

ss[count]=m;

}

if(count%10==0)

Systemoutprintln();

Systemoutprintf("%5d ", m);

count++;

break;

}

}

t=2;

}

Systemoutprintf("%5d\n\n",2);

Systemoutprintln("1000以内的素数有"+(count+1)+"个");

Systemoutprintln("最大的十个素数为");

for(int i:ss)

{

Systemoutprint(i+" ");

sum+=i;

}

Systemoutprintln("\n最大的十个素数之和为"+sum);

}

}

(3)水仙花数是3位数,它的各位数的立方和等于这个3位数本身,例如:371=3^3+7^3+1^3,371就是一个水仙花数。找出所有水仙花数;

解答:

import javautilScanner;

public class Answer3 {

public static void main(String []args)

{

//水仙花数

int ge;

int shi;

int bai;

int sum=0;

for(bai=1;bai<10;bai++)

for(shi=0;shi<10;shi++)

for(ge=0;ge<10;ge++)

if(bai100+shi10+ge==(int)

(Mathpow(bai, 3)+Mathpow(shi, 3)+Mathpow(ge, 3)))

{

Systemoutprintln(bai100+shi10+ge);

sum++;

}

Systemoutprintln("共有"+sum+"个");

}

}

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

解答:

import javautilScanner;

public class Answer4 {

public static void main(String []args)

{

int n=0;

int m=0;

Scanner reader=new Scanner(Systemin);

Systemoutprintln("请输入数组的行数:");

m=readernextInt();

Systemoutprintln("请输入数组的列数:");

n=readernextInt();

int[][] array=new int[m][n];

Systemoutprintln("请输入数组的元素:");

for(int i=0;i<m;i++)

for(int j=0;j<n;j++)

{

array[i][j]=readernextInt();

}

int[] maxArray=new int[m];

int[] minArray=new int[n];

int max=0,min=0;

for(int i=0;i<m;i++)

{

max=array[i][0];

for(int j=0;j<n;j++)

{

if(array[i][j]>max)

{

max=array[i][j];

maxArray[i]=j;

}

}

}

for(int j=0;j<n;j++)

{

min=array[0][j];

for(int i=0;i<m;i++)

{

if(array[i][j]<min)

{

min=array[i][j];

minArray[j]=i;

}

}

}

for(int i=0;i<m;i++)

{

if(array[i][maxArray[i]]==array[minArray[maxArray[i]]][maxArray[i]])

{

Systemoutprintln("鞍点是:");

Systemoutprintln("["+i+","+maxArray[i]+"]"+":"+array[i][maxArray[i]]);

}

}

}

}

/JAVA 设计一个5X5的二维数值型数组,

查找该数组是否存在鞍点,如果有,打印以及该元素所处的位置

鞍点就是该位置上的元素在该行最大并且在该列上最小/

public class Array0 {

public static void main(String[] args){

int[][] arr=new int[5][5];//定义一个55的二维数组

for(int i=0;i<5;i++){

for(int j=0;j<5;j++){

arr[i][j]=(int)(Mathrandom()100);//给数组中的元素随机赋值

}

}

Systemoutprintln("二维数组中的元素:");

for(int i=0;i<arrlength;i++){

for(int j=0;j<arrlength;j++){

Systemoutprint(arr[i][j]+" ");//打印

}

Systemoutprintln();

}

for(int a=0;a<5;a++){//找出第a行上的最大值,并找出最大值所在的列

int max=arr[a][0];

int x=0;

for(int b=0;b<5;b++)

{if(arr[a][b]>max){<br> max=arr[a][b];<br> x=b;<br> }

}

for(int c=0;c<5;c++){//判断第a行的最大值是不是所在的列的最小值

if(max>arr[c][x]){break;}//如果没有鞍点不输出,有鞍点则输出鞍点

if(c<4) {continue;}

Systemoutprintln("鞍点为:arr["+a+"]["+x+"]");

}

}

}

} 由于数组是随机赋值,所以,有时候是没有鞍点,只输出数组,多运行几次直到出现鞍点就可以了

package comnjtytest;

/

马鞍数

@author Administrator

/

public class MAS {

/

@param args

/

public static void main(String[] args) {

//定义二维数组

int arrays[][] = {

{5,6,3,8,9},

{4,5,6,7,8},

{3,4,5,2,1},

{2,3,4,9,0},

{1,2,5,4,8}

};

boolean flag = true; //用于标记是否是马鞍数

for(int i = 0; i< 5; i++){

int tempM = arrays[i][0]; //首先将第一行第一列数假设就是马鞍数

int tempi = 0; //用于行判断

int tempj = 0; //用于存储每行最小数所在的列数

for(int j = 0; j< 5; j++){

if(arrays[i][j] < tempM){//找到行中最小的数

tempM = arrays[i][j];

tempj = j; //保存最小数的列数

}

}

while(tempi < 5){

if(tempM <arrays[tempi][tempj]){//判断是否是列中最大的数

flag = false; //不符合条件则将标记置为false

}

tempi++;

}

if(flag){

Systemoutprintln("马鞍数是 第"+(i+1)+"行第"+(tempj+1)+"列的数:"+tempM);

}

}

if(!flag){

Systemoutprintln("该组数中不存在马鞍数!");

}

}

}

以上就是关于编写程序,找出二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。要求使用C语言,不是C++全部的内容,包括:编写程序,找出二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。要求使用C语言,不是C++、这是一道java数据结构的问题!要能运行出来的,最好带点儿详细的解释或注释什么的,感谢!!、java编程很简单的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10211638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存