程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> c語言題目:找出一個二維數組的“鞍點”,即該位置上的元素在該行上最大,在該列上最小。也可能沒有鞍點

c語言題目:找出一個二維數組的“鞍點”,即該位置上的元素在該行上最大,在該列上最小。也可能沒有鞍點

編輯:關於C語言

 1 //題目:找出一個二維數組的“鞍點”,即該位置上的元素在該行上最大,在該列上最小。也可能沒有鞍點。
 2 //
 3 #include "stdio.h" 
 4 #include <stdlib.h>
 5 int main() 
 6 { 
 7     int i,j,k,hang=1,lie=1; 
 8     printf("輸入行");
 9     scanf("%d",&hang);
10     printf("輸入列");
11     scanf("%d",&lie);
12     printf("請輸入該矩陣的元素,行內左至右順序輸入,行間上至下順序輸入,按回車完成一個元素的輸入:\n"); 
13     int zong=hang*lie;
14 
15     int *a;
16     a=(int *) malloc (zong * sizeof(int));
17     printf("請輸入 %d 個元素: ", zong);
18     for (i = 0; i < zong; i++)
19     scanf("%d", &a[i]); 
20     printf("\b \n"); 
21 
22     int **data;
23 
24 
25     data = (int **) malloc (hang * sizeof(int *));
26     for(int j=0;j<hang;j++)
27     {
28         data[j] = (int *)malloc(lie*sizeof(int)); 
29     }
30     for (int k=0,i=0;k<hang;k++)
31     {
32 
33         for (int j=0;j<lie;j++)
34         {
35             
36             data[k][j]=a[i];
37                         i++;
38             
39                         
40         }
41     }
42     free(a);
43         
44     int *rmax;
45     rmax=(int *) malloc (hang * sizeof(int));
46     
47     
48     for(k=0;k<hang;k++) 
49     {
50         rmax[k]=0;
51         for(j=0;j<lie;j++)
52         { 
53             
54             if(data[k][j]>=rmax[k]) 
55             {
56                 rmax[k]=data[k][j]; 
57                 
58             }
59         } 
60         
61     }
62     int*cmin;
63     cmin=(int *) malloc (lie * sizeof(int));
64     
65     for(j=0;j<lie;j++) 
66     {
67         cmin[j]=0;
68         for(k=0;k<hang;k++) 
69         {
70             if(k==0)
71                 cmin[j]=data[k][j];
72             if(data[k][j]<=cmin[j]) 
73             {
74                 cmin[j]=data[k][j]; 
75             } 
76         }
77             
78     }
79     
80     for(j=0;j<hang;j++)
81         for(k=0;k<lie;k++)
82         {
83             if(rmax[j]==cmin[k])
84                 printf("data[%d][%d]=%d\n",j+1,k+1,rmax[j]); 
85         }//這裡要用到循環比較,下面這樣不行 
86     
87 //    if(rmax[k]==cmin[j])
88 //        printf("data[%d][%d]=%d\n",k+1,j+1,rmax[k]); 
89 //    else 
90 //        printf("It is not exist!\n");
91 
92     for (i=0;i<hang;i++)
93     {
94             free(data[i]); 
95     } 
96     free(data);
97     system("pause");
98 }

 

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