#include<stdio.h>
#define N 10
void main()
{
int *p,*t,a[N],i;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
p=a;
t=a;
for(i=1;i<N;i++)
{
if(*p<*(p+i))
p=p+i;
if(*t>*(t+i))
t=t+i;
}
printf("%d %d\n",*p,*t);
}
帮忙找个错…… 如果第一为是最大值那么此程序就能正常输出 但是如果第一位输入的不是最大值 此程序第一个输出是个很大的数 最小值也能正常输出…… 谢谢帮忙……
谢谢大家 我想要的不是答案 是错误…… 4楼的差一点看懂 还能再解释一下么……?
我明白了…… 应该这样说……
第一次循环执行p=p+i时p所存放的地址得到了改变 那么在循环第二次走到if(*p<*(p+i))时 *(p+i)里的p已经是p+1了再+2实际上就跳过了a[2]而用a[3]去比较了……
可以通过定义一个指针变量来求数组元素中的最大值与最小值。
具体实现方法可以参考如下程序:
#include<stdio.h>