运行错误 c语言算法题

#include<stdio.h>
void input(int arr[10]);
void sort(int arr[10]);
void output(int arr[10]);


int main()
{
    //输入函数
    int a[10];
    printf("请输入数组");
    input(a);
    
//排序
    sort(a);
    
//    输出函数
    output(a);
    
    return 0;
}


void input (int arr[10])
{
    int i;
    for(i = 1; i <= 10; i++){
        scanf("%d" ,&arr[i]);
    }
    return 0;    
}


void output (int arr[10])
{
    int i;
    for(i = 1; i <= 10; i++){
        printf("%d " ,arr[i]);
    }
    return 0;    
}


void sort (int arr[10])
{
    int i, j, temp;
    for (j = 0; j < 10 - 1; j++)
    {
        for (i = 0; i < 10  - j; i++)
        if (arr[i] > arr[i + 1])
        {
            temp = arr[i];
            arr[i] = arr[i + 1];
            arr[i + 1] = temp;
        }
    }

    return 0;
}

 

上方代码在提交题目的时候出现了以下的问题,请问大大大佬们能给个解释嘛

运行错误:运行时错误,非法的内存访问,数组越界,指针漂移,调用禁用的系统函数。
A Not allowed system call: runid:3435981 CALLID:14 :使用了系统禁止的操作系统调用,看看是否越权访问了文件或进程等资源。

>    for(i = 1; i <= 10; i++){
>         scanf("%d" ,&arr[i]);

 

C 语言的数组从 0 开始, 你的循环从 1 开始了, arr[10]  就会导致数组越界。 

看看: (10条消息) C语言入门:数组_Dorby .的博客-CSDN博客

    for(i = 1; i <= 10; i++){
        scanf("%d" ,&arr[i]);
    }

arr[10]数组存放数据个数为10(arr[0]--arr[9]),在你的for循环中的数组边界为arr[10],进行如何修改:

    for(i = 0; i < 10; i++){
        scanf("%d" ,&arr[i]);
    }

其他循环中同理,认真检查

楼上的说的对,我再补充一下,void函数不需要return 返回