c# 编写一个控制台应用程序,找出3*4的二维数组的鞍点

c# 编写一个控制台应用程序,找出3*4的二维数组的鞍点,第1张

int[,] a = new int[3, 4];

int i, j, max, p, k;

bool flag = true, NoExistNaddle = false;

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

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

{

ConsoleWrite("请输入二维数组a[{0},{1}]=", i, j);

a[i, j] = intParse(ConsoleReadLine());

}

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

{

max = a[i, 0]; p = 0;

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

if (max < a[i, j])

{

max = a[i, j];

p = j;

}

else

p = 0;

for (k = 0; k <= 2; k++)

if (max > a[k, p])

{

flag = false;

break;

}

if (flag == true)

{

ConsoleWriteLine(" a[{0},{1}]={2}", i, p, max);

NoExistNaddle = true;

}

}

if (NoExistNaddle == false)

ConsoleWriteLine("no exist");

#include <iostreamh>

#include <iomaniph>

int main()

{

int i,j;

double max,min;

double a[5][4];

cout<<"请输入五行四列二维数组元素:"<<endl;

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

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

cin>>a[i][j];

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

{

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

cout<<setw(8)<<a[i][j];

cout<<endl;

}

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

{

max=a[i][0];

int k=0;

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

{

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

{

max=a[i][j];

k=j;

}

}

min=a[0][k];

int m=0;

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

{

if (min>a[j][k])

{

min=a[j][k];

m=j;

}

}

if (m==i)

cout<<"鞍点:"<<a[i][k]<<"所在行和列分别为:"<<i+1<<" "<<k+1<<endl;

else

cout<<i+1<<"行无鞍点"<<endl;

}

return 0;

}

我先指出你程序中的错误(我先把你的注释删掉,否则有点乱),最下面是我修改好的程序(我的编译器输出中文时有点问题,所以改成了简单的英文,望见谅)。

#include<stdioh>

int main()

{

int h,l,a[4][4],maxh[4],maxl[4],z[4],n,k;

printf("请输入数组:");

for(h=1;h<=3;h++)

{

for(l=1;l<=3;l++)

{

scanf("%d",a[h][l]);//输入没有取地址符号

}

}

maxh1=a[1][1],maxh2=a[2][1],maxh3=a[3][1];//maxh数组使用错误

for(h=1;h<=3;h++)

{

for(l=1;l<=3;l++)

{

if(a[h][l]>maxh[h])

{

maxh[h]=a[h][l];

z[h]=l;

}

}

}

maxl1=a[1][1],maxl2=a[1][2],maxl3=a[1][3];//maxl数组使用错误

for(l=1;l<=3;l++)

{

for(h=1;h<=3;h++)

{

if(a[h][l]<maxl[h])

maxl[h]=a[h][l];//maxl应该是存储每一列的最小元素,则不应该是maxl[h],而是maxl[l]

}

}

if(maxh1==maxl[z1])//z数组使用错误,应该是z[1],下同

{

printf("第一行有鞍点:%d",maxh1);

}

else

printf("第一行没有鞍点。");

if(maxh2==maxl[z2])

{

printf("第二行有鞍点:%d",maxh2);

}

else

printf("第二行没有鞍点。");

if(maxh3==maxl[z3])

{

printf("第三行有鞍点:%d",maxh3);

}

else

printf("第三行没有鞍点。");

printf("\n");

return 0;

}

//==================================

//这是我修改好的程序

//==================================

#include<stdioh>

int main()

{

int h,l,a[4][4],maxh[4],maxl[4],z[4],n,k;

printf("please enter 33 datas\n");

for(h=1; h<=3; h++)

{

for(l=1; l<=3; l++)

{

scanf("%d", &a[h][l]);

}

}

maxh[1]=a[1][1],maxh[2]=a[2][1],maxh[3]=a[3][1];

for(h=1; h<=3; h++)

{

for(l=1; l<=3; l++)

{

if(a[h][l]>maxh[h])

{

maxh[h]=a[h][l];

z[h]=l;

}

}

}

maxl[1]=a[1][1],maxl[2]=a[1][2],maxl[3]=a[1][3];

for(l=1; l<=3; l++)

{

for(h=1; h<=3; h++)

{

if(a[h][l]<maxl[h])

maxl[l]=a[h][l];

}

}

if(maxh[1]==maxl[z[1]])

{

printf("1 -- %d\n",maxh[1]);

}

else printf("1 no");

if(maxh[2]==maxl[z[2]])

{

printf("2 -- %d\n",maxh[2]);

}

else printf("2 no\n");

if(maxh[3]==maxl[z[3]])

{

printf("3 -- %d\n",maxh[3]);

}

else printf("3 no\n");

printf("\n");

return 0;

}

dim A()as Integer

redim A(m,n)as Integer

'请自己给A数组赋值

dim f as boolean,fmin as boolean,i as integer,j as integer,rmax as integer,rmaxn as integer

f=False

for i=1 to m

rmaxn=1

rmax=A(i,rmaxn)

'找到当前行中最大的数的位置rmaxn

for j=2 to n

if A(i,j)>rmax then

rmax=A(i,j)

rmaxn=j

end if

next

'检查这个数是否是本列中最小的

fmin=true

for j=2 to m

if A(j,rmaxn)<rmax then fmin=false:exit for

next

if fmin then

print "鞍点A("& i &","& rmaxn &")=" & A(i,rmaxn)

f=True

end if

next

if f=False then Print "没有鞍点"

1、首先,定义3个整型变量,保存控制数组元素的变量,以及左侧对角线元素的和、右侧对角线元素的和。

2、接着,给数组赋初值,即输入一个44方阵。

3、设置suml和sumr的初值为0。

4、用for循环控制读入方阵对角线上的各元素,实现对角线上各元素的和。

5、计算左侧对角线和右侧对角线上各元素的和,用累加的方式实现运算。

6、最后,分别输出方阵左侧对角线和右侧对角线上各元素的和。

你这程序有很多问题,比如说你那查找的for循环就有问题;因为我以前没编过,所以我用C++重新帮你编了,你要用void chazhao(int a[][1000],int h,int l)这样才是对的,我用的是动态数组,你看看吧,不懂的HI我。

#include "iostream"

using namespace std;

void chazhao(int a,int h,int l)//查找;

{

int c=0;

int min;

int flag=0;//标志位,1为找到了,0为没找到;

min=a[0][0];

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

{

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

{

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

{

min=a[i][j];

c=j;

}

//找出第i行的最小值; c列;

}

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

{

if(a[j][c]>min) //比较第i行第c列是不是第c列中最大值;

{

flag=0;

break;

}

else flag=1;

}

if(flag==1)//在第i行找到了

{

cout<<"第"<<i<<"马鞍点为a["<<i<<"]["<<c<<"]="<<a[i][c]<<endl;

}

else

{

cout<<"第"<<i<<"行的马鞍点不存在!"<<endl;

}

}

}

void Display(int a,int h,int l)//显示你输入的数组;

{

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

{

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

{cout<<a[i][j]<<'\t';}

cout<<endl;

}

}

void main()

{

int h,l;

int p;//用动态数组储存,节省空间;

cout<<"请输入你查找马鞍点的数组的行和列:\n";

cin>>h>>l;

p = new int [h];

for(int i=0;i <= h-1;i++)

{

p[i]=new int[l];

}

cout<<"请输入你要查找马鞍点的数组:\n";

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

{

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

{

cin>>p[i][j];

}

cout<<endl;

}

Display(p,h,l);

chazhao(p,h,l);

delete []p;//释放空间;

}

以上就是关于c# 编写一个控制台应用程序,找出3*4的二维数组的鞍点全部的内容,包括:c# 编写一个控制台应用程序,找出3*4的二维数组的鞍点、编写C++程序求二维数组的鞍点、呼叫C达人,C程序设计,题目找出一个二维数组中得鞍点,即该位置上的元素在该行上最大、在该列上最小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存