Joel 测测你自己
测测你自己
当我要去宾州开始我的第一年大学生活时,我认为自己已经是非常好的程式设计师。靠完全自学,我用的Turbo 帕斯卡尔写了两套系统……一个是小型工厂的存货系统,另一个是能对以色列一个最大的面包工厂的生产线做排程。
直到期中考我才了解我并不是如自己想的一样聪明。某些考题我完全搞砸了,因为我还是不了解指标(指针)跟递回(递归)。
不是对某人怀恨在心,我将这些期中考题与你分享……看看你是否能做的比我大一还好。
1A。(MIT-Scheme)使用以下函数
(define(累积组合器null-value l)
(if(null?l)
空值
(组合器(车l)
(累积组合器
空值
(cdr l)))))
实作平方和,就是计算一串数字平方的加总,例如
(平方和'(1 2 3 4 5))
应为55。
(解答请反白全选下列的文字栏:)
(定义(平方和l)
(累积(lambda(xy)(+(* xx)y))
0
1))
1B。(JavaScript)好吧,也许Scheme不是你擅长的,这个问题跟1a一样,只是是用JavaScript。
使用以下函数
函数累加(combiner,nullValue,l)
{
if(l.length == 0)
return nullValue;
var first = l.shift();
return combiner(first,accumulate(combiner,nullValue,l));
}
实作平方和,就是计算一串数字平方的加总,例如
sumOfSquares([1,2,3,4,5])
应为55。
(解答请反白全选下列的文字栏:)
函数sumOfSquares(lst)
{
return accumulate(function(x,y){return x * x + y},0,lst);
}
2 \。(ANSI C)以下列格式写一个C的程式:
#include <stdio.h>
int main(int argc,char ** argv)
{
???
}
使得它在编译之后,可以如下执行
%。/ a.out可能会吃八只萨拉米大象
而它会印出每个参数的第一个字母(在这个例子,是 “奶酪”)。
(解答请反白全选下列的文字栏:)
#include <stdio.h>
int main(int argc,char ** argv)
{
int i;
for(i = 1; i <argc; i ++)
{
的putchar(argv的[I] [0]);
}
的putchar( '\ n');
返回0;
}
3 \。(ANSI C)底下的C程式输出是什么?
#include <stdio.h>
char * fn(int i,char * s)
{
当我)
{
小号++;
一世 - ;
}
回归;
}
int main(int argc,char ** argv)
{
int a = 2;
static char c [] =“test”;
printf(“%s \ n”,fn(a,c));
返回0;
}
(解答请反白全选下列的文字栏:)
st(后跟换行符)
想要更多的程式设计挑战,请见[TopCoder的](http://www.topcoder.com/)。
这些网页的内容为表达个人意见。
所有内容版权所有©1999-2006,作者Joel Spolsky。版权所有。