这个乍一看没有错误 但我把你打程序抄近TC运行了一下 发现不是像你说的那样的错误 及时第一位是最大的也会输出错误 无论怎么 输出的第一位都是24940 最小的也有错误 最小有时会输出最大
后来仔细看了一下 发现你后面一个for循环里有大错误 if语句是进行比较 就第一个if来说 你把a[0]与a[1]先进行比较 这里你用的是p=p+i; 就是使p指向p+i所指向的内存 但需要注意 假设我输入的一组数是 9 10 8 5 15 4 2 3 11 1 当进行第一次循环后 p会指向p+1 既然是用p=p+i; 这是p+1就变成了p 当计算机再进行循环至a[4] 也就是15时 就会有p=p+4; 而这时想对于刚开始时的指针p就已经不是指向你想要他指的那个数(也就是大的那个)了 此时的指针p与刚开始的比其实不是指向了p+4 而是指向了p+5 也就是4了
所以程序出现了这般错误
要改正的话只要把后面那个for循环换成如下程序段就可以了:
for(i=1;i
if(*p*p=a[i];
if(*t>a[i])
*t=a[i];
}
如果规定要用指针的话那可以再定义两个中间指针变量应该可以解决
只能说这么多了 太晚了 要睡觉了~~ 不然明天第一节课又没得上了
希望我的答案对你有帮助 嘿嘿!!