第1关:用函数语句定义函数
编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
定义一个名字为mainJs()的函数;
该函数有两个参数,均为字符串类型;
函数的功能是返回这两个参数的拼接结果;
具体请参见后续测试样例。
//请在此处编写代码
/********** Begin **********/
function mainJs(a,b)
{
a = a + b;
return a;
}
mainJs();
/********** End **********/
第2关:用表达式定义函数
编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
定义一个匿名函数,将它赋值给变量myFunc;
该函数实现求一个三位数的各个位上的数字之和,比如123各个位上的数字分别为1、2和3,和是6;
具体请参见后续测试样例。
function mainJs(a) {
a = parseInt(a);
//请在此处编写代码
/********** Begin **********/
var myFunc = function (a) {
var sum = 0;
var b = 0;
for (var i = 2; i > 0; i--){
b = a;
b = Math.floor(b / Math.pow(10, i));
sum += b;
a =Math.floor( a % Math.pow(10, i));
}
sum = sum + a;
return sum;
};
/********** End **********/
return myFunc(a);
}
第3关:函数的调用
编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
mainJs()代码区上面定义了三个函数,从上到下分别编号为1、2和3;
mainJs()有三个参数a、b和c,根据a的值(函数的编号,可取的值是1、2和3)调用相应的函数(可选的函数分别是getMax()、getMin()和getSum(),具体请参考代码!),并传入参数b和c,返回得到的结果;
比如a为1表示你需要调用函数getMax();
具体请参见后续测试样例。
//求最大值的函数
function getMax(b,c) {
return b>c?b:c;
}
//求最小值的函数
var getMin = function(b,c) {
return b>c?c:b;
}
//对象中的求和函数
var myObject = {
id:1,
name:"function",
myFunc:function(b,c) {
return b+c;
}
}
function mainJs(a,b,c) {
a = parseInt(a);
b = parseInt(b);
c = parseInt(c);
var result = 0;
//请在此处编写代码
/********** Begin **********/
if (a == 1) {
result = getMax(b, c);
}
if (a == 2) {
result = getMin(b, c);
}
if (a == 3) {
result = myObject.myFunc(b,c);
}
return result;
/********** End **********/
}
第4关:未定义的实参
编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
路口有四个方向的红绿灯,其默认值分别是green、green
、red和yellow;
对于函数mainJs(a,b,c,d)的四个参数,要求在没有传入实参或者传入undefined时,其分别设置为上述默认值;
最后返回四个字符串型参数的拼接结果,字符串中间用-符号隔开,如分别传入red、red、yellow和undefined时,返回red-red-yellow-yellow;
具体请参见后续测试样例。
function mainJs(a,b,c,d) {
//请在此处编写代码
/********** Begin **********/
if (a === undefined)
a = "green";
if (b === undefined)
b = "green";
if (c === undefined)
c = "red";
if (d === undefined)
d ="yellow";
return a + "-" + b + "-" + c + "-" + d;
/********** End **********/
}
第5关:实参对象
编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
定义函数getMax();
该函数计算并返回一组整数的最大值;
整数的个数不确定;
如果整数个数为0,直接返回0;
具体请参见后续测试样例。
//请在此处编写代码
/********** Begin **********/
function getMax() {
var alength = arguments.length;
var maxn = 0;
if (alength == 0) {
return 0;
}else{
for (var i = 0; i < alength; i++) {
if (maxn < arguments[i]) {
maxn = arguments[i];
}
}
return maxn;
}
}
/********** End **********/
function mainJs(a) {
a = parseInt(a);
switch(a) {
case 1:return getMax(23,21,56,34,89,34,32,11,66,3,9,55,123);
case 2:return getMax(23,21,56,34,89,34,32);
case 3:return getMax(23,21,56,34);
case 4:return getMax(23,21,56,34,89,34,32,11,66,3,9,55,123,8888);
case 5:return getMax();
default:break;
}
}//请在此处编写代码
/********** Begin **********/
function getMax() {
var alength = arguments.length;
var maxn = 0;
if (alength == 0) {
return 0;
}else{
for (var i = 0; i < alength; i++) {
if (maxn < arguments[i]) {
maxn = arguments[i];
}
}
return maxn;
}
}
/********** End **********/
function mainJs(a) {
a = parseInt(a);
switch(a) {
case 1:return getMax(23,21,56,34,89,34,32,11,66,3,9,55,123);
case 2:return getMax(23,21,56,34,89,34,32);
case 3:return getMax(23,21,56,34);
case 4:return getMax(23,21,56,34,89,34,32,11,66,3,9,55,123,8888);
case 5:return getMax();
default:break;
}
}
第6关:对象作为参数
编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
函数objcetFunction()的参数是一个对象,该函数的功能是返回属性名1+':'+属性值1+','+属性名2+':'+属性值2+','+......+属性值n+',';
测试的时候我们会往mainJs()传入参数1或2或3,分别表示调用函数objectFunction()并传入对象参数park、computer或者city;
比如对于第一个对象park,该函数需要返回name:Leaf Prak,location:Fifth Avenue,todayTourists:4000,;
具体请参见后续测试样例。
var park = {
name:"Leaf Prak",
location:"Fifth Avenue",
todayTourists:4000
};
var computer = {
name:"Levenon",
price:"$800",
memory:"8G"
};
var city = {
name:"HangZhou",
country:"Chine",
population:9400000
}
function objectFunction(object) {
//请在此处编写代码
/********** Begin **********/
if (object == park) {
return 'name' + ':' + park.name + ',' + 'location' + ':' + park.location + ',' + 'todayTourists' + ':' + park.todayTourists+',';
}
if (object == computer) {
return 'name' + ':' + computer.name + ',' + 'price' + ':' + computer.price + ',' + 'memory' + ':' + computer.memory+',';
}
if (object == city) {
return 'name' + ':' + city.name + ',' + 'country' + ':' + city.country + ',' + 'population' + ':' + city.population+',';
}
/********** End **********/
}
function mainJs(a) {
a = parseInt(a);
switch(a) {
case 1:return objectFunction(park);
case 2:return objectFunction(computer);
case 3:return objectFunction(city);
default:break;
}
}
第7关:函数对象
编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
已知getOddNumber(a)求数组a中奇元素的个数,getEvenNumber(a)求数组a中偶元素的个数;
完成函数getNumber(func,a),实现:根据函数参数func的不同,求数组a中奇元素的个数或者偶元素的个数;
上一条提到的func的值只有可能是getOddNumber或者getEvenNumber。
//求数组中奇数元素的个数
function getOddNumber(a) {
var result = 0;
for(var i = 0;i < a.length;i++) {
if(a[i]%2 != 0)
result++;
}
return result;
}
//求数组中偶数元素的个数
function getEvenNumber(a) {
var result = 0;
for(var i = 0;i < a.length;i++) {
if(a[i]%2 == 0)
result++;
}
return result;
}
function getNumber(func,a) {
//请在此处编写代码
/********** Begin **********/
return func(a);
/********** End **********/
}
//测试接口
function mainJs(b,a) {
a = a.split(",");
var aLength = a.length;
for(var i = 0;i < aLength;i++) {
a[i] = parseInt(a[i]);
}
if(b == "getEvenNumber") {
return getNumber(getEvenNumber,a);
} else {
return getNumber(getOddNumber,a);
}
}