當前位置:編程學習大全網 - 編程軟體 - 求解釋,c編程題

求解釋,c編程題

首先,對應n是小於等於100的,那麽可以在程序開頭加壹句#define N 100作為最大值情況,c語音規定,不允許用變量作為數組定義的下標取值,那麽可以修改int num[i][j];為int num[N][N];

其次,在找當前行的最大值時,y的賦值不科學,可以修改這部分程序為:

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

{ y=0; //假定第1個數最大

for ( j=1;j<n;j++ ) if ( num[i][j]>num[i][y] ) y=j; //這樣j循環結束後y存放當前行最大值下標

...

}

找最小數也可以用找最大數的辦法

x=0; for ( j=1;j<n;j++ ) if ( num[j][y]<num[x][y] ) x=j;

然後只要判斷求得的x是否等於i即可

由於發現鞍點是每行都要求的,而整個矩陣沒有鞍點是在所有行都找遍之後才能輸出"NO"的,所以應當把輸出"NO"的判斷拿到i循環外來進行而不是每行都要判斷是否輸出

請參考下面程序:

#define N 100

void main()

{ int b,i,j,x,y,n,num[N][N];

scanf("%d",&n); if ( n<0 ) return; else if ( n>N ) n=N;

for ( i=0,b=0;i<n;i++ )

{ y=0; for ( j=1;j<n;j++ ) if ( num[i][j]>num[i][y] ) y=j; //y列是最大值

x=0; for ( j=1;j<n;j++ ) if ( num[j][y]<num[x][y] ) x=j; //x行是y列上的最小值

if ( x==i ) { printf("%d %d\n",i,y); b=1; } //b記錄是否找到了鞍點

}

if ( b==0 ) printf("NO\n"); //n行都沒找到鞍點輸出NO

}

  • 上一篇:高通820處理器,有哪些優缺點?
  • 下一篇:日常生活中交流電源是220伏,直流電源是多少伏
  • copyright 2024編程學習大全網