第1个回答 2013-12-15
#include<stdio.h>
//尽量不改动你的
int change(int *p,int bufSize)
{
int i=0;
int *t,*h,*temp;
t=p;
h=p;
temp=p;
//max
// for(i=0;*p!='\0';i++)//注意:元素0的值等于'\0',所以这种判断会漏掉0后边的元素
for (i=0;i<bufSize;i++)
{
if(*p>*t)
{
t=p;
}
p++;
}
printf("max=%d\n",*t);
p=temp;//reset first
//min
// for(i=0;*p!='\0';i++)
for (i=0;i<bufSize;i++)
{
if(*p<*h)
{
h=p;
}
p++;
}
printf("min=%d\n",*h);
i = *t;
*t = *h;
*h = i;
return *p;
}
int main()
{
int i=0,DataSize=0;
int changeData[]={9,1,2,7,4,5,6,0,8};
int *p=changeData;
DataSize=sizeof(changeData)/sizeof(int);
change(p,DataSize);
//printf("%d",*p); //没有这种写法,打印出来的只是地址值而已
for (i=0;i<DataSize;i++)
{
printf("%d ",*p);
p++;
}
//建议写成这样
// for (i=0;i<DataSize;i++)
// {
// printf("%d ",changeData[i]);
// }
printf("\n");
return 1;
}本回答被提问者采纳
第2个回答 2013-12-15
没看懂你写的。下面是我写的,看一下吧
#include<stdio.h>
void change(int *p, int num, int t, int h)
{
int i = 0;
t = h = 0;
for (i = 1; i < num; i++)
{
if (p[t] < p[i])
{
t = i;
}
if (p[h] > p[i])
{
h = i;
}
}
i = p[t];
p[t] = p[h];
p[h] = i;
}
int main()
{
int pp[9] = { 9, 1, 2, 7, 4, 5, 6, 0, 8 };
int *p = pp;
int t = 0, h = 0;
change(p, 9, t, h);
for (int i = 0; i < 9; i++)
{
printf("%d", p[i]);
}
}本回答被网友采纳