当前位置:编程学习 > C#/ASP.NET >>

c#编程 5*4的二维数组转化为4*5的二维数组

这个是我的代码 运行时就出现停止工作对话框 希望高手解答

using System;
using System.Collections;
using System.Text;

namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int[,] a ={ { 1, 1, 1, 1, 1, 1 }, { 2, 2, 2, 2, 2, 2 }, { 3, 3, 3, 3, 3, 3 }, { 4, 4, 4, 4, 4, 4 }, { 5, 5, 5, 5, 5, 5 } };
int[,] b = new int[4, 5];
int[] c = new int[29];
int k = 0;
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 5; j++)
{
c[k] = a[i, j];
k++;
}
}
k = k - 1;
for (int i = 4; i > -1; i--)
{
for (int j = 5; j > -1; j--)
{
b[i, j] = c[k];
k--;
}
}
for (int i = 0; i < 5; i++)
for (int j = 0; j < 6; j++)
Console.Write("{0}", b[i,j]);
}
}
}
补充:。。。。可以运行 就是运行的时候出现对话框 consoleApplication停止工作

 

答案:题目要求转化 5*4 的数组,但是您转化的是 5*6 的,另外逻辑方面还有一些错误。。
修改如下:
        static void Main(string[] args)
        {
            int[,] a ={ { 1, 1, 1, 1}, { 2, 2, 2, 2}, { 3, 3, 3, 3}, { 4, 4, 4, 4}, { 5, 5, 5, 5} };
            int[,] b = new int[4, 5];
            int[] c = new int[20];
            int k = 0;
            for (int j = 0; j < 4; j++)
            {
                for (int i = 0; i < 5; i++)
                {
                c[k] = a[i, j];
                k++;
                }
            }
            k = k - 1;
            for (int i = 3; i > -1; i--)
            {
                for (int j = 4; j > -1; j--)
                {
                b[i, j] = c[k];
                k--;
                }
            }
            for (int i = 0; i < 4; i++)
            {
                for (int j = 0; j < 5; j++)
                    Console.Write("{0}", b[i, j]);
                Console.WriteLine();
            }
            Console.ReadKey();
        }


数组 a 定义为 5*6 当然也可以通过编译,但在运行的时候发生数组越界,所以停止工作。。
你定义的数组a是6*5的,而数组b却是4*5的。

上一个:c#SQL编程问题
下一个:c#的编程问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,