| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 905 人关注过本帖
标题:[求助]指针编写函数解决排序问题
只看楼主 加入收藏
黑飞狐
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-11-12
收藏
 问题点数:0 回复次数:10 
[求助]指针编写函数解决排序问题
#include "stdio.h"
main()
{ int paixu(int *p,int n);
int a[3],i;
printf("input three numbers:\n");
for(i=0;i<3;i++)
scanf("%d",&a[i]);
paixu(a,3);
for(i=0;i<3;i++)
printf("%d ",a[i]);
}
int paixu(int a[],int n)
{int i,j,t;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{if(a[i])<a[j]))
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
这是用数组函数解决排序的问题.可是要想用指针,paixu函数该怎么写呢?我都写了好几个.但都不行.

[此贴子已经被作者于2006-5-21 20:07:55编辑过]

搜索更多相关主题的帖子: 指针 函数 编写 
2006-05-21 20:06
luo113927
Rank: 1
等 级:新手上路
帖 子:173
专家分:0
注 册:2006-3-15
收藏
得分:0 
声明用的是这个,下面为什么又不用 int paixu(int *p,int n);

int paixu(int a[],int n)
2006-05-21 22:28
a402730324
Rank: 5Rank: 5
等 级:贵宾
威 望:18
帖 子:1233
专家分:0
注 册:2005-12-1
收藏
得分:0 

一个是实参,一个是形参。你弄错啦,


敢犯强汉者,虽远必诛!——陈汤 不知吾辈何时方能吐出此豪言壮语?
2006-05-21 23:00
黑飞狐
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-11-12
收藏
得分:0 
#include "stdio.h"
main()
{ int paixu(int *p,int n);
int a[3],i;
printf("input three numbers:\n");
for(i=0;i<3;i++)
scanf("%d",&a[i]);
paixu(a,3);
for(i=0;i<3;i++)
printf("%d ",a[i]);
}
int paixu(int a[],int n)
{
int i,j,t;
for(i=0;i<(n-1);i++)
{
for(j=i+1;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
}
}如果是这样,岂不是更简洁.就是不知道这么做对不对.书上的程序是这样写的
#include "stdio.h"
main()
{ int paixu(int *p,int n);
int a[3],i;
printf("input three numbers:\n");
for(i=0;i<3;i++)
scanf("%d",&a[i]);
paixu(a,3);
for(i=0;i<3;i++)
printf("%d ",a[i]);
}
int paixu(int a[],int n)
{int k,i,t,j;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
{if(a[i]<a[j])k=j;
if(k!=i){t=a[i];
a[i]=a[k];
a[k]=t;}
}
}
}
我不知道K能起什么作用,像是多余的.

2006-05-21 23:35
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

[CODE]
#include "stdio.h"
void Sort(int *p,int n); /*类型为void,函数名第一个字母大写*/

int main()
{
int a[3],i;

printf("input three numbers:\n");
for(i=0;i<3;i++)
scanf("%d",&a[i]);
Sort(a,3);
for(i=0;i<3;i++)
printf("%d ",a[i]);
return 0;
}

void Sort(int a[],int n)
{
int i,j,t;

for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if( a[i] < a[j] )
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}

[/CODE]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-21 23:41
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
指针和数组在你这个题中有区别吗

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-21 23:44
a402730324
Rank: 5Rank: 5
等 级:贵宾
威 望:18
帖 子:1233
专家分:0
注 册:2005-12-1
收藏
得分:0 
呵呵
书上要讲的是指针,所以只有这样写啦。那么你认为k 是多余的,你就把k去掉,看能不能运行?我认为不行。

敢犯强汉者,虽远必诛!——陈汤 不知吾辈何时方能吐出此豪言壮语?
2006-05-21 23:44
黑飞狐
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-11-12
收藏
得分:0 
程序是对的.我都试过多次了.但我真的不明白K到底有什么用途.其实完全可以不用这个中间变量的.我把这个程序改了一下,用了宏定义.
#include "stdio.h"
#define Y 3
main()
{ int paixu(int *p,int n);
int a[Y],i;
printf("input three numbers:\n");
for(i=0;i<Y;i++)
scanf("%d",&a[i]);
paixu(a,Y);
for(i=0;i<Y;i++)
printf("%d ",a[i]);
}
int paixu(int a[],int n)
{
int i,j,t;
for(i=0;i<(n-1);i++)
{
for(j=i+1;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
}
}


2006-05-22 00:04
黑飞狐
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-11-12
收藏
得分:0 
我仔细推了一下,用K使用的是选择法,而不用则是用的冒泡法.对吗?

2006-05-22 00:21
chenqing
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-5-18
收藏
得分:0 
冒泡的算法是什么样的啊
2006-05-22 13:12
快速回复:[求助]指针编写函数解决排序问题
数据加载中...
 
   



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

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