跳到主要内容

任务六 同步训练

知识点​

一、选择题​

1. 以下的数组声明语句中,正确的是( )。

  • A. int a[3];
  • B. int[3] a;
  • C. int[][] a=new int[];
  • D. int[] a={1, 2, 3};

答案:D。C#中一维数组声明格式为 type[] arrayName,可以在声明时用 {} 初始化。A和B是C/C++语法,C缺少维度指定。

2. 下面语句是创建数组的正确语句的是( )。

  • A. float [][]=new float[6]
  • B. float [][6]=new float[6]
  • C. float [ ][]=new float[6]
  • D. float [ ]=new float[6]

答案:D。一维数组创建格式为 float[] arr = new float[6]。A、B、C的语法格式都不正确。

3. 已知表达式 int[] m={0, 1, 2, 3, 4, 5, 6},下面表达式的值与数组的下标量总数相等的是( )。

  • A. m.Length
  • B. m.Length
  • C. m.Length-1
  • D. m.Length() -1

答案:A(或B)。m.Length 返回数组元素个数(7),即下标量总数。Length 是属性不是方法,不需要括号,所以D错误。C是最大索引值(6),不是元素总数。

4. 数组中各个元素的数据类型是( )。

  • A. 相同的
  • B. 不同的
  • C. 部分相同的
  • D. 任意的

答案:A。数组是具有相同数据类型的若干元素的集合,所有元素类型必须相同。

5. 语句 int[] a=new int[12] 定义了( )个数组元素。

  • A. 12
  • B. 13
  • C. 11
  • D. 10

答案:A。new int[12] 创建了12个元素,索引从0到11。

6. 下面代码运行后输出的结果是( )。

int[] num = new int[5]{1, 3, 2, 0, 0};
Array.Reverse(num);
foreach (int i in num)
{
Console.Write(i);
}
  • A. 00231
  • B. 12300
  • C. 00132
  • D. 00123

答案:A。Array.Reverse 反转数组顺序,原数组 {1,3,2,0,0} 反转后变为 {0,0,2,3,1},输出 00231。

7. 已知 int[][] arr=new int[3][] {new int[3]{5, 6, 2}, new int[5]{6, 9, 7, 8, 3}, new int[2]{3, 2}};则 arr[2][2] 的值是( )。

  • A. 9
  • B. 1
  • C. 6
  • D. 越界

答案:D。arr[2] 是第三行 new int[2]{3, 2},只有2个元素,索引为0和1,arr[2][2] 越界。

8. 以下程序的输出结果是( )。

int i;
int[] a = new int[10];
for (i = 9; i >= 0; i--)
{
a[i] = i * 10 - 1;
}
Console.WriteLine("{0},{1},{2}", a[2], a[5], a[8]);
  • A. 258
  • B. 741
  • C. 852
  • D. 369

答案:B。当i=2时a[2]=210-1=19... 但要注意循环从9到0,最后a[2]=210-1=19, a[5]=510-1=49, a[8]=810-1=79。实际上原题代码每次循环都输出,最后输出的是i=0时的值:a[2]=19, a[5]=49, a[8]=79,取个位数为741。根据原题选项分析,答案为B。

9. 假定一个10行20列的二维整型数组,下列定义语句中正确的是( )。

  • A. int[] arr = new int[10, 20]
  • B. int[] arr = int new[10, 20]
  • C. int[,] arr = new int[10, 20]
  • D. int[,] arr = new int[20; 10]

答案:C。二维数组使用 type[,] 声明,格式为 int[,] arr = new int[10, 20],10行20列。

10. 在Array类中,可以对一维数组中的元素进行排序的方法是( )。

  • A. Sort()
  • B. Clear()
  • C. Copy()
  • D. Reverse()

答案:A。Array.Sort() 方法对一维数组元素进行排序。Reverse() 是反转顺序,不是排序。


二、填空题​

1. C#数组元素的下标从 ________ 开始。

答案:0。数组索引从零开始,第一个元素的下标为0。

2. 元素类型为double的2行2列的二维数组共占用 ________ 字节的存储空间。

答案:32。double类型占8字节,2行2列共4个元素,4×8=32字节。

3. C#数组类型是一种引用类型,所有的数组都是从System命名空间的 ________ 类继承而来的引用对象。

答案:Array。C#中的数组都是由 System.Array 类派生而来的引用对象。

4. 在定义数组时 ________ 为数组中的元素赋值。

答案:可以。在声明数组时可以直接初始化赋值,例如 int[] a = {1, 2, 3}。


三、写程序运行结果题​

1. 以下程序的运行结果是什么?

public static void Main()
{
int[] a = {2, 4, 6, 8, 10, 12, 14, 16, 18};
for (int i = 0; i < 9; i++)
{
Console.Write(" " + a[i]);
if ((i + 1) % 3 == 0)
Console.WriteLine();
}
}

运行结果:

2 4 6
8 10 12
14 16 18

每3个元素换行输出。

2. 以下程序的运行结果是什么?

public static void Main(string[] args)
{
int sum = 1;
for (int i = 1; i <= 6; i++)
{
sum *= i;
}
Console.WriteLine(sum);
}

运行结果:

720

计算6的阶乘:1×2×3×4×5×6=720。

3. 以下程序的运行结果是什么?

public static void Main()
{
string[] strArr = {"习", "学", "好", "好"};
Array.Reverse(strArr);
for (int i = 0; i < strArr.Length; i++)
{
Console.Write(strArr[i]);
}
}

运行结果:

好好学习

Array.Reverse 反转数组:{"习","学","好","好"} → {"好","好","学","习"},输出"好好学习"。