求教这串代码哪里有bug?

题意是输入十个整数,将这十个数中的最小值与第一位对调,
最大值与最后一位对调,然后输出这十个数。
但是这串代码输出的是第一位数依次加上4,求教问题出在哪?
谢谢!
#include
void input(int*);
void fun(int*);
void print(int*);
int main()
{
int a[10];
int *p=a;
input(p);
fun(p);
print(p);
return 0;
}
void input(int *p)
{
int i;
for (i=0;i {
scanf("%d",p+i);
}
}
void fun(int *q)
{
int i,t=0;
int *p=q;
int *pmin=p;
int *pmax=p;
for (i=0;i {
if (*p>*pmax)
{
pmax=p;
}
if (*p<*pmin)
{
pmin=p;
}
}
t=*pmax;
*pmax=*p;
*p=t;
t=*pmin;
*pmin=*p;
*p=t;
}
void print(int *p)
{
int i;
for(i=0;i<10;i++)
{
printf("%d ",p+i);
}
printf("\n");
}

1个回答

// Q950613.cpp : Defines the entry point for the console application.
//

#include <stdio.h>

void input(int*);
void fun(int*);
void print(int*);

int main() 
{
int a[10];
int *p=a;
input(p);
fun(p);
print(p);
return 0; 
}
void input(int *p) 
{
int i;
for (i=0;i < 10; i++) {
scanf("%d",p+i);
}
}
void fun(int *q) 
{
int i,t=0;
int *p=q;
int *pmin=p;
int *pmax=p;
for (i=0;i < 10; i++) {
p = q + i;
if (*p>*pmax) 
{
pmax=p;
}
if (*p<*pmin) 
{
pmin=p;
}
}
t=*pmax;
*pmax=*(q+9);
*(q+9)=t;
t=*pmin;
*pmin=*q;
*q=t;
}
void print(int *p) 
{
int i;
for(i=0;i<10;i++)
{
printf("%d ",*(p+i));
}
printf("\n");
}

SZYLQJ
000zhu 谢谢谢谢大佬!!!
3 个月之前 回复
SZYLQJ
000zhu 谢谢谢谢大佬!!!
3 个月之前 回复
SZYLQJ
000zhu 谢谢谢谢大佬!!!
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问