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 }

 

posted on 2014-05-21 01:24 adaonline 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/adaonling/p/3740421.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值