resting3 2024-09-29 17:58 采纳率: 100%
浏览 1
已采纳

VScode写c语言 报错:应输入";"C/C++(65)[行58,列5]

VScode写c语言 报错:应输入";"C/C++(65)[行58,列5]

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

// 定义一个结构体,包含数组和大小
typedef struct {
    int* array;
    int size;
} ArrayWithSize;

// 合并两个已排序的子数组
void merge(int arr[], int left, int mid, int right) {
    int n1 = mid - left + 1; // 左子数组的大小
    int n2 = right - mid;    // 右子数组的大小

    // 创建临时数组
    int* L = (int*)malloc(n1 * sizeof(int)); // 左子数组
    int* R = (int*)malloc(n2 * sizeof(int)); // 右子数组

    // 拷贝数据到临时数组 L 和 R
    for (int i = 0; i < n1; i++)
        L[i] = arr[left + i];
    for (int j = 0; j < n2; j++)
        R[j] = arr[mid + 1 + j];

    // 合并临时数组回原数组
    int i = 0, j = 0, k = left; // 初始化索引
    while (i < n1 && j < n2) {
        if (L[i] <= R[j]) {
            arr[k] = L[i];
            i++;
        } else {
            arr[k] = R[j];
            j++;
        }
        k++;
    }

    // 拷贝 L 中的剩余元素
    while (i < n1) {
        arr[k] = L[i];
        i++;
        k++;
    }

    // 拷贝 R 中的剩余元素
    while (j < n2) {
        arr[k] = R[j];
        j++;
        k++;
    }
}

// 递归归并排序主函数
void mergeSort(ArrayWithSize* arrWithSize) 
{
    // 定义内部的递归函数
    void merge_sort(int* arr, int left, int right) 
    {
        if (left < right) 
        {
            int mid = left + (right - left) / 2;

            // 递归排序左半部分和右半部分
            merge_sort(arr, left, mid);
            merge_sort(arr, mid + 1, right);

            // 合并已排序的子数组
            merge(arr, left, mid, right);
        }
    }

    // 调用递归函数,从索引0到size-1
    merge_sort(arrWithSize->array, 0, arrWithSize->size - 1);
}

// 主函数

int main() {
    int arr[] = {12, 11, 13, 5, 6, 7,18,19,55,100.11,15,18,19,11,111,1111}; // 输入数组
    int arr_size = sizeof(arr) / sizeof(arr[0]); // 计算数组大小

    ArrayWithSize arrWithSize;
    arrWithSize.array = arr;
    arrWithSize.size = arr_size;

    printf("给定的数组是:\n");
    for (int i = 0; i < arr_size; i++)
        printf("%d ", arr[i]);
    printf("\n");

    // 调用归并排序,只需要传递结构体
    mergeSort(&arrWithSize);

    printf("排序后的数组是:\n");
    for (int i = 0; i < arr_size; i++)
        printf("%d ", arr[i]);
    printf("\n");

    return 0;
}

以上是代码
第58行如下图片

img

  • 写回答

3条回答 默认 最新

  • 入瘾 2024-09-29 18:21
    关注

    函数是不是不能定义在函数内?

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已采纳回答 9月29日
  • 创建了问题 9月29日

悬赏问题

  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?
  • ¥15 nasm x86 变量归零
  • ¥65 Tree 树形控件实现单选功能,可以使用element也可以手写一个,实现全选为全选状态
  • ¥60 寻抓云闪付tn组成网页付款链接
  • ¥16 寻字节跳动内部人员帮推简历