当前位置: 代码迷 >> C语言 >> 用指针,将输入的数字从大到小排列
  详细解决方案

用指针,将输入的数字从大到小排列

热度:309   发布时间:2008-04-10 17:01:37.0
用指针,将输入的数字从大到小排列
#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个位置 依次类推
----------------解决方案--------------------------------------------------------
  相关解决方案