0

几个月前我开始学习 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];

示例:我们添加了 4 的 k(row) 和 p(coulmn) 值。所以数组应该如下所示:

3×11

5×13

7×15

9×17

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

4

2 回答 2

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;
}

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

于 2013-03-25T15:39:18.100 回答
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;
 }
}
于 2013-03-25T15:57:36.130 回答