2d数组,以奇怪的模式添加它的值

时间:2013-03-25 15:25:28

标签: c# arrays

几个月前我开始学习C#和编程并遇到一些问题。这里的想法是我们创建一个二维数组(用户添加行数/列数),数字需要在1到10之间。

然后在创建数组时,数字序列(3-5-7-9-11等)在第一列中开始,在最后一列结束。列中的其余数字是由用户从第一行开始通过键盘添加的(忽略第1列和最后一列,因为我们已经添加了这些数据)。

问题是:

  • 检查行数/列数是否在1到10之间的最佳方法是什么? (我在考虑IF-else,但是没有更好的方法吗?)
  • 我将如何制作,以便在第一列中开始数字序列3-5-7等,并在最后一列结束? 是的,我感到迷茫。

我现在的位置:

        Console.WriteLine("Add row value of 1-10");
        string s1
        s1 = Console.ReadLine();
        int k = int.Parse(s1);

        Console.WriteLine("Add column value of 1-10");

        string s2;
        s2 = Console.ReadLine();
        int p = int.Parse(s2);
        int[,] M = new int[k, p];

示例:我们添加了k(行)& p(coulmn)值为4.因此数组应该如下:

3 x x 11

5 x x 13

7 x x 15

9 x x 17

然后应该手动添加X,而不会覆盖现有的数字。数字的值无关紧要。

2 个答案:

答案 0 :(得分:0)

所以...如果我做对了你想问用户动态二维数组的“长度和宽度”? 要检查输入的数字是否在1到10之间,只有一种方法:

int [,] M;

if (k >= 1 && k <= 10 && p >= 1 && p <= 10)
{
    M = new int[k,p];
}

如果用户在那里输入字符而不是数字,最好是int.TryParse(),否则您可以轻松获得Exception

填写数字:

int num = 3;
for (int i = 0; i < k; ++i)
{
    M[i,0] = num;
    num+=2;
}

for (int i = 0; i < k; ++i)
{
    M[i,p] = num;
    num+=2;
}

这会在每行的第1列和最后一列中添加数字。之后,手动填充其他单元格,检查它不是第一列或最后一列的每个单元格。 我希望我能正确理解你。提供的代码可以简化,但以这种方式提供以便更好地理解。

答案 1 :(得分:0)

if(k>0 && k<11 && p>0 && p<11)
{
 int i;
 int M[,] = new int[k,p];
 for (i=0;i<k;i++)
 {
  M[i,0]=i*2+3;
  M[i,p-1]=(i+k)*2+3;
 }
}