当前位置: 代码迷 >> C语言 >> 指针与数组的问题??????????????
  详细解决方案

指针与数组的问题??????????????

热度:111   发布时间:2006-04-23 07:43:00.0
指针与数组的问题??????????????
#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);
}
搜索更多相关的解决方案: 指针  

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

怎么没有人帮忙啊,哎...........


----------------解决方案--------------------------------------------------------
以下是引用knight110在2006-4-23 7:43:00的发言:
#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]


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