任务六 同步训练
知识点
一、选择题
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 68 10 1214 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反转数组:{"习","学","好","好"}→{"好","好","学","习"},输出"好好学习"。