13.9 练习
1.编写一个函数,计算包含10个浮点数的数组的平均值并返回结果。
2.Fraction类中的方法reduce用来找出分子和分母的最大公约数来简约分数。修改这个方法,使其使用代码清单13-5中的函数gcd。你认为应该在什么地方定义该函数呢?将函数定为static有什么好处?你认为哪种方式更好,使用函数gcd还是像以前一样将代码直接合并到方法中呢?为什么?
3.可以使用一种名为Sieve of Erastosthenes的算法产生素数。这个过程算法如下所示。编
写一个程序来实现这个算法。假设程序找出150之前的所有质数,比较本文中其他计算质数的算法,如何评价这个算法?
步骤1:定义整型数组P。将所有元素Pi置为0、2<=i<=n。
步骤2:将i设为2。
步骤3:如果i>n,算法终止。
步骤4:如果Pi等于0,则i是质数。
步骤5:对于所有满足i・j<n的正整数j,将Pixj设为1。
步骤6:i加1并且回到步骤3。
4.编写一个函数,将所有传递给它的数组中的Fractions相加,并以Fraction类型返回结果。
5.为名为Date的struct date编写定义typedef,它允许在程序中进行如下声明
Date todaysDate;
6.在文中提到过,定义Date类而不是date结构更符合面向对象的编程思想。定义这样的类,并定义适当的setter和getter方法。同时,添加一个名为dateUpdate的方法来返回参数之后的日期。
能看出将Date定义为类而不是结构的好处吗?
能看出这样做的缺点吗?
7.给出下列定义:
char*message=“Programming in Objective-C is fun”;
char message2[]=“You said it”;
int x=100;
确定下面语句集中的NSLog语句是否都合法,产生的输出是否和其他语句一样。
/set 1/
NSLog(@“Programming in Objective-C is fun”);
NSLog(@“s”,“Programming in Objective C is fun”);
NSLog(@“s”,message);
/set 2/
NSLog(@“You said it”);
NSLog(@“s”,message2);
NSLog(@“s”,&message2[0];
/set 3/
NSLog(@“said it”);
NSLog(@“s”,message2+4);
NSLog(@“s”,&message2[4]);
8.编写程序,它在终端输出所有命令行参数,每行一个。注意引号中包含空格字符的封装参数有什么作用。
9.下面哪组语句会生成输出This is a test?并说明原因。
NSLog(@“This is a test”);
NSLog(“This is a test”);
NSLog(@“s”,“This is a test”);
NSLog(@“s”,@“This is a test”);
NSLog(“s”,“This is a test”);
NSLog(“s”,@“This is a test”);
NSLog(@,@“This is a test”);
NSLog(@,“This is a test”);