C#二维数组文件流读写并转置

C#二维数组的文件流读写并进行转置

插入链接与图片

链接: link.

图片: 在这里插入图片描述 进行转置后的效果


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace 二维数组读写进文件流
{
    class Program
    {
        public static int ROW = 4;
        public static int COL = 4;
        static int[,] arrayA = new int[ROW, COL];

        static void Main(string[] args)
        {
            Write();                          //把二维数组写入文件
            string[,] strArray = Read();        //读出文件流的二维数组
            ArrayNN(ref strArray, ROW, COL);
            Console.ReadKey();   
        }
        static void ArrayNN(ref string[,] a, int row, int col)
        {
            string[,] tmp = new string[row, col];
            for (int i = 0; i < row; i++)
            {
                for (int j = 0; j < col; j++)
                {
                    tmp[i, row - j - 1] = a[j, i];
                }
            }
            Console.Write("\n文件流转置之后:");
            for (int i = 0; i < row; i++)
            {
                Console.WriteLine();
                for (int j = 0; j < col; j++)
                {
                    Console.Write("{0}" + "\t", tmp[i, j]);
                }
            }
        }
        public static string[,] Read()
        {
            string[,] str = new string[ROW, COL];
            string[] a;
            StreamReader sr = new StreamReader(@"D:\write.txt", Encoding.Default);
            Console.Write("文件流读取出来的数组:\n");
            for (int i = 0; i < ROW; i++)
            {
                String line = sr.ReadLine();
                a = line.Split('\t');
                for (int j = 0; j < COL; j++)
                {
                    str[i, j] = a[j];  
                    Console.Write(str[i, j]+"\t");
                }
                Console.WriteLine();
            }
            return str;
        }
        public static void Write()
        {
            //int[,] arrayA = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 }, { 13, 14, 15, 16 } };
            int[,] arrayA = new int[ROW, COL];
            FileStream fs = new FileStream(@"D:\write.txt", FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);
            Random rd = new Random();
            for (int i = 0; i < ROW; i++)
            {
                for (int j = 0; j < COL; j++)
                {
                    arrayA[i, j] = rd.Next(1, 100);
                    sw.Write(arrayA[i,j]+"\t");
                }
                sw.WriteLine();
            }
            Console.WriteLine("写入完成");
            //清空缓冲区
            sw.Flush();
            //关闭流
            sw.Close();
            fs.Close();
        }
    }
}

### 回答1: 您好!要用C语言实现二维数组的输入、输出和转置,可以使用以下代码: ```c #include <stdio.h> int main() { int arr[100][100], transpose[100][100]; int rows, cols, i, j; // 获取二维数组的行数和列数 printf("请输入二维数组的行数和列数(用空格分隔):\n"); scanf("%d %d", &rows, &cols); // 输入二维数组的元素 printf("请输入二维数组的元素:\n"); for(i=0; i<rows; i++) { for(j=0; j<cols; j++) { scanf("%d", &arr[i][j]); } } // 输出二维数组 printf("二维数组为:\n"); for(i=0; i<rows; i++) { for(j=0; j<cols; j++) { printf("%d ", arr[i][j]); } printf("\n"); } // 转置二维数组 for(i=0; i<rows; i++) { for(j=0; j<cols; j++) { transpose[j][i] = arr[i][j]; } } // 输出转置后的二维数组 printf("转置后的二维数组为:\n"); for(i=0; i<cols; i++) { for(j=0; j<rows; j++) { printf("%d ", transpose[i][j]); } printf("\n"); } return 0; } ``` 这段代码中,我们使用了两个二维数组 `arr` 和 `transpose` 分别来存储原始的二维数组转置后的二维数组。在程序运行时,我们首先通过 `scanf` 函数获取二维数组的行数和列数,然后使用嵌套的循环输入二维数组的元素,并使用嵌套的循环输出二维数组的元素。接着,我们再使用两个嵌套的循环将二维数组转置到 `transpose` 数组中,并再次使用嵌套的循环输出转置后的二维数组。 ### 回答2: 二维数组是指数组的元素也是一个数组,即数组的每个元素都是一个一维数组。要实现二维数组的输入输出与转置,可以按照以下步骤进行: 输入二维数组:首先要确定数组的行数和列数,并定义一个二维数组变量。然后使用循环嵌套结构,逐行或逐列输入数组的元素。具体实现时,可以使用scanf函数逐个输入数组的元素。 输出二维数组:同样使用循环嵌套结构,逐行或逐列输出数组的元素。具体实现时,可以使用printf函数逐个输出数组的元素。 转置二维数组转置是将数组的行列互换,即原来的行变成列,原来的列变成行。可以定义一个新的二维数组来存储转置后的结果。利用两个循环,遍历原数组的每个元素,并将转置后的元素存储到新数组的对应位置上。 以下是用C语言实现二维数组输入输出与转置的示例代码: ```c #include <stdio.h> #define ROWS 3 // 数组的行数 #define COLS 3 // 数组的列数 void inputArray(int arr[ROWS][COLS]) { printf("请输入二维数组的元素:\n"); for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { scanf("%d", &arr[i][j]); } } } void outputArray(int arr[ROWS][COLS]) { printf("二维数组的元素为:\n"); for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { printf("%d ", arr[i][j]); } printf("\n"); } } void transposeArray(int arr[ROWS][COLS], int transposed[COLS][ROWS]) { for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { transposed[j][i] = arr[i][j]; } } } int main() { int arr[ROWS][COLS]; int transposed[COLS][ROWS]; inputArray(arr); outputArray(arr); transposeArray(arr, transposed); printf("转置后的二维数组为:\n"); outputArray(transposed); return 0; } ``` 以上代码中,首先定义了数组的行数和列数,然后分别实现了输入二维数组、输出二维数组转置二维数组的函数。在主函数中,首先定义了一个二维数组变量和一个用来存储转置结果的新二维数组变量。然后调用函数进行输入输出和转置操作。最后输出转置后的结果。 注意:此示例代码中假设二维数组的元素类型为整数,可以根据需要修改相应的数组类型。 ### 回答3: 要使用C语言实现二维数组的输入、输出和转置,可以按照以下步骤进行操作: 1. 首先,定义一个二维数组,指定数组的行数和列数。 ```c #include <stdio.h> #define ROWS 3 #define COLS 3 int main() { int matrix[ROWS][COLS]; int transpose[COLS][ROWS]; int i, j; ``` 2. 然后,通过嵌套的循环,使用scanf函数从用户输入中读取二维数组的元素。 ```c printf("请输入二维数组的元素:\n"); for (i = 0; i < ROWS; i++) { for (j = 0; j < COLS; j++) { scanf("%d", &matrix[i][j]); } } ``` 3. 接下来,使用嵌套的循环遍历二维数组,并使用printf函数将其元素输出到屏幕上。 ```c printf("二维数组的输出结果为:\n"); for (i = 0; i < ROWS; i++) { for (j = 0; j < COLS; j++) { printf("%d ", matrix[i][j]); } printf("\n"); } ``` 4. 最后,通过嵌套的循环,将原始二维数组转置存储到新的二维数组中。 ```c for (i = 0; i < ROWS; i++) { for (j = 0; j < COLS; j++) { transpose[j][i] = matrix[i][j]; } } ``` 5. 使用嵌套的循环遍历转置后的二维数组,并使用printf函数将其元素输出到屏幕上。 ```c printf("转置后的二维数组为:\n"); for (i = 0; i < COLS; i++) { for (j = 0; j < ROWS; j++) { printf("%d ", transpose[i][j]); } printf("\n"); } return 0; } ``` 以上就是使用C语言实现二维数组的输入、输出和转置的基本步骤。通过适当的修改,可以处理不同大小的二维数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日落、看夕阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值