2201_75843485 2023-05-19 16:37 采纳率: 50%
浏览 21

C语言 指针 两数值交换 基础题

img

源代码:


#include<stdio.h>
int main()
{
    int a, b, * p11, * p21;
    
    scanf("%d %d", &a, &b);
    p11 = &a;
    p21 = &b;
    void exchange(int* p12, int* p22);
    if (a < b)
        exchange(p11,p21);
    printf("max is %d,min is %d", a, b);
    return 0;
}

void exchange(int* p12, int* p22)
{
    int temp;
    temp = *p12;
    *p12 = *p22;
    *p22 = temp;
}

帮忙找找错,谢谢

  • 写回答

4条回答 默认 最新

  • 技术探索 2023-05-19 20:18
    关注

    引用chatgpt部分指引作答:
    在你的代码中,存在一个小错误。exchange 函数声明与调用之间的位置不正确,应该将函数定义放在调用之前。

    修改后的代码如下:

    
    ```c
    #include<stdio.h>
    
    void exchange(int* p12, int* p22);
    
    int main()
    {
        int a, b, * p11, * p21;
        
        scanf("%d %d", &a, &b);
        p11 = &a;
        p21 = &b;
        
        if (a < b)
            exchange(p11,p21);
            
        printf("max is %d,min is %d", a, b);
        return 0;
    }
    
    void exchange(int* p12, int* p22)
    {
        int temp;
        temp = *p12;
        *p12 = *p22;
        *p22 = temp;
    }
    
    

    ```
    需要注意的是,在主函数中使用了指针来取得输入的数值,并通过 if 语句和 exchange 函数交换了两个数的位置。最后,使用 printf 输出了结果。

    希望这可以帮到你!

    评论

报告相同问题?

问题事件

  • 创建了问题 5月19日