| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1685 人关注过本帖
标题:设计二维数组求极值及下标
只看楼主 加入收藏
jjyy447774
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-12-26
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:10 
设计二维数组求极值及下标
//定义2行3列的整型二维数组,从控制台输入各个元素的初值,要求分别输出该数组中元素的最大值和最小值以及两个元素的行下标与列下标。//注 何如避免特殊情况的发生 如输入2 3 4 5 6 7 可以运行 但最小值下标出错 小虾已经用一种方法解得 但代码量长 求大鱼指点!
搜索更多相关主题的帖子: 设计 控制台 最大值 元素 
2011-12-27 21:43
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:3 
就这要求?那连数组都不需要,代码也就三五行吧。

重剑无锋,大巧不工
2011-12-27 21:47
love24114
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:223
专家分:399
注 册:2011-7-11
收藏
得分:3 
int i,count=0;
for(i=0;i+1<6;i++)
{
if(array[i+1]>array[i]) count = i;
}
printf("%d",count);
2011-12-27 23:07
love24114
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:223
专家分:399
注 册:2011-7-11
收藏
得分:0 
i=count/3,k=count%3;
printf("%d %d",i,k);
2011-12-27 23:09
ggyy4k
Rank: 5Rank: 5
等 级:职业侠客
帖 子:111
专家分:334
注 册:2010-6-28
收藏
得分:3 
2楼的连数组都不要,该怎么搞啊,不要告诉我用6个整数变量
2011-12-27 23:19
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
#define ROWS    2
#define COLS    3
#define COUNT    ROWS * COLS
int max, min, max_index, min_index, i, t;
scanf("%d", &t);
max = min = t;
max_index = min_index = 0;
for(i = 1; i < COUNT; i++)
{
    scanf("%d", &t);
    if(max < t){ max = t; max_index = i;}
    else if(min > t){ min = t; min_index = i;}
}
printf("max is a[%d][%d] = %d\nmin is a[%d][%d] = %d\n", max_index / COLS, max_index % COLS, max, min_index / COLS, min_index % COLS, min);

这段代码可以输出你想要尺寸的数组中的最大值、最小值,以及它们的下标。

重剑无锋,大巧不工
2011-12-28 20:44
kennel2009
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:157
注 册:2011-12-13
收藏
得分:3 
#include <stdio.h>
int main()
{
    int i, j;
    int l[2][2] = {0};//存放最大值跟最小值的下标
    int a[2][3] = {0};//存放要输入的数
    int min = 0,max = 0;
   
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 3; j++) {
            scanf("%d", &a[i][j]);
            if (i == 0 || j == 0)
            {
                min = max = a[0][0];
            }
            else if (a[i][j] > max) {
                max = a[i][j];
                l[0][0] = i % 2 + 1;
                l[0][1] = j % 3 + 1;
            }
            else if (a[i][j] < min){
                min = a[i][j];
                l[1][0] = i % 2;
                l[2][1] = j % 3;
            }
        }
    }
    printf("max = %d 坐标为%d行%d列\n", \
                max, l[0][0],l[0][1]);
    printf("min = %d 坐标为%d行%d列\n", \
                min, l[1][0],l[1][1]);
    return 0;
}
可以试试我这个,好像写的有点麻烦了...
如果满意,别忘记分哦 呵呵..
2011-12-28 21:22
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
收藏
得分:3 
#include "stdio.h"
void main()
{
    int a[2][3];
    int i,j;
    int x1,x2,y1,y2;
    int max,min;
    printf("请输入二维数组(2*3):");
    for(i=0;i<2;i++)
      for(j=0;j<3;j++)
      scanf("%d",&a[i][j]);
      max=min=a[0][0];
      for(i=0;i<2;i++)
        for(j=0;j<3;j++)
         {
          if(a[i][j]>max)
          {max=a[i][j];
          x1=i;
          y1=j;
          }
          if(a[i][j]<min)
              {
                  min=a[i][j];
                  x2=i;
                  y2=j;
              }
         }
         if(max==a[0][0])
         {x1=0;y1=0;}
            if(min==a[0][0])
              {x2=0;y2=0;}
         printf("max=%d第%d行第%d列\nmin=%d第%d行第%d列\n",max,x1+1,y1+1,min,x2+1,y2+1);
}

最基础的往往是你最容易忽略的!
2011-12-28 23:20
jjyy447774
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-12-26
收藏
得分:0 
回复 7楼 kennel2009
你好,感谢你的代码,可是代码量太大了。我的代码差不多跟你一样 只不过我对最大最小值的下标值都初始化为0,比你的代码小以点点。。
2011-12-29 23:06
jjyy447774
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-12-26
收藏
得分:0 
大家还是没明白我的意思。不觉得上面的代码都考虑差当一个值刚好为最大或最小值时出现的情况吗?
2011-12-29 23:14
快速回复:设计二维数组求极值及下标
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025626 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved