| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 577 人关注过本帖
标题:自学C语言,今天遇到点问题,想请教一下
只看楼主 加入收藏
fsi049321
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-6-5
收藏
 问题点数:0 回复次数:6 
自学C语言,今天遇到点问题,想请教一下

现在在自学C语言,今天在指针这方面遇到点问题,还请各位前辈帮忙解答一下;
前面学的冒泡排序,刚刚理解,那能不能用指针来实现冒泡排序呢?,怎么解决,谢谢
#include <stdio.h>

void main()
{
int *prt1,*prt2,temp,num[5]={40,20,60,10,80};
prt1=num;
prt2=num;

for(prt1=num;prt1<num+5;prt1++)
{
for(prt2=prt1;prt2<num+5;prt2++)
{
if(num[prt2]>num[prt2+1])
{
temp=*(prt2+1);
*(prt2+1)=*prt2;
*prt2=temp;
}
}
}
for(prt1=num;prt1<num+5;prt1++)
{
printf("冒泡后的排序为:%d",prt1++);
}
}
我做了一下,但是不对,又不知道错在那,还请指教,谢谢!

[此贴子已经被作者于2007-6-5 15:49:39编辑过]

搜索更多相关主题的帖子: C语言 自学 
2007-06-05 15:35
holmeses
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-5-31
收藏
得分:0 
回复:(fsi049321)自学C语言,今天遇到点问题,想请教...
你程序中嵌套的那个循环的循环结束条件有问题,我觉得你对冒泡法还是不太熟
2007-06-05 16:12
holmeses
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-5-31
收藏
得分:0 
for(prt2=prt1;prt2<num+4;prt2++)

应该为for(prt2=prt1;prt2<num+4-(prt1-num);prt2++)

还有if(num[prt2]>num[prt2+1])也不对啊,哪有这种用法

[此贴子已经被作者于2007-6-5 17:34:06编辑过]

2007-06-05 16:19
fsi049321
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-6-5
收藏
得分:0 
回复:(fsi049321)自学C语言,今天遇到点问题,想请教...

谢谢前面的前辈,问题已经解决了

2007-06-05 16:33
zbylove10000
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-5-27
收藏
得分:0 
int *prt1,*prt2,temp,num[5]={40,20,60,10,80};
应该为char num[5]={40,20,60,10,80};
2007-06-05 16:51
yang522425
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-5-29
收藏
得分:0 

我改了一个这样就可以了你自己看一下吧
void main()
{
int *prt1,*prt2;
int temp;
int num[5]={40,20,60,10,80};

for(prt1=num;prt1<num+4;prt1++)
{
for(prt2=prt1+1;prt2<num+5;prt2++)
{
if(*prt1>*prt2)
{
temp=*prt1;
*prt1=*prt2;
*prt2=temp;
}
}
}
for(prt1=num;prt1<num+5;prt1++)
{
printf("%d ",*prt1);
}
printf("\n");
}

2007-06-05 18:20
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
冒泡的思想是轻的上浮重的下沉
#include <stdio.h>

void main()
{
int *prt1,*prt2,temp;
int num[5]={40,20,60,10,80};
for(prt1=num;prt1<num+5;prt1++)
{
for(prt2=num+5;prt2>prt1;prt2--)
{
if(*(prt2-1)>*prt2)
{
temp=*(prt2-1);
*(prt2-1)=*prt2;
*prt2=temp;
}
}
}
for(prt1=num;prt1<num+5;prt1++)
{
printf("冒泡后的排序为:%d\n",*prt1);
}
}

学习需要安静。。海盗要重新来过。。
2007-06-05 19:09
快速回复:自学C语言,今天遇到点问题,想请教一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023780 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved