c语言 指针排序

qiangkairuoguan 2011-10-15 05:06:08
#include<stdio.h>
void main()
{
int a[2],i,b;
void swap(int *a,int *b);
void sort(int a[]);
printf("input three intger\n");
for(i=0;i<3;i++)
scanf("%d ",&b);
sort(a);
for(i=0;i<3;i++)
printf("%d ",a[i]);
}
void sort(int a[])
{
int *p=a;
if(*p<*(p+1))
swap(*p,*(p+1));
if(*p<*(p+2))
swap(*p,*(p+2));
if(*(p+1)<*(p+2))
swap(*(p+1),*(p+2));
}
void swap(int *a,int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}
...全文
154 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
goldbeef 2011-10-17
  • 打赏
  • 举报
回复
建议单步调试
Kai_gai 2011-10-17
  • 打赏
  • 举报
回复
貌似LZ开辟的数组空间不够呵
int a[2],i,b; //a[2] 怎么能装下三个数据?
void swap(int *a,int *b);
void sort(int a[]);
printf("input three intger\n");
for(i=0;i<3;i++)
scanf("%d ",&b);
sort(a);
for(i=0;i<3;i++)
printf("%d ",a[i]);
}
Kai_gai 2011-10-16
  • 打赏
  • 举报
回复
#include <stdio.h>
void swap(int *a,int *b);
void sort(int a[]);
void main()
{
int a[3];
int i,b;
printf("input three intger\n");
for(i=0;i<3;i++)
// scanf("%d ",&a[i]); //貌似这儿有问题 建议楼主去看看scanf的用法
scanf("%d",&a[i]);
// scanf("%d ",&b); b 有何作用
sort(a);
for(i=0;i<3;i++)
printf("%d ",a[i]);
}
void sort(int a[])
{
int * p=a; //p为指针变量 注意区分指针和指针变量
if(*p<*(p+1))
swap(p,(p+1));
// swap(*p,*(p+1));
if(*p<*(p+2))
swap(p,(p+2));
// swap(*p,*(p+2));
if(*(p+1)<*(p+2))
swap((p+1),(p+2));
// swap(*(p+1),*(p+2));
}
void swap(int *a,int *b)
{
int t;
t = *a;
*a = *b;
*b = t;
}
AndyZhang 2011-10-15
  • 打赏
  • 举报
回复
这个单步调试一下,很清楚啊
JJF 2011-10-15
  • 打赏
  • 举报
回复
一下是我对你程序的说明

#include<stdio.h>
void main()
{
int a[2],i,b;
void swap(int *a,int *b);
void sort(int a[]);
printf("input three intger\n");
for(i=0;i<3;i++)
scanf("%d ",&b);//不知道b有什么用
sort(a);
for(i=0;i<3;i++)
printf("%d ",a[i]);
}
void sort(int a[])
{
int *p=a;
if(*p<*(p+1))
swap(*p,*(p+1));//
if(*p<*(p+2))
swap(*p,*(p+2)); //你的swap()的参数是指针,*p已经是不是指针了
if(*(p+1)<*(p+2))
swap(*(p+1),*(p+2));/你的swap()的参数是指针,*p已经是不是指针了
}
void swap(int *a,int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}
haofang666777 2011-10-15
  • 打赏
  • 举报
回复
呵呵 +++[Quote=引用 2 楼 binghuazh 的回复:]
for(i=0;i<3;i++)
scanf("%d ",&b); //没给到a【】啊。。。。给b有什么用。。。
sort(a);
[/Quote]
blingpro 2011-10-15
  • 打赏
  • 举报
回复
for(i=0;i<3;i++)
scanf("%d ",&b); //没给到a【】啊。。。。给b有什么用。。。
sort(a);
qiangkairuoguan 2011-10-15
  • 打赏
  • 举报
回复
各位大侠 请明示此程序的错误,小弟愚钝,为什么sort函数调用不到啊?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧