请大家帮我看看这个程序,不知到问题出在哪里,如何解决?

cava_she 2004-11-22 03:58:49
#include<stdio.h>
void swap(int a,int b);
int main()
{

int i,j,k,t;
static int s[10]={23,3,5,25,34,3,45,47,87,8};
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
{
if (s[i]>s[j])
swap(s[i],s[j]);
}

for(k=0;k<10;k++)printf("%d ",s[k]);
return 0;
}

void swap(int a,int b){
int t;
t=a;
a=b;
b=t;
}
...全文
87 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cava_she 2004-11-22
  • 打赏
  • 举报
回复
谢谢大侠们,晓得了
carylin 2004-11-22
  • 打赏
  • 举报
回复
void swap(int a,int b)
改成
void swap(int &a,int &b)
即可

快乐鹦鹉 2004-11-22
  • 打赏
  • 举报
回复
void swap(int a,int b){
int t;
t=a;
a=b;
b=t;
}
这个函数是不合适的。根据需求,显然你需要交换s[i]和s[j]的内容。但由于你的swap函数定义的参数类型不是引用或者指针,所以实际上并没有完成s[i]和s[j]数据的交换,只是完成了一个拷贝变量的交换。因此将swap的参数修改为引用或者指针就可以了。这里用引用会比较方便:
void swap(int& a,int& b){
int t;
t=a;
a=b;
b=t;
}
这样才能达到s[i]和s[j]交换的效果。
avalonBBS 2004-11-22
  • 打赏
  • 举报
回复
调用这个swap时,要记得参数得是个指向int的指针哟:)
avalonBBS 2004-11-22
  • 打赏
  • 举报
回复
void swap(int a,int b){
int t;
t=a;
a=b;
b=t;
}
swap如果写成这样,是不能交换a,b的值
改成:
void swap(int *a,int *b){
int t=*a;
*a=*b;
*b=t;
}

69,371

社区成员

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

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