标题:用指针做冒泡
只看楼主
jxsrwyjwh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-8-5
 问题点数:0 回复次数:9 
用指针做冒泡
各位大哥,小弟刚学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-08-09 10:31
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
得分:0 
以下是引用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:///!!有挑战哦!!
2007-08-09 11:30
anelwl
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-7-26
得分:0 
用指针做的话,一般要写成函数实现比较标准点:下面是我写的一段程序
#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-08-09 11:39
寂寞的柳丁
Rank: 2
等 级:论坛游民
威 望:2
帖 子:93
专家分:10
注 册:2007-8-6
得分:0 
其實課本上有...呵呵
2007-08-09 11:56
zjw8173
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-8-9
得分:0 

不知道这样行不行??
#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-08-09 19:36
小鸟黑黑
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-7-25
得分:0 
请问 冒泡是啥意思啊?新手不知道什么是冒泡!是冒泡法么?

我讨厌别人叫我菜鸟,不过我的确很菜。。。
2007-08-09 19:50
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
得分:0 
楼主已经是在用指针了,*(p+n)和p[n]等价
2007-08-09 21:07
ConZhang
Rank: 1
来 自:北京
等 级:新手上路
帖 子:282
专家分:0
注 册:2007-8-7
得分:0 
呵呵,7楼说的对啊?!
2007-08-10 06:52
寂寞在唱歌
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-8-2
得分:0 
不是,应该是*(p+n)和&p[n]等价

2007-08-11 22:53
mycatboys
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-4-15
得分:0 
学 收藏
-----------------------------------------------------------------
哈哈,我终于换工作了,做[url=http://www.118cy.net]域名申请[/url]的,在外面经历了多年风吹雨打,做过保险、做过销售、但终归还是做技术!每天的[url=http://www.118cy.net/host/]虚拟主机[/url]工作虽然枯燥点,但内心安稳很多,呵呵
2007-08-12 00:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-161409-1-1.html




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

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