程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> C語言鞍點問題,幫忙看下錯哪裡了,標記下

C語言鞍點問題,幫忙看下錯哪裡了,標記下

編輯:C語言問答

C語言鞍點問題,幫忙看下錯哪裡了,標記下

20

//所謂鞍點就是在所在行上最大,所在列上最小,有且只有一個,甚至沒有
#include<stdio.h>
int main(void)
{
 int a[3][3]={0}; //數組初始化
 int i,j,k;
 int max,min,maxi=0,maxj=0,flag;
 printf("輸入元素的值:\n");
 for (i=0;i<3;i++)
   for (j=0;j<3;j++)
     scanf("%d",&a[i][j]);
    printf("\n數組顯示為:\n");
 for (i=0;i<3;i++)
  {
  for (j=0;j<3;j++)
          printf("%-5d",a[i][j]);
             printf("\n");
   }
    printf("\n開始找鞍點:\n");

 
 
  for(i=0;i<3;i++)//以行為單位,開始尋找
  { 
   max=a[i][0];
   for (j=0;j<3;j++)
   if ( a[i][j]>max )
    {
     max=a[i][j];
     maxi=i; maxj=j; 
    }
   flag=0;
   for (k=0;(k<3)&&(flag==0);k++)
   if ( min<a[k][maxj] ) 
    {
     min=a[k][maxj];
     flag=1; break; 
    }
    if (flag=0)
   printf("該數組的鞍點是%d,在第%d行,第%d列。\n",a[j][k],j+1,k+1);
          else   printf("該數組中不存在鞍點。\n");
  return 0;
 }
}

根據我對題目的理解,8是鞍點,可實際運行起來有問題。

最佳回答:

修改了一下邏輯。你語法上有錯誤。你在判斷if(flag=0)中flag=0是一個賦值語句,永遠為真.還有  min沒有賦值  


if ( min<a[k][maxj] )
{
min=a[k][maxj];
flag=1; break;
  }

改為:
if ( max > a[k][maxj] )
{
flag=1;
}
      

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved