| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3727 人关注过本帖
标题:用指针求二维数组每行的最大值
只看楼主 加入收藏
zhangte65
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-12-15
结帖率:0
收藏
已结贴  问题点数:10 回复次数:7 
用指针求二维数组每行的最大值
#include"stdio.h"
void init_array(int *p1);
void getmax(int *p1,int s[]);

main()
{
    int b[3][4],s[3];
    int i;
    init_array(@#1);
    getmax(@#3,s);
    for(i=0;i<3;i++)
        printf("row%d:  max=%d\n",i,s[i]);   
}

void init_array(@#4)
{
    int i,j;
    for(i=0;i<3*4;i++)
        scanf("%d",@#5);
   
}

void getmax(int *p1,int s[])  //p1是行指针,p2是元素指针
{
    int i,j,max;
    for(i=0;i<3;i++)
    {
        max=@#6    //取最大值为每行的第一个单元格的值
                   //从每行的第二列单元格到最后一个单元格逐个比较   
        for(j=1;j<4;j++)
             @@1

                @@1
        s[i]=max;   
    }   
}
因为刚学,这题只是填空,
搜索更多相关主题的帖子: 元素 最大值 include 
2015-04-07 20:43
zhangte65
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-12-15
收藏
得分:0 
#include"stdio.h"
void init_array(int *p1);
void getmax(int *p1,int s[]);

main()
{
    int b[3][4],s[3];
    int i;
    init_array(*b);
    getmax(*b,s);
    for(i=0;i<3;i++)
        printf("row%d:  max=%d\n",i,s[i]);   
}

void init_array(int *p1)
{
    int i,j;
    for(i=0;i<3*4;i++)
        scanf("%d",*p1++);
   
}

void getmax(int *p1,int s[])  //p1是行指针,p2是元素指针
{
    int i,j,max;
    for(i=0;i<3;i++)
    {
        max=(*(p1+i));    //取最大值为每行的第一个单元格的值
                   //从每行的第二列单元格到最后一个单元格逐个比较   
        for(j=1;j<4;j++)
             {
             if(max<*(p1+i)+j)
                 max=*(p1+i)+j;   
             }
        s[i]=max;   
    }   
}
这是填空以后的内容,运行以后输入4个数字就直接卡死了。求指教哪里错了
2015-04-07 20:44
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:5 
scanf("%d", *p1++);
改成
scanf("%d", p1++);

Only the Code Tells the Truth             K.I.S.S
2015-04-07 20:54
zhangte65
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-12-15
收藏
得分:0 
回复 3楼 longwu9t
这样改之后,就变成了这样。

1 2 3 4
5 6 7 8
9 10 11 12
row0:  max=4
row1:  max=5
row2:  max=6
请按任意键继续. . .
2015-04-07 20:59
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
回复 4楼 zhangte65
改了之后 编译器应该就不报错了
运行结果出错
就说明
void getmax(int *p1,int s[])
这个函数有问题

if(max<*(p1+i)+j)
                 max=*(p1+i)+j;   

这一段代码 我怎么看怎么别扭
是不是有问题呢?

Only the Code Tells the Truth             K.I.S.S
2015-04-07 22:20
zhangte65
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-12-15
收藏
得分:0 
#include"stdio.h"
void init_array(int *p1);
void getmax(int *p1,int s[]);

main()
{
    int b[3][4],s[3];
    int i;
    init_array(  *b);
    getmax( *b ,s);
    for(i=0;i<3;i++)
        printf("row%d:  max=%d\n",i,s[i]);   
}

void init_array(  int *p1)
{
    int i,j;
    for(i=0;i<3*4;i++)
        scanf("%d",  p1+i);
   
}

void getmax(int *p1,int s[])  //p1是行指针,p2是元素指针
{
    int i,j,max;
    for(i=0;i<3;i++)
    {
        max=  *(p1+i*4+0) ;    //取最大值为每行的第一个单元格的值
                   //从每行的第二列单元格到最后一个单元格逐个比较   
        for(j=1;j<4;j++)
            
    {
                 if(max<*(p1+i*4+j))
                     max=*(p1+i*4+j);
              }

        s[i]=max;   
    }   
}
这是改过后的正确答案。。。
2015-04-08 17:52
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
收藏
得分:5 
程序代码:
 # include <stdio.h>
           void test(int (*a)[2],int row) //形参是“一维数组的地址”和 行数。 
          {
                 int max;

                 for(int i=0;i<row;i++)   //用i控制行 
                 {
                     max=a[i][0];           //假定每行第一个元素最大 
      
                     for(int j=1;j<2;j++)   //每行第以最大,那么就从每行第2个数开始就可以了,即j=1; 
       
           
                     if(  *(*(a+i)+j)>max   )          或者  //if(*(a[i]+j)>max)
                          max= *(*(a+i)+j);             或者  // max=*(a[i]+j);
                     printf("%d\n",max);                //输出最大值 
                }  

          }

           int main(void)
       {
                int arr[5][2]={{5,2},{31,4},{5,63},{34,555},{131,1}};
                int (*p)[2]=arr    //或者=&arr[0]
   
                test(p,5); 
                return 0;
      }


给个例子你看

你醒了?快起来敲代码!!
2015-04-08 18:21
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
收藏
得分:0 
我自己写的博客,关于二维数组与指针的,希望能帮到你

 http://blog.


你醒了?快起来敲代码!!
2015-04-08 18:24
快速回复:用指针求二维数组每行的最大值
数据加载中...
 
   



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

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