普通植物学:编程问题!

来源:百度文库 编辑:高校问答 时间:2024/05/11 02:48:44
main()
{int i,j,a[3][3],r=0;
int AddArray(int,int a[][3] );
void PrintfArray(int,int,int a[][3]);
printf("please iuput the array you want to add\n");
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
{printf("\nplease iuput a[%d][%d] ",i,j);
scanf("%d",&a[i][j]);}
printf("you input array is\n");
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
{
printf("%d ",a[i][j]);
if(j%3==0)printf("\n");
}
r=AddArray(3,3,a[][3]);
pintf("r=%d",r);

PrintfArray(3,3,a[][3]);
}
int AddArray(int i,int a[][3])
{int j;
j=0;
for(i=1;i<=3;i++)
j=j+a[i][i];
return(j);
}
void PrintfArray(int i,int j,int a[][3])
{for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
{printf("%d ",a[i][j]);
if(j%3==3)printf("\n");}
}
提示main函数中调用两个子函数表达式错误
怎么回事啊!

我看了一下你的函数,int a[][3]这个干什么?如果是元素应该写全,如果是地址要用指针或者&符号。还有数组a[3][3]只能从0到2的,不是1到3。给你修改下:
#include<stdio.h>
int AddArray(int i,int a[3][3])
{int j;
j=0;
for(i=0;i<3;i++)
j=j+a[i][i];
return(j);
}
void PrintfArray(int i,int j,int a[3][3])
{for(i=0;i<3;i++)
for(j=0;j<3;j++)
{printf("%d ",a[i][j]);
if(j%3==2)printf("\n");}
}
main()
{int i,j,a[3][3],r=0;

printf("please iuput the array you want to add\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{printf("\nplease iuput a[%d][%d] ",i,j);
scanf("%d",&a[i][j]);}
printf("you input array is\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%d ",a[i][j]);
if(j%3==2)printf("\n");
}
r=AddArray(3,a);
printf("r=%d\n",r);

PrintfArray(3,3,a);
}

C语言中,子函数应该放在主函数之前,也就是main之前,或者在main之前先定义,子函数就可以放在main后面了.你自己试一下.声明不好放在main内部