C语言的一些问题...
2016-06-01 本文已影响17人
MOKA9
1.【数组】
从键盘输入6个整数保存到数组中,求值最大的元素,将这个值最大的元素与数组的最后一个元素交换。最后输出整个数组。
这道题看起来一点都不难,对,其实它也不难...就是先比较选出最大值,然后再交换,交换可以通过中间变量来做,然而我交换了半个点都是乱七八糟的数。。。
最后发到新手群有人问我,数组长度不是6吗,我说嗯,我还想说我写的就是6啊,后来反应过来,因为数组长度6,下标从0-6,所以最大下标是5,于是交换的时候应该是
t=a[5];a[5]=a[k];a[k]=t;
然后成功了,所以我的错误真的很低级但又死活搞不清。
接下来我又问为什么我换成i不行呢,这个人家还没说呢,我就自己在琢磨。
因为我现在学会了一个检验自己哪步做错的方法,虽然好像有个通过语句追踪什么的,但是我没弄会,假期再研究研究。
我现在通过把每阶段得到的值或者返回值打印出来来看那个值对不对...这样可以缩小错误范围。
额,但我打印出来最大值的下标是对的,所以就是交换部分有问题咯...然而就是不知道怎么回事,我就开始从下标入手。
后来发现,果然是下标问题,i=6的时候才跳出循环,然而此时i已经=6了,然后t=a[6]还是下标越界了呀...
所以我机智的把下标改成了i-1,成功了。