@C语言大神,我这题为啥不能执行?求纠错(谢绝新代码)

//题目(用指针)输入10个整数,最小值与第一个换,最大值与最后一个换
int main()
{//32 24 56 78 1 98 36 44 29 6
int number[10];
void input(int *number);
void output(int *number);
void maxandmin(int *number);
input(number);
maxandmin(number);
output(number);
getch();//指针*number=地址=数组
}
void input(int *number)
{
int i;
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}

void output(int *number)
{
int *p;
for(p=number+1;p<number+10;p++)
printf("%d",*p);
}
void maxandmin(int *number)
{
int *max,*min,*p,t;
number=max=min;
for(p=number+1;p<number+10;p++)
if(*p>*max)
max=p;
{t=number[0];number[0]=*max;*max=t;}

for(p=number+1;p<number+10;p++)
if(*p<*min)
min=p;
{t=number[0];number[0]=*min;*min=t;}
}

错误1:

void output(int *number)
{
    int *p;
    for(p=number;p<number+10;p++) // p=number,从起始位置开始,不需要加1
    printf("%d \t",*p);          // 输出最好间隔,方便浏览
}

 void maxandmin(int *number) 中

错误2: 

  number=max=min;   //  ---> 改为  max=min = number;

错误3: 

 number[0]=*max  //  ---> 改为number[9]=*max;

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-05-27
output()函数中循环语句的初始值错误,应该是:for(p=number;......
还有:
void maxandmin(int *number)
{
int *max,*min,*p,t;
number=max=min;//应该是:max=min=number;
。。。。
第2个回答  2015-05-27
int main()
{//32 24 56 78 1 98 36 44 29 6
int number[10];
void input(int *number);
void output(int *number);
void maxandmin(int *number);
input(number);
maxandmin(number);
output(number);
getchar();//指针*number=地址=数组
return 0;
}
void input(int *number)
{
int i;
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}
void output(int *number)
{
int *p;
for(p=number+1;p<number+10;p++)
printf("%d",*p);
}
void maxandmin(int *number)
{
int *max,*min,*p,t;
number=max=min;
for(p=number+1;p<number+10;p++)
if(*p>*max)
max=p;
{
t=number[0];
number[0]=*max;
*max=t;
}
for(p=number+1;p<number+10;p++)
if(*p<*min)
min=p;
{
t=number[0];
number[0]=*min;
*min=t;
}
}
具体逻辑没有修改,只是修改了你的编译错误
相似回答