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

简介: 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;
}


目录
相关文章
TU^
|
7天前
|
存储 C语言
C语言习题~day35
C语言习题~day35
TU^
10 1
|
13小时前
|
C语言
C语言----数组----二分查找
C语言----数组----二分查找
TU^
|
7天前
|
算法 程序员 C语言
C语言习题~day36
C语言习题~day36
TU^
14 1
TU^
|
7天前
|
存储 编译器 程序员
C语言之数组
C语言之数组
TU^
13 1
TU^
|
7天前
|
存储 C语言
C语言习题~day34
C语言习题~day34
TU^
8 1
TU^
|
7天前
|
算法 C语言
C语言习题~day33
C语言习题~day33
TU^
8 1
TU^
|
7天前
|
C语言
C语言习题~day32
C语言习题~day32
TU^
8 1
TU^
|
7天前
|
C语言
C语言习题~day39
C语言习题~day39
TU^
9 0
C语言习题~day39
|
13小时前
|
C语言
C语言----将数组A中的内容和数组B中的内容进行交换。(数组一样大)
C语言----将数组A中的内容和数组B中的内容进行交换。(数组一样大)
TU^
|
7天前
|
存储 C语言
C语言习题~day38
C语言习题~day38
TU^
7 0