当前位置: 代码迷 >> C语言 >> [求助]最小的放第一个,最大的放最后一个(用指针)
  详细解决方案

[求助]最小的放第一个,最大的放最后一个(用指针)

热度:306   发布时间:2006-09-02 12:41:13.0
[求助]最小的放第一个,最大的放最后一个(用指针)

输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。

这个题我用数组可以写出来,可要求用指针,我一用指针就乱了,哪位能写个程序来看看,谢谢了

[此贴子已经被作者于2006-9-2 12:42:15编辑过]

搜索更多相关的解决方案: 指针  

----------------解决方案--------------------------------------------------------

您自己先写,哪里不懂再问...
哪怕你不用指针写也行,写了毕竟是锻炼了。


----------------解决方案--------------------------------------------------------

因为写得太乱,发帖时没好意思发,呵呵,这是第二个函数,因为第一个和第三个比较简单

void sort(int array[10])
{
int *max,*min,*p;
max=min=array;
for(p=array;p<array+9;p++)
if(*p>=*max)
max=p;array[9]=*max;*p=array[9];
for(p=array;p<array+9;p++)
if(*p<=*min)
min=p;array[0]=*min;*p=array[0];

}

[此贴子已经被作者于2006-9-2 13:44:53编辑过]


----------------解决方案--------------------------------------------------------

void swap(int *a ,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void sort(int array[])
{
int *max,*min,*p;
max=min=array;

for(p=array+1;p<array+10;p++)
{
if(*p>*max)
max=p;
if(*p<*min)
min=p;
}
swap(min,array);
swap(max,array+9);
}
刚看小说去了,呵呵。
您这指针用得有些乱了.{}少了,没事又交换数组那么多次...


----------------解决方案--------------------------------------------------------

嗨,你的程序看起来清楚多了,我怎么就没想到呢,呵呵

学习了,多谢,


----------------解决方案--------------------------------------------------------

#include<stdio.h>
#define N 50
void Input(int *a,int n)
{
int i;
for(i=0;i<n;i++)
{
scanf("%d",a+i);
}
}

void tiaohuan(int *a,int n)
{
int max=0,min=0,i,temp;

for(i=1;i<n;i++)
{
if(*(a+i)>*(a+max))
{
max=i;
}
if(*(a+i)<*(a+min))
{
min=i;
}
}
temp=*(a+min);
*(a+min)=*a;
*a=temp;
temp=*(a+max);
*(a+max)=*(a+n-1);
*(a+n-1)=temp;
}

void display(int *a,int n)
{
int i;

for(i=0;i<n;i++)
{
printf("%-3d",*(a+i));
}
printf("\n");
}

int main()
{
int data[N],n;
printf("输入元素个数,不超过%d:",N);
scanf("%d",&n);
printf("输入%d个元素:",n);
Input(data,n);
tiaohuan(data,n);
printf("输出处理后的%d个元素:",n);
display(data,n);
return(0);
}



----------------解决方案--------------------------------------------------------
#include "stdio.h"
main()
{
int a[10];
int i;
int min,max;
printf("array A:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=a[0];
min=a[0];



for(i=1;i<10;i++)
{
if(a[i]>max) max=a[i];
if(a[i]<min) min=a[i];
}
a[0]=min;
a[9]=max;

printf("array A:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
}
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-09-03 01:12:16
ajey2004

等 级:新手上路
帖 子:164
专家分:0
注 册:2004-12-30
  得分:0 

先用数组写,再改成指针比较容易


----------------解决方案--------------------------------------------------------
以下是引用ajey2004在2006-9-3 20:07:07的发言:

先用数组写,再改成指针比较容易

呵呵,那写出来还有什么意思,又不是为了完成作业,

不是说指针是C语言中最重要的部分吗?

直接想出来爽一点呀,


----------------解决方案--------------------------------------------------------
  相关解决方案