C语言期末习题之数组逆序存放

1.题目

写一个函数将数组中的数逆序存放,例如int a[8]={1,2,3,4,5,6,7,8},逆序存放后为:a[8]={8,7,6,5,4,3,2,1}。

2.思路

这道题思路有很多

思路1:创建新数组存放

可以创建一个新的数组来保存逆序后的结果,具体的思路如下:

1. 在函数内部定义一个大小为 n 的新数组 b,用于保存逆序后的结果。

2. 使用两层循环遍历数组 a,将 a 中每个元素倒序放入数组 b 的对应位置中。

3. 遍历完整个数组后,将数组 b 中的结果返回给主函数。
 

思路2:在原来的数组上交换

也可以在原数组中进行操作,避免创建新的数组。具体的思路如下:

1. 使用一个循环遍历数组 a 的前一半元素,将其和数组 a 对应位置的后一半元素交换位置。

2. 遍历完整个数组后,原数组 a 中的元素已经逆序存放。

3.代码实现

思路1代码:


#include <stdio.h>

int* reverse(int a[], int n) {
    static int b[100]; // 声明一个新的数组用于存放逆序后的结果
    int i, j = 0;

    for (i = n - 1; i >= 0; i--) 
    { // 遍历原数组,将元素倒序存入新数组
        b[j++] = a[i];
    }

    return b; // 返回逆序后的结果数组
}

int main() 
{
    int a[8] = {1, 2, 3, 4, 5, 6, 7, 8};
    int* b = reverse(a, 8); // 调用 reverse 函数获取逆序后的结果数组

    printf("逆序后的数组:\n");
    for (int i = 0; i < 8; i++)
     {
        printf("%d ", b[i]); // 输出逆序后的结果数组
     }
    printf("\n");

    return 0;
}


思路2代码:

#include <stdio.h>

void reverse(int a[], int n) 
{
    int temp;

    for (int i = 0; i < n / 2; i++) 
    { // 遍历数组前一半元素,将其和后一半元素交换位置
        temp = a[i];
        a[i] = a[n - i - 1];
        a[n - i - 1] = temp;
    }
}

int main()
{
    int a[8] = {1, 2, 3, 4, 5, 6, 7, 8};

    reverse(a, 8); // 调用 reverse 函数将数组元素逆序存放

    printf("逆序后的数组:\n");
    for (int i = 0; i < 8; i++) 
    {
        printf("%d ", a[i]); // 输出逆序后的数组元素
    }
    printf("\n");

    return 0;
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值