|  | 
 
| 
题目并且要求写三个函数
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  本人写的代码如下,但就是输出结果中总会有一个数和排在第一个最小的那个数相同,请问是为什么呢,求大神指点指点,最好可以把完整代码发一下,真的非常感谢啊!!!!
 #include <stdio.h>
 void input(int *a,int n)
 {
 int i;
 printf("enter %d integers:\n",n);
 for(i=0;i<n;i++)
 scanf("%d",a++);
 }
 void deal(int *a,int n)
 {
 int min=*a,max=*a,temp,i;
 for(i=0;i<n;i++)
 {
 if(min>*(a+i))
 min=*(a+i);
 if(max<*(a+i))
 max=*(a+i);
 }
 if(min!=*a)
 {
 temp=min;
 min=*a;
 *a=temp;
 }
 if(max!=*(a+n-1))
 {
 temp=max;
 max=*(a+n-1);
 *(a+n-1)=temp;
 }
 }
 void output(int *a,int n)
 {
 int i;
 printf("after deal:\n");
 for(i=0;i<n;i++)
 printf("%d ",*(a+i));
 }
 int main()
 {
 int a[10],*p;
 p=a;
 input(p,10);
 deal(p,10);
 output(p,10);
 p=a;
 return 0;
 }
 
 
 本帖最后由 yuxijian2020 于 2021-5-11 22:23 编辑 
我没自己运行,就一眼看过去的话
 复制代码int min=*a,max=*a,temp,i;
这里 要找最小的数  和 最大的数 
那一般 min 的初值最好设一个极大数(比如 INT_MAX )   max最好设一个极小数(比如 0 )
 
另外,一个函数最好只干一件事 | 
 |