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;
}

帮忙找找错,谢谢

引用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 输出了结果。

希望这可以帮到你!

第一行写上#define _CRT_SECURE_NO_WARNINGS

第6行输入两个数的 scanf() 函数改用:scanf_s("%d%d", &a, &b);

在#include 之后加上#define _CRT_SECURE_NO_WARNINGS;
这是编译环境的问题,不是代码的问题