在壹個二維數組中找出鞍點(即改行最大該列最小的數)
*/
#include?<stdio.h>
#include?<stdlib.h>
int?main(void)
{
int?row,line,i,j; int?**p,max,flag; int?r,k,maxj; printf("請問需要創建幾行幾列的數組\n"); scanf("%d,%d",&row,&line); printf("創建%d行%d列數組\n",row,line); p=(int?**)malloc(?sizeof(int?*)*row?); for(i=0;i<line;i++) p[i]=(int?*)malloc(?sizeof(int)*line); for(i=0;i<row;i++) for(j=0;j<line;j++)scanf("%d",&p[i][j]);
printf("\n"); for(i=0;i<row;i++) { for(j=0;j<line;j++)printf("%d?",p[i][j]);
printf("\n"); } for(r=0;r<row;r++)?//行循環 { max=p[r][0]; for(j=0;j<line;j++) if(max<p[r][j])?//找出每行的最大值 {max=p[r][j];
maxj=j;?//保存列坐標
} flag=1;//假設有鞍點 for(k=0;k<row;k++)//在列中尋找最小值if(max>p[k][maxj])//只要max大於列中任意壹個,則max不是最小值
flag=0;?//標記0無鞍點
if(flag)
{?
printf("p[%d][%d]=%d\n",r,maxj,max); break;//結束循環體}?
} if(!flag) printf("程序無鞍點\n"); for(r=0;r<row;r++)?//務必記住釋放內存 free(p[r]); free(p); system("pause"); return?0;}
~~~~~~~~~~~~~~~~~~~~~~~~~~~
我寫的壹個程序,妳對著妳的程序看行不行。