#include <stdio.h> int exchange( int a, int b ) { int temp; temp = a; a = b; b = temp; return( a, b

哪里出问题了??
#include <stdio.h>

int exchange( int a, int b )
{
int temp;

temp = a;
a = b;
b = temp;
return( a, b );

}

int main()
{
int x, y, z;
printf( "please input three integers:\n" );
scanf( "%d%d%d", &x, &y, &z );

if( x > y )
exchange( x, y );
if( x > z )
exchange( x, z );
if( y > z )
exchange( y, z );

printf( "%d %d %d", x, y, z );

return(0);
}

函数的参数改一改就可以了。

#include <stdio.h>

void exchange( int *a, int *b )
{
int temp;

temp = *a;
*a = *b;
*b = temp;
return;

}

int main()
{
int x, y, z;
printf( "please input three integers:\n" );
scanf( "%d%d%d", &x, &y, &z );

if( x > y )
exchange( &x, &y );
if( x > z )
exchange( &x, &z );
if( y > z )
exchange( &y, &z );

printf( "%d %d %d", x, y, z );
getch();

return(0);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-23
因为C调用时不支持值的传递。虽然你调用函数将值改变了,但它并不影响x,y,z的值;
你可以用数组和指针重新调用函数,就能将功能实现!

#include <stdio.h> int exchange( int a, int b ) { int temp; temp...
void exchange( int *a, int *b ){ int temp;temp = *a;a = *b;b = temp;return;} int main(){ int x, y, z;printf( "please input three integers:\\n" );scanf( "%d%d%d", &x, &y, &z );if( x > y )exchange( &x, &y );if( x > z )exchange( &x, &z )...

C语言编程 输入3个整数,按降序(从大到小的顺序)输出。
输入三个整数(空格隔开) : 12 45 32 45 32 12 \/ include <stdio.h> void Exchange(int *a,int *b) { int t = *a;a = *b;b = t;} int main() { int a,b,c;printf("输入三个整数(空格隔开) : ");scanf("%d%d%d",&a,&b,&c);if(a < b) Exchange(&a,&b); \/\/ ...

求c语言选择排序法和 冒泡排序法代码!
#include "Stdio.h"void main(){ void sa(int array[],int n); int array[10],i; printf("enter the array:\\n"); for(i=0;i<10;i++) scanf("%d",&array[i]); sa(array,10); printf("the sorted array:\\n"); for(i=0;i<10;i++) printf("...

C#编程 输入三个整数 按从小到大排列输出
include"stdio.h"void main(){ void exchange(int *q1,int *q2,int *q3); \/\/改成指针类型 void swap(int *a,int *b); \/\/改成指针类型 int a,b,c,*p1,*p2,*p3;scanf("%d,%d,%d",&a,&b,&c);p1=&a;p2=&b;p3=&c;exchange(p1,p2,p3); \/\/把指针做为实际参数传入函数 pr...

在线急求C语言上机考答案!自定义函数,实现将一个整数的高16位和低16位...
int main(){ int x;while( scanf( "%d", &x ) == 1 ){ int a = x >> 16;int b = x << 16;printf( "%d\\n", a , b, a + b );} return 0;}

C语言问题 输入a,b,c三个整数 按大小输出程序问题
这个排序思路大概是先通过两次比较找出最大值排第一位,然后剩下两个数比较一次找出最小值放最后 指针也是变量。交换变量的数值就像交换坑里的萝卜,拔出萝卜a放一边空个坑塞进萝卜b,再把萝卜a塞进空坑。还有“例如 a=1 b=2 a=x a=b b=x 互换结果b=1 a=2”中的a=x是不对的,等号...

c++4个数字比大小,出错了~~
应该是void exchange(int* m,int* n),这样才能写if (...) exchange(p1,p2),也只有这样才能实现用exchange()真正交换两个数的位置,当然,exchange()内部的实现语句也需要进行对应的修改。或者,使用不使用指针,用引用也传递参数也可以。PS:你好像少写了一个*p2 < *p4的比较语句。

C语言写的交换两个数的函数不起作用,哪里有问题
这种形参是值传递 而不是引用传递 所以实际上没有改变到外部的实参的值 你要传地址进去才行 exchange(int *a,int *b) 里面a,b都得改成*a,*b 调用是exchange(&a,&b);

输入5个数字--不循环能排序吗?
include "stdio.h"void Exchange(int *a,int *b){ int x=*a;a=*b;b=x;} void main(void){ int a1,a2,a3,a4,a5;scanf("%d%d%d",&a1,&a2,&a3,&a4,&a5);if(a1>a2)Exchange(&a1,&a2);if(a1>a3)Exchange(&a1,&a3);if(a1>a4)Exchange(&a1,&a4);if(a1>a5)Exchange(&a1...

那位大侠能帮我改一下下面c程序,环境WIN-TC
void exchange(int *m,int *n)\/*注意这里*\/ { int temp;\/*注意这里*\/ if (*m>*n) \/*注意这里*\/ { temp=*m; \/*注意这里*\/ m=*n; \/*注意这里*\/ n=temp; \/*注意这里*\/ } } void out(int *a) \/*注意这里*\/ { int i;for (i=0;i<N;i++)printf("%3d",a[i]);...

相似回答
大家正在搜