叶花永不相见 发表于 2021-11-30 22:25:19

请问这个程序哪里有问题

对输入的两个整数按大小顺序输出,用函数实现交换功能
输入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:27:28

本帖最后由 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 );
}

梦回连营 发表于 2021-11-30 23:29:35

函数的参数都是以复制的形式传入函数的,对参数本身不会有影响,你需要传入指针。#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]
查看完整版本: 请问这个程序哪里有问题