| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 364 人关注过本帖
标题:用指针做冒泡
收藏  订阅  推荐  打印 
jxsrwyjwh
Rank: 1
等级:新手上路
帖子:3
积分:130
注册:2007-8-5
用指针做冒泡

各位大哥,小弟刚学C,请各位帮我指教一下,如何用指针做循环,并且冒泡

不胜感激



#include<stdio.h>
#define N 5
void main()
{
int i,j;
int grade[N],temp;
printf("\n输入%d 个学员的成绩:\n",N);
for(i=0;i<N;i++)
{
scanf("%d",&grade[i]);
}
for(i=0;i<N;i++)
{
for(j=0;j<N-i-1;j++)
{

if (grade[j]<grade[j+1])
{
temp=grade[j+1];
grade[j+1]=grade[j];
grade[j]=temp;
}
}
}
printf("\n排序后的成绩为:\n");
for(i=0;i<N;i++)
printf("%3d",grade[i]);
printf("\n");
}
搜索更多相关主题的帖子: 指针  冒泡  int  grade  void  
2007-8-9 10:31
viky2003
Rank: 3Rank: 3
等级:中级会员
帖子:235
积分:2452
注册:2007-4-11

以下是引用jxsrwyjwh在2007-8-9 10:31:43的发言:
各位大哥,小弟刚学C,请各位帮我指教一下,如何用指针做循环,并且冒泡

不胜感激



#include<stdio.h>
#define N 5
void main()
{
int i,j;
int grade[N],temp;---------------------定义为*temp;
printf("\n输入%d 个学员的成绩:\n",N);
for(i=0;i<N;i++)
{
scanf("%d",&grade[i]);
}
for(i=0;i<N;i++)
{
for(j=0;j<N-i-1;j++)
{

if (grade[j]<grade[j+1])---------改称*(grade+j)<*(grade+j+1)
{
temp=grade[j+1];------------改为*temp=*(grade+j+1);
grade[j+1]=grade[j];-------改为*(grade+j+1)=*(grade+j);
grade[j]=temp;-------------改为*(grade+j)=*temp;
}
}
}
printf("\n排序后的成绩为:\n");
for(i=0;i<N;i++)
printf("%3d",grade[i]);
printf("\n");
}


要练习算法就来http://yzfy.org/!!有挑战哦!!
2007-8-9 11:30
anelwl
Rank: 2
等级:注册会员
帖子:70
积分:800
注册:2007-7-26

用指针做的话,一般要写成函数实现比较标准点:下面是我写的一段程序
#include<stdio.h>
#include<stdlib.h>
#define N 5
void compare(int *str,int n);
void main()
{ int i;
int grade[N];
printf("\n输入%d 个学员的成绩:\n",N);
for(i=0;i<N;i++)
{
scanf("%d",&grade[i]);
}
compare(grade,N);
printf("\n排序后的成绩为:\n");
for(i=0;i<N;i++)
printf("%3d",grade[i]);
printf("\n");
}
void compare(int *str,int n)
{ int i,j;
int *pa;
pa=(int *)malloc(sizeof(int));
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{

if (*(str+j)<*(str+j+1))
{
*pa=*(str+j+1);
*(str+j+1)=*(str+j);
*(str+j)=*pa;
}
}
}
}

2007-8-9 11:39
寂寞的柳丁
Rank: 2
等级:注册会员
威望:1
帖子:80
积分:898
注册:2007-8-6

其實課本上有...呵呵
2007-8-9 11:56
zjw8173
Rank: 1
等级:新手上路
帖子:2
积分:120
注册:2007-8-9

不知道这样行不行??
#include<stdio.h>
#include<stdlib.h>
#define N 5
void compare(int *str,int n);
void main()
{ int i;
int grade[N];
printf("\n输入%d 个学员的成绩:\n",N);
for(i=0;i<N;i++)
{
scanf("%d",&grade[i]);
}
compare(grade,N);
printf("\n排序后的成绩为:\n");
for(i=0;i<N;i++)
printf("%3d",grade[i]);
printf("\n");
}
void compare(int *str,int n)
{ int i,j,temp;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{

if (str[j]<str[j+1])
{
temp=str[j+1];
str[j+1]=str[j];
str[j]=temp;
}
}
}
}

2007-8-9 19:36
小鸟黑黑
Rank: 2
等级:注册会员
帖子:61
积分:710
注册:2007-7-25

请问 冒泡是啥意思啊?新手不知道什么是冒泡!是冒泡法么?

我讨厌别人叫我菜鸟,不过我的确很菜。。。
2007-8-9 19:50
雨中飞燕
Rank: 2
等级:ID已被封
威望:8
帖子:2200
积分:22984
注册:2007-8-9

楼主已经是在用指针了,*(p+n)和p[n]等价
2007-8-9 21:07
ConZhang
Rank: 3Rank: 3
来自:北京
等级:中级会员
帖子:282
积分:3012
注册:2007-8-7

呵呵,7楼说的对啊?!
2007-8-10 06:52
寂寞在唱歌
Rank: 1
等级:新手上路
帖子:12
积分:220
注册:2007-8-2

不是,应该是*(p+n)和&p[n]等价

2007-8-11 22:53
mycatboys
Rank: 1
等级:新手上路
帖子:26
积分:350
注册:2007-4-15

学 收藏
-----------------------------------------------------------------
哈哈,我终于换工作了,做[url=http://www.118cy.net]域名申请[/url]的,在外面经历了多年风吹雨打,做过保险、做过销售、但终归还是做技术!每天的[url=http://www.118cy.net/host/]虚拟主机[/url]工作虽然枯燥点,但内心安稳很多,呵呵
2007-8-12 00:01
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.061936 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved