|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 )
另外,一个函数最好只干一件事
|
|