标题:二维数组问题,大家帮忙看看
只看楼主
张朝成
Rank: 4
等 级:业余侠客
帖 子:149
专家分:265
注 册:2012-3-22
结帖率:100%
已结贴  问题点数:2 回复次数:5 
二维数组问题,大家帮忙看看
#include <stdio.h>
void main()
{
    int a[3][4],*max,(*p)[4],*y,sum=0,*min,t,i;
    printf("please input 12 data:\n");
    for(max=min=*a,y=*a;y<*(a+3);y++)
    {
        scanf("%d,",y);
    sum=sum+*y;
    if(*max<*y)
        max=y;
    if(*min>*y)
        min=y;
    }
    printf("总和=%d\n所有元素的最大值=%d\n所有元素的最小值=%d\n",sum,*max,*min);
for(p=a,i=1;p<a+3;p++,i++)
{
for(sum=0,y=min=max=*p;y<*p+4;y++)
{
    sum=sum+*y;
    if(*min>*y)
min=y;
if(*max<*y)
max=y;
}
printf("第%d行的总和=%d\n第%d行的最大值=%d\n第%d行最小值=%d\n",i,sum,i,*max,i,*min);
}
}
上面的程序是正确的,但是为什么把倒数第五行的max=y交换地址这一句换为t=*max,*max=*y,*y=t;交换值就不对了呢,会影响最小值的输出,求解释,谢谢。
   
搜索更多相关主题的帖子: 最大值 please include max 
2012-07-02 21:03
如此悠然
Rank: 2
等 级:论坛游民
帖 子:62
专家分:86
注 册:2012-5-18
得分:0 
指针没学好呢。。。精神上支持你咯。。坐等高人神解!

——————
严谨
2012-07-02 22:11
马亚杰
Rank: 2
来 自:甘肃.天水
等 级:论坛游民
帖 子:38
专家分:43
注 册:2012-3-9
得分:0 
又是指针的问题。好好看看书吧,别人说了记不住。

喜欢电脑的疯子.
2012-07-02 22:25
ly2222
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:217
专家分:618
注 册:2012-6-15
得分:0 
指针俺暂时还没看,帮你顶下。
2012-07-02 22:32
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
得分:2 
仔细看看你的max 和 min的初始值,你的意思是max和min为指向每行头一个元素的列指针,这个没有问题。

但是你t=*max,*max=*y,*y=t的这样一句话会破坏原来的数组的值,比如第二个元素比第一个元素小,好嘛,你不管三七二十一,把第二个元素替换成了第一个元素,破坏了原来的数组。你的最小值肯定要受影响啊。

而max = y这样的语句确不会破坏原来的数组,自己好好体会吧。
2012-07-03 09:58
BBCN_rSean
Rank: 2
等 级:论坛游民
帖 子:16
专家分:26
注 册:2012-6-29
得分:0 
printf("总和=%d\n所有元素的最大值=%d\n所有元素的最小值=%d\n",sum,*max,*min);
for(p=a,i=1;p<a+3;p++,i++)
{
for(sum=0,y=min=max=*p;y<*p+4;y++)    //这里y本来指向min,后面如果把*y换成*max,*min就变成了*max,所以就错了
{
    sum=sum+*y;
    if(*min>*y)
min=y;
if(*max<*y)
max=y;
}
printf("第%d行的总和=%d\n第%d行的最大值=%d\n第%d行最小值=%d\n",i,sum,i,*max,i,*min);
}
}
2012-07-03 10:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-372677-1-1.html




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

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