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;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]=%dn",j+1,k+1,rmax[j]); 85         }//这里要用到循环比较,下面这样不行 86     87 //    if(rmax[k]==cmin[j])88 //        printf("data[%d][%d]=%dn",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; 95     } 96     free;97     system("pause");98 }

发表评论

电子邮件地址不会被公开。 必填项已用*标注