为什么宏定义错误请帮我指出来,感激不尽

#include
#include
#define N 10

void Input(int[], int);
void Output(int[], int);
void Sc(int[], int);
int main()
{
int a[N];
void Input(a , N);
void Sc(a, N);
void Output(a, N);
return 0;
}
void Input(int a[], int n)
{
int i
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
}
void Sc(int a[], int n)
{
int m;
for(m = 0; m < n; m++)
{
a[m] = 0;
}
}
void Output(int a[], int n)
{
int b;
for(b = 0; b < n; b++)
{
printf("%d ", a[b]);
}
}

 #include <stdio.h>
#include <stdlib.h>
#define N 10

void Input(int[], int);
void Output(int[], int);
void Sc(int[], int);
int main()
{
    int a[N];
    Input(a , N);//修改
    Sc(a, N);//修改
    Output(a, N);//修改
    return 0;
}
void Input(int a[], int n)
{
    int i;//少分号
    for(i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
}
void Sc(int a[], int n)
{
    int m;
    for(m = 0; m < n; m++)
    {
        a[m] = 0;
    }
}
void Output(int a[], int n)
{
    int b;
    for(b = 0; b < n; b++)
    {
        printf("%d  ", a[b]);
    }
}

我觉得宏就是简单的文本替换,所以在函数传参时,直接传数组就好,那个宏N直接在函数中使用就好,不用传过去图片说明