用指针,将输入的数字从大到小排列
#include "stdio.h"#define N 5
void main()
{ int a[N]={5,8,6,1,2} ,*p,*p1,temp;
p=a;
for(;p<a+N-1;p++)
{
for(p1=a+N-1;p1>p;p1--)
{
if(*p1>*(p1-1))
{
temp=*p1;
*p1=*(p1-1);
*(p1-1)=temp;
}
}
}
for(p=a;p<a+N;p++)
printf("%-4d",*p);
}
在yd4433的帮助下搞定了
冒泡法
有需要大家可以m我,一起去发现问题,解决问题
[[it] 本帖最后由 godmaysmile 于 2008-4-10 20:24 编辑 [/it]]
----------------解决方案--------------------------------------------------------
以前写的指针冒泡 希望对你有帮助
#define N 5
void main()
{ int a[N]={5,8,6,1,2} ,*p,*p1,temp;
p=a;
for(;p<a+N-1;p++)
{
for(p1=p;p<a+N;p++)
{ if(*p1<*(p1+1))
{
temp=*p1;
*p1=*(p1+1);
*(p1+1)=temp;
}
}
}
for(p=a;p<a+N;p++)
printf("%-4d",*p);
}
----------------解决方案--------------------------------------------------------
不知道为什么?
[[it] 本帖最后由 godmaysmile 于 2008-4-10 18:49 编辑 [/it]]
----------------解决方案--------------------------------------------------------
这道题我是弄不出来了
----------------解决方案--------------------------------------------------------
越界了
----------------解决方案--------------------------------------------------------
hehe 迷糊了把错的发给你了 这个是我写的 你参考下
#define N 5
void main()
{ int a[N]={5,8,6,1,2} ,*p,*p1,temp;
p=a;
for(;p<a+N-1;p++)
{
for(p1=a+N;p1>p;p1--)
{ if(*p1<*(p1-1))
{
temp=*p1;
*p1=*(p1-1);
*(p1-1)=temp;
}
}
}
for(p=a;p<a+N;p++)
printf("%-4d",*p);
}
恩再说下我 写的思想 定义了2个指针一个头 一个尾 头指针控制外循环次数 内层循环 尾指针控制 从最后开始拍 把小的升上去 然后外层循环++ 指针从A偏移到了 a+1 这样排序就从 最后排到第2个位置 依次类推
----------------解决方案--------------------------------------------------------