入学在线测试模拟试题及参考答案

来自MUMCS


1. Write a function that accepts an array of non-negative integers and returns the second largest integer in the array. Return -1 if there is no second largest.


The signature of the function is
int f(int[ ] a)

If you are programming in C or C++, the signature of the function is
int f(int a[ ], int len) where len is the number of elements in a.

Examples:



2. Write a function that takes an array of integers as an argument and returns a value based on the sums of the even and odd numbers in the array.
Let X = the sum of the odd numbers in the array and let Y = the sum of the even numbers. The function should return X - Y

The signature of the function is:
int f(int[ ] a)

If you are using C or C++, the signature of the function is:
int f(int[ ] a, int len) where len is the number of elements in a.

Examples



3. Write a function that accepts a character array, a zero-based start position and a length. It should return a character array containing containing length characters starting with the start character of the input array. The function should do error checking on the start position and the length and return null if the either value is not legal.
The function signature is:
char[ ] f(char[ ] a, int start, int len)

If you are programming in C or C++, the function signature is:
char * f(char a[ ], int start, int len, int lenA) where lenA is the number of elements in a.

Examples



参考答案

Answers:


First answer

public static void main()
{
a1(new int[]{1, 2, 3, 4});
a1(new int[]{4, 1, 2, 3});
a1(new int[]{1, 1, 2, 2});
a1(new int[]{1, 1});
a1(new int[]{1});
a1(new int[]{});
}

static int a1(int[] a)
{
int max1 = -1;
int max2 = -1;

for (int i=0; i<a.length; i++)
{
if (a[i] > max1)
{
max2 = max1;
max1 = a[i];
}
else if (a[i] != max1 && a[i] > max2)
max2 = a[i];
}

return max2;
}


Second answer

public static void main()
{
a2(new int[] {1});
a2(new int[] {1, 2});
a2(new int[] {1, 2, 3});
a2(new int[] {1, 2, 3, 4});
a2(new int[] {3, 3, 4, 4});
a2(new int[] {3, 2, 3, 4});
a2(new int[] {4, 1, 2, 3});
a2(new int[] {1, 1});
a2(new int[] {});
}

static int a2(int[] a)
{
int sumEven = 0;
int sumOdd = 0;

for (int i=0; i<a.length; i++)
{
if (a[i]%2 == 0)
sumEven += a[i];
else
sumOdd += a[i];
}

return sumOdd - sumEven;
}


Third answer

public static void main()
{
a3(new char[]{'a', 'b', 'c'}, 0, 4);
a3(new char[]{'a', 'b', 'c'}, 0, 3);
a3(new char[]{'a', 'b', 'c'}, 0, 2);
a3(new char[]{'a', 'b', 'c'}, 0, 1);
a3(new char[]{'a', 'b', 'c'}, 1, 3);
a3(new char[]{'a', 'b', 'c'}, 1, 2);
a3(new char[]{'a', 'b', 'c'}, 1, 1);
a3(new char[]{'a', 'b', 'c'}, 2, 2);
a3(new char[]{'a', 'b', 'c'}, 2, 1);
a3(new char[]{'a', 'b', 'c'}, 3, 1);
a3(new char[]{'a', 'b', 'c'}, 1, 0);
a3(new char[]{}, 0, 1);
a3(new char[]{'a', 'b', 'c'}, -1, 2);
a3(new char[]{'a', 'b', 'c'}, -1, -2);
}

static char[] a3(char[] a, int start, int length)
{
if (length < 0 || start < 0 || start+length-1>=a.length)
{
return null;
}

char[] sub = new char[length];
for (int i=start, j=0; j<length; i++, j++)
{
sub[j] = a[i];
}

return sub;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值