45.将3×3二维数组转置,并输出

//1、定义一个3*3的二维数组
//2、输入内容,并在屏幕中输出
//3、运用for循环嵌套将数组转置,并输出

(1)我的程序:运用中间量交换

-错误版:转置算法有问题,需要好好模拟一下

#include<iostream>
using namespace std;

int main()
{
    int temp;
    int a[3][3];
    cout<<"please input 9 numbers: "<<endl;

    for(int i=0;i<3;i++)//用于输入内容
    {
        for(int j=0;j<3;j++)
        {
            cin>>a[i][j];
        }
    }

    for(int m=0;m<3;m++)//用于输出原矩阵
    {
        for(int n=0;n<3;n++)
        {
            cout<<a[m][n]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;

    for(int p=0;p<3;p++)//用于将数组转置
    {
        for(int q=0;q<3;q++)
        {
            temp=a[p][q];
            a[p][q]=a[q][p];
            a[q][p]=temp;
        }
    }

    for(int x=0;x<3;x++)//用于输出转置后矩阵
    {
        for(int y=0;y<3;y++)
        {
            cout<<a[x][y]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

-正确版:将转置算法改正

for(int p=0;p<3;p++)//用于将数组转置
    {
        for(int q=0;q<p;q++)//这里有改动
        {
            temp=a[p][q];
            a[p][q]=a[q][p];
            a[q][p]=temp;
        }
    }?

(2)运用中间数组实现:

#include<iostream>
using namespace std;

int main()
{
    int temp;
    int a[3][3];
    int b[3][3];//设置中间数组用于转置
    cout<<"please input 9 numbers: "<<endl;

    for(int i=0;i<3;i++)//用于输入内容
    {
        for(int j=0;j<3;j++)
        {
            cin>>a[i][j];
        }
    }

    for(int m=0;m<3;m++)//用于输出原矩阵
    {
        for(int n=0;n<3;n++)
        {
            cout<<a[m][n]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;

    for(int p=0;p<3;p++)//用于将数组转置
    {
        for(int q=0;q<3;q++)
        {
              b[q][p]=a[p][q];
        }
    }

    for(int x=0;x<3;x++)//用于输出转置后矩阵
    {
        for(int y=0;y<3;y++)
        {
            cout<<b[x][y]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

(3)间接转置:存入数组后,间接输出转置数组

#include<iostream>
using namespace std;

int main()
{
    int temp;
    int a[3][3];
    cout<<"please input 9 numbers: "<<endl;

    for(int i=0;i<3;i++)//用于输入内容
    {
        for(int j=0;j<3;j++)
        {
            cin>>a[i][j];
        }
    }

    for(int m=0;m<3;m++)//用于输出原矩阵
    {
        for(int n=0;n<3;n++)
        {
            cout<<a[m][n]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;

    for(int x=0;x<3;x++)//用于输出转置后矩阵
    {
        for(int y=0;y<3;y++)
        {
            cout<<a[y][x]<<" ";//间接输出转置矩阵
        }
        cout<<endl;
    }
    return 0;
}

45.将3×3二维数组转置,并输出,布布扣,bubuko.com

时间: 2024-12-06 06:56:33

45.将3×3二维数组转置,并输出的相关文章

Java实现二维数组转置的三种输出方法(IntelliJ IDEA 2017.2.6 x64)

1 import java.util.Arrays; 2 3 /** 4 * Created by Stefango at 9:54 on 2018/7/22 5 */ 6 public class Solution { 7 public static int[][] transpose(int[][] A) { 8 int R = A.length, C = A[0].length; 9 int[][] ans = new int[C][R]; 10 for (int r = 0; r < R

(实验6)二维数组转置 函数调用

#include<stdio.h>int main(){ void fun(int b[4][4]); int i,j,a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; printf("原矩阵:\n");for(i=0;i<4;i++)for(j=0;j<4;j++){printf("%5d",a[i][j]);if(j<3)printf(" ");i

二维数组转置

#include<stdio.h>int main(){ int i,j,A,B; int n=1,m=1; int a[2][2];  for(i=0;i<2;i++){  for(j=0;j<2;j++){   printf("请输入第%d个数:",n);   scanf("%d",&a[i][j]);   n++;  }  printf("\n"); } for(i=0;i<2;i++){  for(j

编写一段代码,打印一个M行N列的二维数组转置。(交换行和列)

import edu.princeton.cs.algs4.*; public class No_1_1_13 { public static void main(String[] args) { int m=4; int n=3; int [][] a = new int[m][n]; for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { a[i][j]=i+j; StdOut.print(a[i][j]); } StdOut.println(); }

PHP二维数组的表格输出

<?php $arr1 = array( "nokia" => array('lumia800','lumia900','lumia1520'), "apple" => array('iphone4s','iphone5c','iphone6s'), "msoft" => array('surface1','surface2','surface3') ); $arr2 = array( array('lumia800','

PHP二维数组矩形转置

<?php //二维数组转置 //定义一个二维数组 $arr =array(array(1,2,3),array(4,5,6)); //定义一个数组来放置转置的数据 $arr1=array(); //转置前遍历 echo "转置前:<br/>"; for($i=0;$i<count($arr);$i++){ for($j=0;$j<count($arr[$i]);$j++){ echo $arr[$i][$j]; } echo "<br/&

求出二维数组每一行的平均值

1 //二维数组每行输出平均值 2 //2017.3.7 3 #include <stdio.h> 4 #include <stdlib.h> 5 6 void Rand(int arr[][100], int n); 7 void OutputAvg(int arr[][100], int n); 8 int main() 9 { 10 int arr[100][100]; 11 int n = 10; 12 int sum = 0; 13 //随机初始化数组 14 Rand(a

二维数组的输出--(指针输出 和 指针数组输出)

当我第一次看见数组指针和指针数组这两个名字的时候,我以为是一个东西呢,当看到英文解释就知道这两个是不一样的了. 指针数组:array of pointers,用于存储指针的数组,也就是数组元素都是指针 数组指针:a pointer to an array,指向数组的指针,数组可以是任意维的 下面举例说明: int a[3][4]   --->这个无需多说,就是一个二维数组. int (*p)[4]   --->就相当于int p[][4],它是一个二维数组的指针,可以指向一个第二维度为4的二维

例看二维数组,指针,二维数组指针

例程: /****************************************************** * * 文件名:例程 * * 文件描述:例看二维数组,指针,二维数组指针 * * 创建人:Jesse * * 版本号: * * 修改记录: * ******************************************************/ #include <stdio.h> #define ROW 3 #define LINE 3 void main(voi