当前位置: 代码迷 >> C语言 >> 关于求鞍点的问题!谢谢指教!:)
  详细解决方案

关于求鞍点的问题!谢谢指教!:)

热度:166   发布时间:2004-12-07 11:09:00.0
关于求鞍点的问题!谢谢指教!:)
/*找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点*/ #define m 3 #define n 3 main() { int andian(int b[m][n]); int a[m][n],i,j,x; printf("请输入一个三行三列的数组\n"); for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); x=andian(a[m][n]); printf("%d\n",x); } int andian(int b[m][n]) { int a,h,i,j,max_line,dian=0; int c[m][n]; while(i<m) { i=0; max_line=c[i][0]; for(a=0;a<n;a++) { if(c[i][a]>max_line) { max_line=c[i][a]; for(j=0;j<m;j++) if(c[j][a]<c[i][a]) dian=c[j][a]; return(dian); } } i++; } } /*找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点*/ #define m 3 #define n 3 main() { int andian(int b[m][n]); int a[m][n],i,j,x; printf("请输入一个三行三列的数组\n"); for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); x=andian(a[m][n]); printf("%d\n",x); } int andian(int b[m][n]) { int a,h,i,j,max_line,dian=0; int c[m][n]; while(i<m) { i=0; max_line=c[i][0]; for(a=0;a<n;a++) { if(c[i][a]>max_line) { max_line=c[i][a]; for(j=0;j<m;j++) if(c[j][a]<c[i][a]) dian=c[j][a]; return(dian); } } i++; } } 我的编译结果: fydream@linux:~/源代码/unit 7> gcc -o dreamdead 78shiyan.c 78shiyan.c: In function `main': 78shiyan.c:12: warning: passing arg 1 of `andian' makes pointer from integer without a cast fydream@linux:~/源代码/unit 7> ./dreamdead 请输入一个三行三列的数组 1 2 3 4 5 6 7 8 9 1073836960 fydream@linux:~/源代码/unit 7>
清指教!我实在是想不出怎么定义这个函数了!严重的感谢!:)
搜索更多相关的解决方案: 鞍点  指教  

----------------解决方案--------------------------------------------------------
不好意思!我两个程序重复  了!:)就看前面的那个程序就可以了!:)

----------------解决方案--------------------------------------------------------

#include "stdio.h" #define M 3 #define N 3

int andian(int b[M][N])

{ int i,j,m,Row,Lie,dian; for(i=0;i<M;i++)//遍历所有行 { dian=b[i][0]; Row=i; for(j=1;j<M;j++) if(b[i][j]>dian)//找到一行中的最大值 { dian=b[i][j]; Lie=j; } for(m=0;m<M;m++)//判断一行中的最大值是否是所在列的最小值; if(b[m][Lie]<dian) break; if(m==M) { printf("鞍点在第%d行,第%d列\n",Row,Lie); return dian; } } printf("没有鞍点\n"); return 0; }

void main()

{ int a[M][N],i,j,x; printf("请输入一个三行三列的数组\n"); for(i=0;i<M;i++) for(j=0;j<N;j++) scanf("%d",&a[i][j]); x=andian(a); printf("%d\n",x); }

宏定义最好都大写;


----------------解决方案--------------------------------------------------------
太感谢你了!:)谢谢你的帮助!:)

----------------解决方案--------------------------------------------------------
真的是高手谢谢

----------------解决方案--------------------------------------------------------
  相关解决方案