c语言 请大家帮我看看是哪里出问题了🥺

输入十个整数,将其中最小的数和第一个数互换,把最大的数和最后一个数互换。写三个函数,1.输入十个数 2.进行处理 3.输出十个数。所有函数参数均用指针。

img

img

img

  • 你的change 有问题,指针++ ,实际不是你想象中的那样的遍历

img

参考如下:

#include<stdio.h>
#include<stdlib.h>

void input(int *a);

void change(int *a);

void output(int *a);

int main(){
    int a[10];
    input(a);
    change(a);
    output(a);
}

void input(int *a)
{
    int i;
    printf("请输入10个数:\n");
    for (i = 0; i < 10; i++)
        scanf("%d", a + i);
}

void change(int *a)
{
    int j, max, min, maxJ, minJ;
    max = min = *a;
    maxJ = minJ = 0;
    for (j = 1; j < 10; j++)
    {
        if (*(a + j) > max)
        {
            max = *(a + j);
            maxJ = j;
        }
        if (*(a + j) < min)
        {
            min = *(a + j);
            minJ = j;
        }
    }
    int t;
    t = *a;
    *a = *(a + minJ);
    *(a + minJ) = t;

    t = *(a + 9);
    *(a + 9) = *(a + maxJ);
    *(a + maxJ) = t;

}

void output(int *a)
{
    int i;
    printf("这十个数的新的顺序为:\n");
    for (i = 0; i < 10; i++)
        printf("%d ", *(a + i));
}

如有帮助,欢迎点赞+采纳哈!