cony兔酱微博:c语言问题

来源:百度文库 编辑:高考问答 时间:2024/05/07 03:21:35
/*找出10十个整数中最大的和最小的数,删掉最大的,将最小的扩大3倍*/
#include"stdio.h"
void jieshou(int *p2);
void maxmin(int *p2);
void shuchu(int *p2);
void main()
{ int a[10],*p1,x;
p1=a;
jieshou(p1);
maxmin(p1);
shuchu(p1);
getch();
}
void shuchu(int *p2) /*输出*/
{ int i;
for(i=0;i<9;i++)
printf("%d ",*(p2+i));
}
void jieshou(int *p2) /*接收十个数*/
{ int i;
printf("Enter 10 integers;\n");
for(i=0;i<10;i++)
scanf("%d",p2+i);
}
void maxmin(int *p2)
{ int i,n=0,x=0;
for(i=0;i<9;i++) /*max*/
if(*(p2+i)<*(p2+i+1))
n=i+1;
for(i=0;i<9;i++) /*min*/
if(*(p2+i)>*(p2+i+1))
x=i+1;
printf("max=a[%d]=%d,min=a[%d]=%d\n",n,*(p2+n),x,*(p2+x));
*(p2+x)*=3; /*将最小的扩大3倍*/
for(i=n;i<9;i++) /*删除最大的数*/
*(p2+i)=*(p2+i+1);
}

请大家帮忙检查一下问题在哪,怎么修改!谢啦!
主要问题出现在 /*min*/ /*max*/
那里,另外的应该都好象是对的

比较大小时出了错(逻辑错误),如果是以下:
6,3,4,2,1
则你所得的n为:
2(即,得到的最大数为4),而正确的应该是0(6最大)
你应该将得到的最大数与每个数比较并记录当前最大的值而不是将数组中相邻两个数比较