| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2265 人关注过本帖
标题:二维数组每行的最大值
只看楼主 加入收藏
超级无敌阳光
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-4-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
二维数组每行的最大值
程序代码:
#include <stdio.h> 

void find(int a[][4]) 
{ 
    int (*p)[4], *q, *max; 
    for(_______________________) 
    { 
        max=*p; 
        for(_______________________) 
        { 
_______________________ 
        } 
        printf("%d\n", *max); 
    } 
} 

int main() 
{ 
    int a[4][4],i,j; 
    for(i=0; i<4; i++) 
        for(j=0; j<4; j++) 
            scanf("%d", &a[i][j]); 
    find(a); 
    return 0; 
} 


如上,是填空题,楼主是这样写的
程序代码:
for(p=a;p<a+4;++p) 
    { 
        max=*p; 
        for(int i=0,q=a[i]+1;q<a[i]+4;++i,++q)
        {
            if (*q>*max)
                *max=*q;
        }

但在运行时提示错误,也看不懂是咋回事,求大神
2016-05-08 14:09
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
程序代码:
#include <stdio.h>

void find(int a[][4]) 
{ 
    int (*p)[4], *q, *max;
    for(p=a; p<a+4; p++) 
    { 
        max = *p;
        for(q=max; q<(*p+4); q++) 
        { 
            if (*q > *max)
                max = q;
        } 
        printf("%d\n", *max); 
    } 
} 

int main() 
{ 
    int a[4][4],i,j; 
    for(i=0; i<4; i++) 
        for(j=0; j<4; j++) 
            //scanf("%d", &a[i][j]); 
            a[i][j] = i*4 + j + 1;
            
    for(i=0; i<4; i++) 
    {
        for(j=0; j<4; j++) 
            printf("%3d ", a[i][j]);
        printf("\n");
    }
    find(a); 
    return 0; 
}
2016-05-08 23:37
超级无敌阳光
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-4-18
收藏
得分:0 
回复 2楼 吹水佬
只能填横线上的,其余的地方都填补了的
2016-05-09 17:46
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用超级无敌阳光在2016-5-9 17:46:28的发言:

只能填横线上的,其余的地方都填补了的

是只填横线上的,main()与问题无关,改动部分只是方便调试,可以去掉。
2016-05-09 19:16
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:20 
是一个典型的数组指针问题,完全用指针操作数组。

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define ROWS    5
#define COLS    4

void find(int a[][COLS]) 
{ 
    printf(" max  min\n"); 
    int (*p)[COLS], *q, *max, *min;
    for(p=a; p<a+ROWS; p++) 
    { 
        max = *p;
        min = max;
        for(q=max; q<(*p+COLS); q++) 
        { 
            if (*q > *max) 
                max = q;
            else if ((*q < *min))
                min = q;
                
        } 
        printf("%3d  %3d\n", *max, *min); 
    } 
} 

int main() 
{ 
    int a[ROWS][COLS],i,j; 
    srand((unsigned)time(0));
    for(i=0; i<ROWS; i++) 
        for(j=0; j<COLS; j++) 
            a[i][j] = rand()%9 + 1; //i*ROWS + j + 1;
            
    for(i=0; i<ROWS; i++) 
    {
        for(j=0; j<COLS; j++) 
            printf("%3d ", a[i][j]);
        printf("\n");
    }
    find(a); 
    return 0; 
}
2016-05-09 19:41
超级无敌阳光
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-4-18
收藏
得分:0 
回复 4楼 吹水佬
哦好的,谢谢
2016-05-11 21:24
快速回复:二维数组每行的最大值
数据加载中...
 
   



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

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