哪位大神帮我看看哪有错误?

#include<stdio.h>
void main()
{
int i,j,n=40;

float cj[42][9]={0};
float max,min;
void in(float a[][9],int n);
void z_p(float a[][9],int n);
void printf(float a[][9],int n);
void mx_mi(float a[][9],int n);
void bjg(float a[][9],int n);
void max_min(float a[][9],int n);
void sort(float a[][9],int n);

in(cj,40);
z_p(cj,40);
mx_mi(cj,40);
bjg(cj,40);
max_min(cj,40);
sort(cj,40);
printf(cj,7);
}

void in(float a[][9],int n);
{
int i;
for(i=0;i<n;i++)
scanf("%f,x5",&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4],&a[i][5];
}

void in(float a[][9],int n);
{
int i;
for(i=0;i<n;i++)
{
a[i][5]=a[i][1]+a[i][2]+a[i][3]+a[i][4];
a[i][6]=a[i][5]/4;
}
}

void z_p(float a[][9],int n);
{
int i,j;
for(i=0;i<n;i++)
{
a[i][5]=a[i][1]+a[i][2]+a[i][3]+a[i][4];
a[i][6]=a[i][5]/4;
}
}

void mx_mi(float a[][9],int n);
{
int i,j;
for(i=0;i<n;i++)
{
a[40][i]=a[0][1];a[40][i]=a[0][i];}
for(i=0;i<n;i++)
for(j=1;j<=4;j++)
{
if(a[40][i]<a[i][j])a[40][j]=a[i][j];
if(a[41][i]>a[i][j])a[41][j]=a[i][j];
}
}

void bjg(float a[][9],int n);
{
int i,j;
for(i=0;i<n;i++)
for(j=1;j<=4;j++)
{
if(a[i][i]<60);
printf("i=%d,j=%d,cj=%4.1f\n",i,j,a[i][j];
}
}

void max_min(float a[][9],int n);
{
int i,j;
float max,min;
max=a[0][1];
min=a[0][1];
for(i=0;i<n;i++)
for(j=1;j<=4;j++)
{
if(max<a[i][j])max=a[i][j];
if(min>a[i][j])min=a[i][j];
}
printf("max=%f,min=%f\n",max,min);
}

void sort(float a[][9],int n);
{
int i,j;
float t1,t2;
for(i=0;i<n;i++)
{
a[i][7]=a[i][0];a[i][8]=a[i][6];}
for(i=0;i<n-2;i++)
for(j=0;j<n-2-i;j++)
if(a[i][8]>a[i+1][8])
{
t1=a[j][8];a[j][8]=a[j+1][8];a[j+1][8]=t1;
t2=a[j][7];a[j][7]=a[j+1][7];a[j+1][7]=t2;}

}
void printf(float a[0][9],int n)
{int i;
printf("学号 英语 数学 计算机 金融 总分 平均分 学号 排序\n");
for(i=0;i<n+2;i++)
printf("%4.1f,%4.1f,%4.1f,%4.1f,%4.1f,%4.1f,%4.1f,%4.1f,%4.1f\n",a[i][0],a[i][1],a[i][2],a[i][3],a[i][4],a[i][5],a[i][6],a[i][7],a[i][8]);

}

以下是代码中的一些错误和问题:
1. 函数声明和函数定义之间的分号:在函数声明和函数定义之后,应该去掉分号,例如:
- `void in(float a[][9],int n);` 应改为 `void in(float a[][9],int n)`
- `void z_p(float a[][9],int n);` 应改为 `void z_p(float a[][9],int n)`
- `void mx_mi(float a[][9],int n);` 应改为 `void mx_mi(float a[][9],int n)`
- `void bjg(float a[][9],int n);` 应改为 `void bjg(float a[][9],int n)`
- `void max_min(float a[][9],int n);` 应改为 `void max_min(float a[][9],int n)`
- `void sort(float a[][9],int n);` 应改为 `void sort(float a[][9],int n)`
- `void printf(float a[0][9],int n)` 应改为 `void printf(float a[0][9],int n)`
2. 函数定义中的分号:在函数定义的开头,去掉参数列表之后的分号,例如:
- `void in(float a[][9],int n);` 应改为 `void in(float a[][9],int n) {`
- `void in(float a[][9],int n);` 应改为 `void in(float a[][9],int n) {`
- `void z_p(float a[][9],int n);` 应改为 `void z_p(float a[][9],int n) {`
- `void mx_mi(float a[][9],int n);` 应改为 `void mx_mi(float a[][9],int n) {`
- `void bjg(float a[][9],int n);` 应改为 `void bjg(float a[][9],int n) {`
- `void max_min(float a[][9],int n);` 应改为 `void max_min(float a[][9],int n) {`
- `void sort(float a[][9],int n);` 应改为 `void sort(float a[][9],int n) {`
- `void printf(float a[0][9],int n)` 应改为 `void printf(float a[0][9],int n) {`
3. 函数调用时的参数传递:在调用函数时,参数列表中的分隔符应为逗号而不是分号,例如:
- `scanf("%f,x5",&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4],&a[i][5];` 应改为 `scanf("%f,x5",&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4],&a[i][5]);`
- `printf("i=%d,j=%d,cj=%4.1f\n",i,j,a[i][j];` 应改为 `printf("i=%d,j=%d,cj=%4.1f\n",i,j,a[i][j]);`
4. 函数调用参数的错误:在函数调用 `printf(cj,7);` 中,参数 `7` 应该是数组 `cj` 的维
度而不是固定的数字。
5. `void main()` 应改为 `int main(void)`,并在函数末尾添加 `return 0;` 表示程序正常结束。
这些是我在代码中发现的一些问题。请注意修复这些错误,并确保代码的逻辑正确性。
温馨提示:答案为网友推荐,仅供参考