2一维数组(练习)-《C#程序设计基础》(河海大学出版社)同步精品课堂
1. 如果有数组定义int[]a=new int[10],则该数组最后一个元素的下标为( )。
A. 10 B. 11 C. 9 D. 不确定
1. C
【解析】题目考察的是数组下标的默认值,默认情况下第一个数组元素的下标为0,最后一个元素的下标为“元素个数-1”。题干中所定义的数组共有10个元素,所以最后一个元素的下标为9。
2. 下面程序的输出结果是( );
int[] a = new int[] { 1, 2, 3, 4, 5, 6, 7 };
int i;
for ( i = 0; i <= a.Length - 1; i++)
{
a[i] = a[i] * a[i];
}
Console.WriteLine(a[i]);
- 36 B. 程序出错 C. 49 D. 不确定
2. B
【解析】循环结束后,i的值为7,超出了数组的上界,所以程序出错。
3. 已定义数组int[] m={0,1,2,3,4,5,6},下面哪个表达式的值与数组元素个数相等( )
A. m.Length() B. m.Length C. m.Length-1 D. m.Length()-1
3. B
【解析】在C#中,数组有一个属性Length,它表示数组的长度,即数组中元素的个数。对于数组m,其长度可以直接通过m.Length来访问。
4. 下面程序完成的功能是:随机生成20个[10,30]之间任意的两位正整数,以每行5个数据输出原始数据,并输出数组中第二大的数。请将程序补充完整。
static void Main(string[] args)
{
int[] arr = new int[20];
int i, j, m, temp;
Random random = new Random();
Console.WriteLine("原始数据为:");
for(i=0; i <= 19; i++)
{
//生成10,30内的随机整数
arr[i] = random.Next(10,30);
Console.Write(arr[i] + " ");
if( (1) )
学科网(北京)股份有限公司
{
Console.WriteLine();
}
}
Console.Write("数组中第二大的数为:");
for(i = 0; i <= 18; i++)
{
m = i;
for(j = i + 1; j <= 19; j++)
{
if ( (2) ) m = j;
}
if (m != i)
{
temp = arr[m];
arr[m] = arr[i];
arr[i] = temp;
}
}
Console.WriteLine(arr[18]);
}
4. 本程序共有2空,答案如下:
(1)(i+1) % 5 == 0
(2)arr[m] > arr[j]
【解析】该程序共包含两部分内容,其一是生成随机数存入数组并输出,其二是对数组中各元素进行排序并输出第二大的数。
(1)题干中要求每行输出五个数据,因此每输出五个数据就应该使用Console.WriteLine();语句来进行换行,因此只需要判断i的值是否满足(i+1)%5=0即可。
(2)第二部分的功能是使用选择法对数组arr中各元素进行由小到大的排序。变量m用来存储每一轮排序过程中最小值的下标。循环变量i用来表示当前排序的轮数。每轮排序过程中,均需对当前仍处于无序状态的各元素遍历,以找到其中最小的元素所在位置,因此使用循环变量j来遍历这些元素。在遍历的过程中,当发现比假定的最小值arr[m]还要小的元素时,就用该元素的下标替换掉变量m中的值,在一轮排序完成后对调arr[i]和arr[m]的值。所以第2空为arr[m] > arr[j]。
5. 下面程序完成的功能是:随机生成10个不重复的任意两位正整数,用二分查
学科网(北京)股份有限公司
找法查找10个数的平均值n出现的位置,若未出现,则输出-1。(提示:为了确保平均值和随机生成的某个数据可能相等,采用平均值取整后的结果进行查找)请将下面的程序补充完整。
static void Main(string[] args)
{
int[] arr = new int[10];
int rnd, i, j, m, temp;
int sum, avg, left, right, mid;
sum = 0;
mid = -1;
Random random = new Random();
Console.WriteLine("原始数据为:");
for(i=0; i <= 9; i++)
{
//生成10,30内的随机整数
rnd = random.Next(10,99);
for(j = 0; j < i; j++)
{
if (arr[j] == rnd) break;
}
if(j == i)
{
arr[i] = rnd;
sum = sum + arr[i];
Console.Write(arr[i] + " ");
}
else
{
(1)
}
}
Console.WriteLine();
Console.WriteLine("排序数组为:");
for(i = 1; i <= 9; i++)
{
for (j = 0; j <= 9 - i; j++)
{
if ( (2) )
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
学科网(北京)股份有限公司