当前位置:编程学习 > C/C++ >>

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)

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,