更新时间:2018-11-22 16:55作者:李天扬老师
摘要:
1、A是一个用户自定义类。 int a = 100; A *ptr = new A [a]; delete ptr; 这段代码是干什么的,有个错误请指出来,如何提高效率?
分析: 这段代码创建了一个包含100个类A的实例的数组。这个代码中删除对象数组占据内存空间的方式是delete[] 而不是delete,
1、A是一个用户自定义类。
int a = 100;
A *ptr = new A [a];
delete ptr;
这段代码是干什么的,有个错误请指出来,如何提高效率?
分析:
这段代码创建了一个包含100个类A的实例的数组。这个代码中删除对象数组占据内存空间的方式是“delete[]”而不是“delete”,因此应该改成:delete[] ptr。因为创建的是100个元素的数组,因此不需要一个单独的变量a,直接如下修改:
A *ptr = new A [100];
delete[] ptr;
2、How to calculate (1 + 2 + 3 + … + n)?JSJ321.com老师分析:不要用老师讲的for循环来计算累计值,而是使用等差数列计算公式,这样效率会高很多int F(int n){return n*(n+1)/2;}
3、在一个火车站:每10分钟就有一火车离站向南开去;每10分钟,也有另外一辆火车离站向北开去。每天,你到达这个火车站的时间并不是固定的(换言之,在时间上你是随机到达火车站的)。但是在你每次到达以后,你就会乘坐最先到站的火车离开,而不管它是往北或者是往南开。这样在乘坐了一年以后,你发现在90%的天数里,你所乘坐的是南行的火车。请问这是为什么?
分析:答案是“南行的火车时间比北行的时间早1分钟”。
比如:南行的时刻表为:12:00,12:10,12:20,12:30,、、、
北行的火车时间表为:12:01,12:11,12:21,12:31,、、、