为什么这个C++程序编译没错,但运行结果不对呢

2024-11-07 13:30:05
有2个网友回答
网友(1):

你要学会自己测试,这么多行的程序,别人看起来也很费劲。
自己测试的思路基本是由少到多,步步为营:你把后面的程序注释起来,先运行前面的,没有问题了再增加一行或者几行,这样一般可以确定在哪一条语句执行的时候出现了问题。
另外,你可以将输入数据缩小,比如数组的元素刚开始设置成一个或者两个,执行以下看看。
当你确定哪里出了问题之后,你可以使用debug模式,先设置断点,然后调试执行,这样基本可以解决绝大多数的问题。关于如何调试,是一个重要的必备技术。基本的调试方法也比较好操作,大多数编程语言书上都有,你自己去模仿着走一遍,以后就知道了。很容易的,希望对你有帮助

网友(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[] 如果你这种写法不仅不能真正的释放内存(当然程序一眨眼就结束了,内存也就释放了)而且会有运行错误。