| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1698 人关注过本帖
标题:关于C++题目啊?
只看楼主 加入收藏
lisang
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-2-22
收藏
 问题点数:0 回复次数:5 
关于C++题目啊?

有哪个高手帮我解答一下,把答案回复给我!我将十分感谢你!我急用!
1.
以下代码是否有问题,如果有请说明:

double firstLength;

double totalLength;

…… // 相关处理

if (firstLength == totalLength)

{

// doSomething

}

2. 以下代码存在什么问题,为什么,如何改善。

double CalArea()

{

return this.m_dRadius * this.m_dRadius * 3.1415;

}

double CalLength()

{

return this.m_dRadius * 2 * 3.1415;

}

3. 请说明C/C++中指针与引用的差别。

4. 请举例说明语言中精度遗失是如何产生的。

5. 请说明分支语句的差别,如C语言中的if…else if…switch的差别。(或可说明其它语言中的分支语句比较)。

6. 请明forwhiledo while的差别及应用场合。

7. C/C++中,continuebreak有何妙用?

8. 说明对C++inline的理解,及使用时应该注意的事项。

9. 说明你的编程习惯、编程规范,受什么人或书的影响。

10. C++中,默认构造函数、拷贝构造函数、重载操作符=、析构函数有何差别?使用时要注意什么?

11. C++中的thisJava中的thisVB中的Me,如何使用?

12. C++中的多态性如何实现,并用代码说明。

13. C++中关键词const的用法。

14. C/C++中,几个判断:boolfloat、指针变量与“零值”的比较,如何使用,要注意什么。

请说明C中的Struct与C++中的class的访问权限的差异,为什么这样设计?
搜索更多相关主题的帖子: Roman New 
2006-02-22 12:45
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
1,一般浮点数做比较要用差值比较的

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-02-22 13:18
olivezhang
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-9-14
收藏
得分:0 

我来试试,错误之处,还请高手、版主指正:)
说明:
1。红批表示错误之处,蓝批表示修正。

double firstLength;

double totalLength;

…… // 相关处理

if (firstLength == totalLength) //两个浮点数不能用==表判断,因为其有精度误差。

{

// doSomething

}

2. 以下代码存在什么问题,为什么,如何改善。

double CalArea()

{

return this.m_dRadius * this.m_dRadius * 3.1415; //this->m_dRadious*this->m_dRadius,this 是指针

}

double CalLength()

{

return this.m_dRadius * 2 * 3.1415; //同上题

}

3. 请说明C/C++中指针与引用的差别。
C++新加入引用特性,主要是用于参数传递,它能和指针一样达到相同的效果。
差别:
(1)定义函数时的形参不同:
指针:Type fun(Type *point);
引用:Type fun(Type &ref);
(2) 函数调用时传递的参数不同:
指针:
Type *point;
fun(point);
引用:
Type ref;
fun(ref);
(3) 指针传递的是地址,引用传递的是实参的别名。



4. 请举例说明语言中精度遗失是如何产生的。
这道题请高手指点。

5. 请说明分支语句的差别,如C语言中的if…else if…switch的差别。(或可说明其它语言中的分支语句比较)。
主要是在分支比较多时,用if....else if....else..比较繁锁,面用switch则比较简单清晰。

6. 请明forwhiledo while的差别及应用场合。
编程多了,自然明白。

7. C/C++中,continuebreak有何妙用?
没什么妙用,只是结束循环的两种方法。
continue:跳出当前循环。
break:跳出所有循环。

8. 说明对C++inline的理解,及使用时应该注意的事项。
这是C++特有的,用来取代C中的宏定义,除了assert宏。
用于inline的函数,函数要比较简单,函数体中不能有多重循环、递归等。。

9. 说明你的编程习惯、编程规范,受什么人或书的影响。

10. C++中,默认构造函数、拷贝构造函数、重载操作符=、析构函数有何差别?使用时要注意什么?
它们本来就各不相同,各自的功用也是不同的。
默认构造函数可以由系统提供,也可以自己写,有两种默认构造函数:
class A
{
};
(1)无参数的默认构造函数:
A() {};
(2)有参数的默认构造函数:
A(int a=0, int b=0) {}
注:两种默认构造函数不能同时出现。

拷贝构造函数:
拷贝构造函数是为了声明对象时用另一对象初始化。
class A
{
public:
A() {}
~A() {}
A(A &a) {};
};
int main ()
{
A a;
A b(a); //调用A(A &a)
return 0;
}

重载操作符
=:
用于对象给对象赋值。
析构函数:
析放对象资源。

11. C++中的thisJava中的thisVB中的Me,如何使用?

12. C++中的多态性如何实现,并用代码说明。
C++中的多态主要由函数重载、虚函数来体现。
举个简单例子:
求各种形状的面积:
class Shape
{
public:
Shape() {};
virtual ~Shape() {}
virtual double area() const = 0;
};

class Point
{
public:
Point(double x0=0.0, double y0=0.0) : x(x0), y(y0){}
~Point() {}
double GetX() {return x;}
double GetY() {return y;}
private:
double x;
double y;
};

class Circle : public Shape
{
public:
Circle(Point cen, double ran=0.0) : m_cen(cen), m_ran(ran) {}
~Circle() {}
virtual double area() const
{
return PI*m_ran*m_ran;
}
private:
double m_ran;
double m_cen
};

class Rectangle : public Shape
{
public:
Rectangle(Point lt, Point rd) : m_lt(lt), m_rd(rd) {}
~Rectangle() {}
virtual double area() const
{
return (m_rd.GetX-m_lt.GetX) * (m_rd.GetY-m_lt.GetY);
}
private:
Point m_lt;
Point m_rd;
};

void ShowArea(Shape &s)
{
cout << "the area is: " << s.area() << endl;
}

int main()
{
Circle circle(Point(10, 10), 10);
ShowArea(circle);
Rectangle rect(Point(5, 5), Point(10, 10));
ShowArea(rect);

return 0;
}

注:用统一的接口area(),通过虚函数机制,计算各种不同形状的面积。。

13. C++中关键词const的用法。
const的用法比较多,如:
(1)定义常量
1)const int ia = 100;
2)int const ib = 100;
注:1),2)表示同一意思
3)const int *pa; //const修饰指针值
4)int* const pb; //const修饰指针
....
(2)修饰函数参数、返回值等,被const修饰的东西,受强制保护,可防止意外改动,提高程序的健壮性。
class A
{
};
1)Type fun() const; //只能用于类的成员函数
2)Type fun(const A &a);
3)Type fun(const A *a);
....
注:传递类对象,一般用引用,不用指针


14. C/C++中,几个判断:boolfloat、指针变量与“零值”的比较,如何使用,要注意什么。
从提高程序的可读性和健壮性来看,以下方式应该是比较好的表达:
bool:
bool ba = false;
if (ba) // if (!ba)
{
....
}
float:
float fa = 100.111;
if (fa > 10.22221 && fa < 200.24124)
{
}

指针:
int ib = 100;
int *p = &ib;
if (p == NULL) // if (p != NULL)
{
.....
}

请说明C中的Struct与C++中的class的访问权限的差异,为什么这样设计?
struct中数数据在默认情况下是public, 而类是private.
因为struct中没在成员函数,在程序中只能直接对数据进行操作,所以指定为public更方便。
而类就不同了,它对数据是进行保护的,用成员函数对数据进行操作,所以指定private更安全。

谷底深深行 ,峰顶漫漫步......@_@
2006-02-23 11:53
DarkHero
Rank: 1
等 级:新手上路
威 望:2
帖 子:191
专家分:0
注 册:2006-1-14
收藏
得分:0 
作业吗?哼……

for( ; me.alive() ; ) { 淡泊名利,志存高远 } //Forever
2006-02-24 22:23
sxk4429
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-2-24
收藏
得分:0 
关于第四个,==号的判断一般只能用与两个整型,因为数据的储存是用2进制的,整形的话可以直接判断,但要是浮点型的数,就不可以用==判断,那样不准确,一般用这种形似:
double a;
double b;
if(fbas(b-a)<=e)
{
}
e是精度
2006-02-25 13:18
梦魇琴嚣
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-2-14
收藏
得分:0 
我是菜鸟 不过也想回答下第4和第6 请高手指正

4,我认为属于组成原理方面的问题 因为不论取值范围有多大 计算机所能处理的数据的位数是有限的 当所处理的数据超出了位数限制 就会自动执行“强制舍去”或“末位恒置1”或“0舍1入”的方法进行处理 以至产生精度损失

6,WHILE是先判断条件是否成立再执行循环体 DOWHILE是先执行一次循环体再判断条件是否成立 FOR可以替代WHILE和DOWHILE 可以解决所有的循环问题

考试型的题目 按照考试的方式回答~ 嘿嘿
2006-02-27 03:01
快速回复:关于C++题目啊?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017344 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved