问个弱问题~~二维数组和一维数组间转化
c语言吧
全部回复
仅看楼主
level 1
boat21xd 楼主
刚学的C,不太懂。。
比如“判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。”要先保存到一维数组吧。。。怎么换?
2009年12月03日 11点12分 1
level 0
为啥要保存到一维数组啊?直接爆他就行啦,找到每行的最大数,来一个这个数所在列的列循环,看是不是最小数,是就行了,
2009年12月03日 11点12分 2
level 0
(@_@)够长
2009年12月03日 12点12分 4
level 6
[Yeah]思路清楚
2009年12月03日 12点12分 5
level 7
用递归做、
2009年12月03日 13点12分 6
level 1
#include <stdio.h>
#define ROW      4   //这里定义二维数组的行
#define COL      5 //这里定义二维数组的列
int main(void)
{
         int arr[ROW][COL]={0};
         int i, j, count=1;
         unsigned int flag=1;
         int row,col;
         int maxrow,mincol;
         i=(ROW)*(COL);
         printf("请输入二维数组的元素[一共%d个]!\n",i);
         j=0;
         while(i)
         {
                 printf("还有%d个:",i);
                 fflush(stdin);
                 scanf("%d",arr+j);
                 j++;
         }
         for(row=0;row<ROW;row++)
         {
                 maxrow=arr[row][0];
                 for(col=0,i=0;col<COL;col++)
                 {//在没一行上寻找最大的元素。
                         if(arr[row][col]>maxrow)
                                 maxrow=arr[row][col];
                                 i=col;//记录最大元素所在的列。
                 }
                 for(j=0;j<ROW;j++)
                 { //如果在行maxrow所在的列上有比maxrow小的数就退出循环。
                         if(arr[j][i]<maxrow)
                                 break;      
                 }
                 if(j>=ROW)
                 {
                         printf("鞍点%d: %d 在第%d行第%d列",count++,row,i);
                         flag=0;
                 }
         }
         if(flag)
                 printf("这个数组没有鞍点!\n");
         return 1;
}
2009年12月03日 15点12分 7
level 1
不好意思![开心] 把 mincol 变量去掉!
2009年12月03日 15点12分 8
1