分函数读取指针时发生访问冲突

通过调用函数与指针完成得票数排序与排名的查找程序;input()输入各小组的票数;sort()进行排序;find()进行查找;print()打印数组。

执行至分函数时发生位置访问冲突,不知道如何解决,望有缘人指正并说明原因,谢谢!

#include"stdio.h"

int menu(void);
int input(int *a);
void sort(int *a,int n);
void find(int *a,int n);
void print(int *a,int n);

int x=0,*a,b[11]={0},*c,n=0;

int main()
{
    a=&x;c=b;
    printf("2021112596高智尧\n");
    menu();
}

int menu(void)
{
    int i;
    printf("************************\n");
    printf("     1--输入\n");
    printf("     2--从小到大排序\n");
    printf("     3--查找\n");
    printf("     4--输出\n");
    printf("     5--退出\n");
    printf("************************\n");
    printf("请输入你要进行的操作:");
    scanf("%d",&i);
    switch(i)
    {
    case(1):input(c);break;
    case(2):sort(c,n);break;
    case(3):find(c,n);break;
    case(4):print(c,n);break;
    case(5):break;
    }
    return 0;
}

int input(int *a)
{
    int i;
    printf("请输入每个小组的得票数,若输入-1则结束:\n");
    for(i=1;i<=10;i++)
    {
        scanf("%d",*(c+i));
        if(*(c+i)==-1)break;
    }
    menu();
    return 0;
}//数组从1开始

void sort(int *a,int n)
{
    int i,j;
    for(i=1;i<10;i++)
        for(j=i+1;j<11;j++)
        if(*(c+j)>*(c+i)){n=*(c+i);*(c+i)=*(c+j);*(c+j)=n;}
        menu();
}

void find(int *a,int n)
{
    printf("请输入要查找的排名:");
    scanf("%d",&n);
    if(*(c+n)!=0||*(c+n)!=-1)
    printf("该排名票数为:%d\n",*(c+n));
    else printf("没有该排名!\n");
    menu();
}

void print(int *a,int n)
{
    printf("打印数组:\n");
    for(n=0;n<11;n++)
    printf(" %d",*(c+n));
    menu();
}

错误发出来看看