柯南的滑板


私信TA

用户名:uq_45459957643

访问量:29777

签 名:

hello world

等  级
排  名 525
经  验 4486
参赛次数 0
文章发表 7
年  龄 18
在职情况 学生
学  校 河北工业大学
专  业

  自我简介:

;

解题思路:声明两个数组a[3][3],b[3][3],后者存放转置后的元素。先用for循环嵌套输入a数组元素,接着(关键点)是转置:我们把二维数组看成矩阵,或者说坐标系,这样就很容易想到,行列互换就是横纵坐标对应的元素互换。用代码描述就是b[j][i]=a[i][j]。最后输出b数组就行了。

注意事项:输出b数组时不能把for循环嵌套这部分放到main函数中,不然会输出9个奇怪的数。因为,b数组作用域在自定义函数内。

还有,自定义函数中不要对数组a再定义,否则会重定义;也不要把数组b放到main函数中,不然自定义函数缺少数组b的声明。

参考代码:

#include<stdio.h>

void zhuanzhi(int a[3][3])
{
    int b[3][3];
    int i,j;
    //转置
    for(i=0; i<3; i++)
    {    
	for(j=0; j<3; ++j)
        {
            b[j][i]=a[i][j];
        }
    }
    //输出
    for(i=0; i<3; i++)
    {    
	for(j=0; j<3; j++)
        {
            printf("%d ", b[i][j]);
        }
        printf("\n");
    }
}

int main()
{
    int i,j;
    int a[3][3];
    //输入
    for(i=0; i<3; i++)
    {    
	for(j=0; j<3; ++j)
        {
            scanf("%d", &a[i][j]);
        }
    }

    zhuanzhi(a);
    return 0;
}


 

0.0分

44 人评分

  评论区

#include<stdio.h>
int main()
{
	int i,j;
	int x[3][3];
	for(i=0;i<=2;i++)
	{
		for(j=0;j<=2;j++)
		{
			scanf("%d",&x[i][j]);
		}
	}
	for(i=0;i<=2;i++)
	{
		for(j=0;j<=2;j++)
		{
			printf("%d ",x[j][i]);
		}
		printf("\n");
	}
	return 0;
}
2024-01-22 19:21:26
#include <stdio.h>
int main()
{
    int a[3][3];
    int i,j;
    for(i=0;i<3;i++)
    {
    	for(j=0;j<3;j++)
        {
        	scanf("%d",&a[i][j]);
        }
    }
    for(i=0;i<3;i++)
    {
    	for(j=0;j<3;j++)
        {
        	printf("%d",a[j][i]);
        }
        printf("\n");
    }  
    return 0;
}
2023-11-24 08:42:44
#include<stdio.h>
int main()
{
	int array[3][3];
	int i, j;
	for(i=0; i<3; i++)
		for(j=0; j<3; j++)
			scanf("%d", &array[i][j]);
	int temp;
	for(i=0; i<3; i++)
		for(j=i+1; j<3; j++)
		{
			temp = array[i][j];
			array[i][j] = array[j][i];
			array[j][i] = temp;
		}
	for(i=0; i<3; i++)
	{
		for(j=0; j<3; j++)
			printf("%d ", array[i][j]);	
		printf("\n");
	}
	
	return 0;
}
2023-03-13 16:09:55
#include<stdio.h>
int main()
{
	int arr[3][3],i,j;
	for(i=0; i<=2; i++){
		for(j=0; j<=2; j++){
			scanf("%d",&arr[i][j]);
		}
	}
	for(i=0; i<=2; i++){
		for(j=0; j<=2; j++){
			printf("%d ",arr[j][i]);
			
		}
		printf("\n");
	}
	return 0;
}
2022-12-14 16:56:03
#include<stdio.h>
int main()
{
	int i, j;
	char a[3][3];
	char b[3][3];
	for (i = 0;i < 3;i++) {
		for (j = 0;j < 3;j++) {
			scanf("%d", &a[i][j]);
		}
	}
	for (i = 0;i < 3;i++)
	{
		for (j = 0;j < 3;j++)
		{
			b[i][j] = a[j][i];
			printf("%d ", b[i][j]);
		}
		printf("\n");
	}
	return 0;
}  
大佬们 这个 为什么报错   Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.  
上网搜了一下说是越界了,但是我看不出来哪里越界了
2022-08-19 20:02:58
void TransposeArray(int buff[][3])
{
    for(int i = 0;i < 3;i++)
    {
        for(int j = 0; j < 3;j++)
        {
            if(j > i)
            {
                int temp = buff[i][j];
                buff[i][j] = buff[j][i];
                buff[j][i] = temp;
            }
        }
    }
    for(int i = 0;i < 3;i++)
    {
        for(int j = 0; j < 3;j++)
        {
            printf("%d " , buff[i][j]);
        }
        printf("\n");
    }
}
2022-06-09 22:59:26
#include <stdio.h>
int main()
{
	int syx[3][3];
	int i,j;
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			scanf("%d",&syx[i][j]);
		}
	}
		for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			printf("%d ",syx[j][i]);
		}
		printf("\n");
	}
	return 0;
}
2022-05-02 23:38:54
#include<stdio.h>
int main(){
	int a[3][3],b[3][3],i,j;
	for(i=0;i<3;i++){
		for(j=0;j<3;j++){
			scanf("%d",&a[i][j]);
		}
	}
	for(i=0;i<3;i++){
		for(j=0;j<3;j++){
			b[j][i]=a[i][j];
		}
	}
	for(j=0;j<3;j++){
		for(i=0;i<3;i++){
			printf("%d\t",b[j][i]);
		}
			printf("\n");	
	}
	return 0;	
}
2022-03-25 08:10:26