一道关于C语言指针的题目(图片)
发布网友
发布时间:2024-08-07 08:06
我来回答
共1个回答
热心网友
时间:2024-08-15 11:44
第一个问题
max第一个for循环中
if(*p+i>*p)这句话有问题,会始终成立,要得到p+i的值,需要用*(p+i)
第二个问题,同样在max第一个for循环中
p的值已经更改所以这里数组操作会越界。要想获得最大值,可以这样做
MAX = p;
for(i = 1; i < 25; i ++)
if(*(p+i) > *MAX) max = p + i;
第三个问题,由于在max最后赋值的时候还要用到p,所以在赋值为一维的时候不要改变p的值
或者说,自始至终都不要改变p的值
for(i = 1; i < 25; i ++)
copy[i] = p[i]; //或者 copy[i] = *(p + i);
第四个问题 排序
这部分你再看一下书上吧 这个排序不正确
第五个问题 也是最后一个了,最后在给四角赋值的时候,没有交换原来元素,这样会使得元素重复/丢失
综合第三个第四个问题,可以改成
建立一个指针数组,查找最小的四个值,把其指针存在这个数组中,然后类似于最大值赋值一些样,交换位置
注意 不要用copy 否则无法记住原始值位置