请问这个程序哪里有问题
对输入的两个整数按大小顺序输出,用函数实现交换功能输入a<b的值时没有交换
#include <stdio.h>
void main()
{
void change(int max, int min);
int a, b;
scanf("%d %d", &a, &b);
if( a < b )
{
change(a, b);
}
printf("%d > %d \n", a, b );
}
void change(int max, int min)
{
int temp;
temp = max;
max = min;
min = temp;
} 本帖最后由 jackz007 于 2021-11-30 23:29 编辑
如果要在函数内修改输入参数,那么,应该用参数地址,而不是参数本身作为输入参数。
#include <stdio.h>
void change(int * max , int * min)
{
int temp ;
temp = * max;
* max = * min ;
* min = temp;
}
int main(void)
{
int a , b ;
scanf("%d%d" , & a , & b) ;
if( a < b ) change(& a , & b) ;
printf("%d > %d\n" , a , b );
} 函数的参数都是以复制的形式传入函数的,对参数本身不会有影响,你需要传入指针。#include <stdio.h>
void change(int *max, int *min);
int main(void)
{
int a, b;
scanf("%d %d", &a, &b);
if (a < b)
{
change(&a, &b);
}
printf("%d > %d \n", a, b );
return 0;
}
void change(int *max, int *min)
{
int temp;
temp = *max;
*max = *min;
*min = temp;
return;
}
页:
[1]