题目:输入n个数,将其中最小的数与第一个数对换把最大的数与最后一个数对换
题目并且要求写三个函数本人写的代码如下,但就是输出结果中总会有一个数和排在第一个最小的那个数相同,请问是为什么呢,求大神指点指点,最好可以把完整代码发一下,真的非常感谢啊!!!!
#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,*p;
p=a;
input(p,10);
deal(p,10);
output(p,10);
p=a;
return 0;
}
帖子中的图片出现的是另一种情况{:10_266:}{:10_266:}{:10_266:}
就是出现了不是第一个数但是却有两个重复的数字,真的很蒙蔽啊{:10_247:} 本帖最后由 yuxijian2020 于 2021-5-11 22:23 编辑
我没自己运行,就一眼看过去的话
int min=*a,max=*a,temp,i;
这里 要找最小的数和 最大的数
那一般 min 的初值最好设一个极大数(比如 INT_MAX ) max最好设一个极小数(比如 0 )
另外,一个函数最好只干一件事 我看了半天,你这功能不就是找到最小的数放在数组第一个位置,找到最大的数放在数组的最后一个位置么
没啥问题啊,你本身输入的值就有相同的啊
你想实现啥功能 yuxijian2020 发表于 2021-5-11 22:31
我看了半天,你这功能不就是找到最小的数放在数组第一个位置,找到最大的数放在数组的最后一个位置么
没啥 ...
哦哦,是我误解了哈哈哈哈{:10_291:}
页:
[1]