#include<stdio.h>void main(){ int swap(int a,int b); int a[100],i,j; printf("please enter four numbers:\n"); for(i=0;i<4;i++) { scanf("%d",&a[i]); } for(i=0;i<3;i++) { for(j=i+1;j<4;j++) { if(a[i]>a[j]) { swap(a[i],a[j]); } } } for(i=0;i<4;i++) { printf("%d\t",a[i]); } printf("\n"); }int swap(int a,int b){ int temp; temp=a; a=b; b=temp; return 0;}
3 回答
onemoo
TA贡献883条经验 获得超454个赞
你是希望 swap 函数交换两个参数的值吗? 如果是的话,那么很遗憾,这样的 swap 无法实现这个功能。
函数传参是“值传递”,也就是说函数中的形参的值是“拷贝”了调用函数时的实参值,在函数中操作形参并不会影响外面的实参。你在 swap 函数中交换了形参 a b 的值,但这不会影响实参——也就是数组中元素的值。
函数参数的值传递是很重要的一个知识点,一般来说,你能写出 swap 这样的函数意味着你已经学过这个知识点了。如果你确实学过了这个,那你可能需要再复习一下相关知识。
还有,swap 函数根本没有必要返回值。
- 3 回答
- 1 关注
- 1069 浏览
添加回答
举报
0/150
提交
取消