为什么这个C++程序编译没错,但运行结果不对呢
要求输入一个三维数组计算和并输出最大和最小#include<iostream.h>voidmain(){int***p;inti,j,z,m,n,l,k,y,g,sum;...
要求输入一个三维数组计算和并输出最大和最小
#include<iostream.h>void main()
{
int ***p;
int i,j,z,m,n,l,k,y,g,sum;
p=new int**[5];
for(i=0;i<5;i++)
{
p[i]=new int*[6];
for(j=0;j<6;j++)
p[i][j]=new int[7];
} for(i=0;i<3;i++)
for(j=0;i<3;j++)
for(z=0;z<3;z++)
{
cin>>p[i][j][z];
sum=sum+p[i][j][z];
}
for(i=0;i<3;i++)
for(j=0;i<3;j++)
for(z=0;z<3;z++)
{
if(p[i][j][z]>p[i+1][j+1][z+1])
{
m=i;
n=j;
l=z;
}
if(p[i][j][z]<p[i+1][j+1][z+1])
{
k=i;
y=j;
g=z;
}
}
cout<<"sum="<<sum<<endl;
cout<<"max="<<p[m][n][l]<<"min="<<p[k][y][g];
delete p;
} 展开
#include<iostream.h>void main()
{
int ***p;
int i,j,z,m,n,l,k,y,g,sum;
p=new int**[5];
for(i=0;i<5;i++)
{
p[i]=new int*[6];
for(j=0;j<6;j++)
p[i][j]=new int[7];
} for(i=0;i<3;i++)
for(j=0;i<3;j++)
for(z=0;z<3;z++)
{
cin>>p[i][j][z];
sum=sum+p[i][j][z];
}
for(i=0;i<3;i++)
for(j=0;i<3;j++)
for(z=0;z<3;z++)
{
if(p[i][j][z]>p[i+1][j+1][z+1])
{
m=i;
n=j;
l=z;
}
if(p[i][j][z]<p[i+1][j+1][z+1])
{
k=i;
y=j;
g=z;
}
}
cout<<"sum="<<sum<<endl;
cout<<"max="<<p[m][n][l]<<"min="<<p[k][y][g];
delete p;
} 展开
2个回答
展开全部
做任务,刷分,我实在受不了你们直接贴代码让别人找错误了,没有格式,没有错误原因,还得打开编译器复制过去,而且程序目的不知道,看到头一头雾水。
我没有编译器尝试就看了一下。你这是求最大最小值?
首先你三围数组生成的维数是3 4 5 复制的却都是 3 3 3 编程风格不好。
第二你for循环的时候不加大括号只有最后一个for有(不知道对不对)看起来很混乱
第三注意最后一组循环里面的比较,如果i=2了,这时候就是if(p[2][j][z]>p[3][j][z])很明显数组越界了逻辑混乱
最后看最后一句delete,如果我没有记错你这种情况应该是三层four循环挨个delete吧,并且声明的时候用了 new[] 那么delete的时候也应该 delete[] 如果你这种写法不仅不能真正的释放内存(当然程序一眨眼就结束了,内存也就释放了)而且会有运行错误。
我没有编译器尝试就看了一下。你这是求最大最小值?
首先你三围数组生成的维数是3 4 5 复制的却都是 3 3 3 编程风格不好。
第二你for循环的时候不加大括号只有最后一个for有(不知道对不对)看起来很混乱
第三注意最后一组循环里面的比较,如果i=2了,这时候就是if(p[2][j][z]>p[3][j][z])很明显数组越界了逻辑混乱
最后看最后一句delete,如果我没有记错你这种情况应该是三层four循环挨个delete吧,并且声明的时候用了 new[] 那么delete的时候也应该 delete[] 如果你这种写法不仅不能真正的释放内存(当然程序一眨眼就结束了,内存也就释放了)而且会有运行错误。
更多追问追答
追问
虽然很感谢你指出错误但是看我的很恼火、我是C++新手怎么了、昨天才开始看书,能提出这种弱智问题的不用想都知道在这方面没有经验好不好。我就爱直接贴代码让人找错误怎么了。你爱答不答管我什么事。看着不爽不答不就行了何必说这样的话。一大早上心情被你破坏完了!
追答
木有怎么 ,有句话叫忠言逆耳,这都让你生气了,你还是别学了,如果你只是简单地为了应付考试,当我没说,确实应该以这种方法学习,谁都有新手时期,我新手的时候问题从来不会整个体味,我会直接把编译器检测到的错误原因复制下来粘贴到百度,然后去看,你会发现这种错误不是你一个人很多人已经把这种错误归纳总结好了,你不仅能改正这个错误还能接触到更广的只是,说这话没有盛气凌人的意思,只是希望你不要再在这条路上跑了,只能越跑越黑。就算别人告诉你错误了你改正了能怎么样?你印象绝对不会深。既然知道自己是C++新手就应该找到更有效的方法学习。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询