C语言 数组 错哪里了啊 谢谢
#include <stdio.h>
int main ()
{
int a[3][3],b[3][3],i,j;
int fun(int );
for (i=0;i<=2;i++)
for (j=0;j<=2;j++)
scanf("%d",&a[i][j]);
for (i=0;i<=2;i++)
{
for (j=0;j<=2;j++)
{printf ("%d\t"),a[i][j];}
printf ("\n");
}
b[i][j]=fun(int a[i][j]);
for (i=0;i<=2;i++)
for (j=0;j<=2;j++)
printf("the reversed array is %5d",b[i][j]);
return 0;
}
int fun (int a[3][3])
{ for (i=0;i<=2;i++)
for (j=0;j<=2;j++)
b[i][j]=a[j][i];
return(a[3][3]);
)
C:\Users\Xun\rubbish c++\Cpp1l.cpp(15) : error C2144: syntax error : missing ')' before type 'int'
C:\Users\Xun\rubbish c++\Cpp1l.cpp(15) : error C2660: 'fun' : function does not take 0 parameters
C:\Users\Xun\rubbish c++\Cpp1l.cpp(15) : error C2059: syntax error : ')'
C:\Users\Xun\rubbish c++\Cpp1l.cpp(22) : error C2065: 'i' : undeclared identifier
C:\Users\Xun\rubbish c++\Cpp1l.cpp(23) : error C2065: 'j' : undeclared identifier
C:\Users\Xun\rubbish c++\Cpp1l.cpp(24) : error C2065: 'b' : undeclared identifier
C:\Users\Xun\rubbish c++\Cpp1l.cpp(24) : error C2109: subscript requires array or pointer type
C:\Users\Xun\rubbish c++\Cpp1l.cpp(24) : error C2109: subscript requires array or pointer type
C:\Users\Xun\rubbish c++\Cpp1l.cpp(24) : error C2106: '=' : left operand must be l-value
C:\Users\Xun\rubbish c++\Cpp1l.cpp(26) : error C2059: syntax error : ')'
C:\Users\Xun\rubbish c++\Cpp1l.cpp(27) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.
Cpp1l.obj - 1 error(s), 0 warning(s)
追问:请教下,为什么 设为无返回值就行,传人参数b就能实现逆转请问 为什么运行结果 竖着写的 转置之后应该也写成矩阵啊
答案:很多错误,已经调试好
#include <stdio.h>
int main ()
{
int a[3][3],b[3][3],i,j;
void fun(int a[3][3],int b[3][3]);//函数声明
for (i=0;i<=2;i++)
for (j=0;j<=2;j++)
scanf("%d",&a[i][j]);
for (i=0;i<=2;i++)
{
for (j=0;j<=2;j++)
printf("%d\t",a[i][j]);//这里都写错了
printf ("\n");
}
fun(a,b);//调用函数,直接传人参数,而且是数组名,数组名是常量,不可以是左值
for (i=0;i<=2;i++)
for (j=0;j<=2;j++)
printf("the reversed array is %5d\n",b[i][j]);
return 0;
}
void fun (int a[3][3],int b[3][3])//设为无返回值就行,传人参数b就能实现逆转
{
int i,j;//定义局部变量
for (i=0;i<=2;i++)
for (j=0;j<=2;j++)
b[i][j]=a[j][i];
}
其他:int fun(int );
这个东西能放 main函数之前吗?
从哪里看的 都喜欢放里面 )//改为“}”
int fun (int a[3][3])
{ for (i=0;i<=2;i++)
for (j=0;j<=2;j++)
b[i][j]=a[j][i];
return(a[3][3]);
)//改为“}” #include <stdio.h>
int main ()
{
int a[3][3],b[3][3],i,j;
int fun(int );
for (i=0;i<=2;i++)
for (j=0;j<=2;j++)
scanf("%d",&a[i][j]);
for (i=0;i<=2;i++)
{
for (j=0;j<=2;j++)
{printf ("%d\t"),a[i][j];}
printf ("\n");
}
b[i][j]=fun(int a[i][j]); 这里不要int
for (i=0;i<=2;i++)
for (j=0;j<=2;j++)
printf("the reversed array is %5d",b[i][j]);
return 0;
}
int fun (int a[3][3])
{ for (i=0;i<=2;i++) i没有声明
for (j=0;j<=2;j++) j没有声明
b[i][j]=a[j][i]; b数组没有声明
return(a[3][3]);
) 这里是} 看下面! 15行:b[i][j]=fun(int a[i][j]); 中的int 去掉,调用函数时形参没有类型说明。
int fun(int a[3][3])函数体中i,j,b[i][j]都没有定义。
最后的')'应该为'}'。
程序格式应该注意,可读性不强。可能存在其他问题,我是根据错误提示修改的,若无法通过编译,请检查代码或算法。 #include <stdio.h>
int main ()
{
int a[3][3],b[3][3],i,j;
int fun(int a[3][3],int b[3][3]);
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
scanf("%d",&a[i][j]);
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
fun(a,b);//函数调用不能要a[3][3]这样的形式。
printf("the reversed array is:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
printf("%d\t",b[i][j]);//矩阵形成输出就要这样!
}
printf("\n");
}
return 0;
}
int fun(int a[3][3],int b[3][3])
{
int i,j;
for (i=0;i<=2;i++)
for (j=0;j<=2;j++)
b[i][j]=a[j][i];
}
上一个:关于C语言结一种构体类型的成员引用另外一种结构体成员的值的问题.
下一个:C语言:已知:f(1)=1,f(2)=1/(1+f(1)),f(3)=1/(1+f(2)),…,f(n)=1/(1+f(n-1)),求f(50)