❶ c語言找二維數組鞍點
#include <stdio.h>
#include <stdlib.h>
int main()
{
int M,N;
int a[100][100];
int i,j,k,t,m,x,y,max,min,flag;
printf("input a[M][N]---M,N:");
scanf("%d %d",&M,&N);
printf("input %d number:\n",M*N);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
for(i=0;i<M;i++)
{for(j=0;j<N;j++)
printf("%-5d",a[i][j]);
printf("\n");}
flag=0;
for(i=0;i<M;i++)
{
max=a[i][0];
t=0;
for(j=1;j<N;j++)
{ if(a[i][j]>max)
{max=a[i][j];
t=j;}
max=a[i][t];
}
min=a[0][t];
x=0;
for(m=1;m<M;m++)
{ if(a[m][t]<min)
{
min=a[m][t];
x=m;
}
min=a[x][t];
}
if(max==min)
flag=1,
printf("the andian:%d",max);
}
if(flag==0)
printf("no andian!");
return 0;
}
我原來寫的參考一下運行正確
❷ C語言課後題,找出一個二維數組中的鞍點
continue是用於節約時間的。
當發現當前的max的值比該列某個值大(於是可以確定這個值不是該列最小,即不可能是鞍點),就不必再檢查該列的其他值了。
當然,檢查了也無所謂,反正已經變成0的flag是不可能恢復成1的,所以是無效操作。
❸ C語言中關於二維數組的「鞍點」問題
#include <stdio.h>
int main()
{
int a[3][3]={7,8,9,4,5,6,1,2,3};
int b[10];
int i,j,hmax,lmin,*p_hmax,*p_lmin;
p_hmax=&hmax;
p_lmin=&lmin; /*i行 j列 hmax行最大 lmin列最小*/
for(i=0;i<=2;i++) /*求出每行的最大數*/
{
hmax=a[i][0];
for(j=0;j<=2;j++)
{
if(hmax<a[i][j])
{
hmax=a[i][j];
}
}
b[i]=*p_hmax;
}
for(j=0;j<=2;j++) /*求出每列的最小數*/
{
lmin=a[0][j];
for(i=0;i<=2;i++)
{
if(lmin>a[i][j])
{
lmin=a[i][j];
}
}
b[j+3]=*p_lmin;
}
for(i=0;i<=2;i++) /*判斷每行的最大數和每列的最小數是否相等*/
if(b[i]==b[i+3])
printf("%d\n",b[i]);
else
printf("沒有鞍點\n");
return 0;
}
你試試吧!!我在vs上調試的
❹ C語言 求二維數組的鞍點問題,急求高手解答!
將下列程序復制到VC運行就好了,我已調試了,是對的
#include<stdio.h>
#define M 3
#define N 3
void main()
{
int a[M+1][N+1],i,j,x;
x=4;
printf("請輸入一個二維數組:\n");
for(i=0;i<M;i++){
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);}
for(i=0;i<M;i++){
a[i][N]=a[i][0];
for(j=0;j<N-1;j++)
if(a[i][j]<a[i][j+1]) a[i][N]=a[i][j+1];}
for(j=0;j<N;j++){
a[M][j]=a[0][j];
for(i=0;i<M-1;i++)
if(a[i][j]>a[i+1][j]) a[M][j]=a[i+1][j];}
for(i=0;i<M;i++)
{
if(a[i][N]!=a[M][i])
a[i][N]=0;
x--;
}
if(x==0) printf("無鞍點!");
else{
printf("此二維數組的鞍點為:\n");
for(i=0;i<M;i++)
if(a[i][N]!=0)
printf("%d ",a[i][N]);
}
printf("\n");
}
❺ 找出一個二維數組中的鞍點,c語言
#include<stdio.h>
#defineN10
#defineM10
voidmain()
{
inti,j,k,m,n,flag1,flag2,a[N][M],max,maxj;
printf("輸入行數n:");
scanf("%d",&n);
printf(" 輸入列數m:");
scanf("%d",&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
flag2=0;
for(i=0;i<n;i++)
{
max=a[i][0];
for(j=0;j<m;j++)
if(a[i][j]>max)
{
max=a[i][j];
maxj=j;
}
for(k=0,flag1=1;k<n&&flag1;k++)
if(max>a[k][maxj])
flag1=0;
if(flag1)
{
printf(" 第%d行第%d列的%d是鞍點 ",i,maxj,max);
flag2=1;
}
}
if(!flag2)
printf(" 矩陣無鞍點! ");
}
❻ c語言查找二維數組的鞍點 新生求助大佬
C語言查找二維數組的鞍點詳細代碼如圖:
具體思路:
一、先把每行的最大值求出來×到數組;
二、依次遍歷每行,如果其值等於最大值,再判斷在列中是否最小即可。
三、輸出結果。
❼ C語言編程:找出一個二維數組的「鞍點」,即該位置上的元素在該行上最大,在該列上最小。也可能沒有鞍點。
#include"stdio.h"
#defineN10
voidFindSaddlePoint(inta[][N],intm,intn);
intmain()
{
inta[N][N];
inti,j,m,n;
printf("Inputm,n: ");
scanf("%d,%d",&m,&n);
printf("Inputmatrix: ");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
FindSaddlePoint(a,m,n);
return0;
}
voidFindSaddlePoint(inta[][N],intm,intn)
{
inti,j,k,sp,p,x,f=0;
for(i=0;i<m;i++)
{
p=0;
sp=a[i][0];
for(j=1;j<n;j++)
{
x=0;
if(a[i][j]>sp)
{
sp=a[i][j];
x=j;
}
}
for(k=0;k<m;k++)
{
if(sp>a[k][x])
break;
else
p++;
}
if(p==m)
{
printf("a[%d][%d]is%d ",i,x,sp);
f++;
}
}
if(!f)
printf("Nosaddlepoint! ");
}
❽ c語言 求二維數組的鞍點
#include<stdio.h>
#define N 3
#define M 4
int main()
{
int i,j,k,max,min;
int array[N][M];
printf("請輸入數組元素: ");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
scanf("%d",&array<i>[j]);
}
printf("數組有: ");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%-5d ",array<i>[j]);
printf(" ");
}
for(i=0;i<N;i++)
{
max=array<i>[0];//用列來進行當前行來比較
for(j=0;j<M;j++)
{
if(max<array<i>[j])
max=array<i>[j];
k=j;//記錄下當前一行中最大的小標
}
min=array[0][k];
for(j=0;j<N;j++)//用行來進行列比較
{
if(min>array<i>[k])//若在該列中有更小的,則賦值與min
min=array<i>[k];
}
if(min==max)
{
printf("小標為%d,%d,鞍點為:%d",i+1,k,max);
}
}
printf("搜索結束 ");
return;
}
(8)c語言求二維數組的鞍點擴展閱讀:
define作用
被定義為「宏」的標識符稱為「宏名」。在編譯預處理時,對程序中所有出現的「宏名」,都用宏定義中的字元串去代換,這稱為「宏代換」或「宏展開」。宏定義是由源程序中的宏定義命令完成的。宏代換是由預處理程序自動完成的。
宏定義的作用范圍僅限於當前文件,即file1.c中定義#define PI 3.14,在file2.c中該宏定義不起作用;
通過將#define PI 3.14定義在common.h中,file1.c和file2.c分別#include"common.h"的方式,該宏定義在file1.c和file2.c中都起作用。
在C或C++語言中,「宏」分為有參數和無參數兩種。
❾ c語言編寫程序,找出一個二維數組中的鞍點,即該位置上的元素在該行上最大,在該列上最小,也有可能沒有
#include <stdio.h>
int a[3][4]={0};
int min(int y)//第y+1列的最小值 所在的行
{
int i,temp,min=0;
for(i=1;i<3;i++)
{
if(a[min][y]>a[i][y])
min=i;
}
return min;
}
int max(int x)//第x+1行的最大值 所在的列
{
int j,temp,max=0;
for(j=1;j<4;j++)
{
if(a[x][max]<a[x][j])
max=j;
}
return max;
}
int main()
{
int i,j,temp,count=1;
puts("輸入二維數組:\n");
for(i=0;i<3;i++)
{
printf("輸入第%d行:\n",i+1);
scanf("%d %d %d %d",&a[i][0],&a[i][1],&a[i][2],&a[i][3]);
}//輸入數組
for(i=0;i<3;i++)
{
j=max(i);
temp=min(j);
if(temp==i)
{
printf("鞍點為%d行%d列的%d\n",i+1,j+1,a[i][j]);
count++;
}
}
if(count==0)
printf("沒有鞍點");
return 0;
}
❿ 找出二維數組中的鞍點,c語言
你好:
#include<stdio.h>
voidmain()
{
inti,j,min,m,n,p,q,max;
m=0;n=0;p=0;q=0;
inta[4][4]={{1,2,4,3},{5,2,7,4},{7,3,6,8},{2,4,5,9}};
max=a[0][0];
min=a[0][0];
for(i=0;i<4;i++)
{
m=i;
n=0;
p=0;
q=0;
max=a[i][0];
for(j=0;j<4;j++)
if(a[i][j]>max)
{
max=a[i][j];
n=j;
}
min=a[0][n];
q=n;
for(j=0;j<4;j++)
if(a[j][n]<min)
{
min=a[j][n];
p=j;
}
if((p==m))
{
printf("鞍點為:%d ",a[m][n]);
printf("此時m=%d;n=%d ",m,n);
break;
}
else
if(i>=3)
printf("noandian");
}
}
已編譯出,是正確的,如果哪裡不懂,再聯系我。
希望對你有幫助