int max,min;
void swap(int *p1,int *p2)
{ int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void sort(int *b,int n)
{
int *p;
int i;
int *b_end;
b_end=b+n;
max=min=*b;
for(p=b+1;p<b_end;p++)
{ if(*p>max)max=*p;
else if(*p<min)min=*p;
}
swap(&b[9],&max);
swap(&b[0],&min);
return;
}
main()
{
int *p,i;
int a[10];
p=a;
printf("请输入10个整数");
for(i=0;i<10;i++,p++)
scanf("%d",p);
p=a;
sort(p,10);
for(p=a;p<a+10;p++)
printf("%d",*p);
}
----------------解决方案--------------------------------------------------------
怎么没有人帮忙啊,哎...........
----------------解决方案--------------------------------------------------------
#include <stdio.h>
int max,min;
void swap(int *p1,int *p2)
{ int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void sort(int *b,int n)
{
int *p;
int i;
int *b_end;
b_end=b+n;
max=min=*b;
for(p=b+1;p<b_end;p++)
{ if(*p>max)max=*p;
else if(*p<min)min=*p;
}
swap(&b[9],&max);
swap(&b[0],&min);
return;
}
main()
{
int *p,i;
int a[10];
p=a;
printf("请输入10个整数");
for(i=0;i<10;i++,p++)
scanf("%d",p);
p=a;
sort(p,10);
for(p=a;p<a+10;p++)
printf("%d",*p);
}
----------------解决方案--------------------------------------------------------
你的程序是要干什么?我刚才运行了以下,编译连接都没有错,实现了将最小的数放在最前面,最大的数防在最后面的功能
----------------解决方案--------------------------------------------------------
没错啊.
你想问啥?
----------------解决方案--------------------------------------------------------
首先感谢终于有人回复了,你没有看到结果是最小的数把你输入的第一个数替了吗,我只是想要交换啊,而出现了两个最小值,不知道怎么回事,等待中...........
----------------解决方案--------------------------------------------------------
晕!我看了老半天,总算知道你要说啥了.
max and min 都是全局变量,它们早就被声明并赋与相应的空间,你做的交换函数是实现了交换功能,不过结果却不是你想要的,就因为,max和min是不同于数组的两个变量。
按你的意思,可以这样改:
#include <stdio.h>
void swap(int *p1,int *p2)
{ int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void sort(int *b,int n)
{
int *p,*max,*min;
int i;
int *b_end;
b_end=b+n;
max=min=b;
for(p=b+1;p<b_end;p++)
{ if(*p>*max)
max=p;
if(*p<*min)
min=p;
}
swap(&b[9],max);
swap(&b[0],min);
return;
}
main()
{
int *p,i;
int a[10];
p=a;
printf("请输入10个整数");
for(i=0;i<10;i++,p++)
scanf("%d",p);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
p=a;
sort(p,10);
for(p=a;p<a+10;p++)
printf("%d",*p);
getch();
}
不过,我仍是不知道这个程序除了语法没错误,还有啥意义,让它排序吗?
显然实现不了。可你又明明写了个sort,让俺,哎!
----------------解决方案--------------------------------------------------------
程序有问题
楼上的好象也不对
你输入4567981023看看符合他的要求吗
----------------解决方案--------------------------------------------------------
不好意思啊
楼上改的非常正确
我的电脑出了点问题
请问为什么正确的程序在我的电脑上总是有错误的结果呢
有时候还没有结果
----------------解决方案--------------------------------------------------------
其实这题不需要那么多指针,7楼程序也是不对的,当你把最小的放最后一个
得到的结果肯定不对
[CODE]
#include <stdio.h>
void Swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void Sort(int *b,int n)
{
int i,max,min,c;
max=min=0;
for(i=1;i<10;i++)
{
if(b[i]>b[max])
max=i;
if(b[i]<b[min])
min=i;
}
Swap(&b[9],&b[max]);
if(min==9)
Swap(&b[0],&b[max]);
else
Swap(&b[0],&b[min]);
}
int main()
{
int i,a[10];
printf("请输入10个整数\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
Sort(a,10);
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
[/CODE]
----------------解决方案--------------------------------------------------------