C++ C语言 解答一下!

1.在main()中定义一个变量x,键盘输入值,
用传值方式调用函数fun1(),修改形参的值为原来值的平方,返回主程序,输出x
用传址方式调用函数fun2(),同样修改为原来值的平方,返回主程序,输出x。
2. 在main()中定义一个数组aa[9],并初始化,使用传址的方法调用函数func,在func用两个指针接收数组的第一个和最后一个元素地址,实现数组逆置,在主程序main()中输出该数组!
提示:数组长度没有传值,可用用两个指针的差来确定。

img


#include <stdio.h>

void fun(int *x1, int *x2)
{
    int tmp;
    int n = (x2 - x1 + 1) / 2;
    for (int i = 0; i < n; i++)
    {
        tmp = *x1;
        *x1 = *x2;
        *x2 = tmp;
        x2--;
        x1++;
    }
}

int fun1(int x)
{
    x *= x;
    return x;
}

void fun2(int *x)
{
    *x *= *x;
}

int main()
{
    int x, aa[9];
    scanf("%d", &x);
    fun1(x);
    printf("\n传值调用后:%d\n\n", x);

    fun2(&x);
    printf("传址调用后:%d\n\n", x);

    for (int i = 0; i < 9; i++)
    {
        aa[i] = i + 1;
        printf("%d ", aa[i]);
    }

    fun(&aa[0], &aa[8]);
    puts("");
    for (int i = 0; i < 9; i++)
    {
        printf("%d ", aa[i]);
    }

    puts("");

    return 0;
}