博文

钱能的《C++程序设计教程》序列三:chapter3(2005-07-21 12:40:00)

摘要:声明:为了大家的共同学习,特推出一些经典书籍的课后练习的答案,答案内容属原创,转载请注明出处,欢迎大家批评指正。

这一序列说明:
1.采用国内的教材:《C++程序设计教程》钱能主编 清华大学出版社 1999
2.在每一章练习解答前会有一个“疑难知识点”概述,这里只代表我自己的观点,也就是我自己现在还不能达到非常熟练,或者我初学时感觉比较模糊的知识。
3. 有一些答案来自网络,里面答案的选题编辑:张朝阳,责任编辑:徐培忠、林庆嘉。在这里表示感谢。
4.更多的学习和改进将在《The C++ programming language》答案序列中体现。

序列三:chapter3

一、疑难知识点:
1.理解左值和右值,特别是掌握哪些可以当左值。

2.求余%只能对整型进行操作,当然char和bool型也可以。

3.溢出
   随着计算机的发展,特别是64位CPU和操作系统的推出,出现溢出的可能性越来越小。本书有一些这类的题目,主要是本书是基于16位机器,其实对于32位机器,基本上不会出现溢出现象了。
   有关整型溢出:一个整型变量,用任何一个超过表示范围的整数初始化,得到的值为用该整数范围作模运算后得到的值。

4.真正弄懂前增量和后增量、前减量和后减量的区别,这个其实是很简单的(略),还有两个注意点:
(1)、增量和减量其实是包含赋值操作的,故只能对左值才能施于++或--
(1)、后增量如i++是不能作为左值的,而前增量是可以的故++(i++)是错的,而++(++i)是正确的。对于减量也一样。
例子:
#include<iostream>
using namespace std;
void main()
{
    int i=1;
    //++(i++);//wrong
    ++(++i);
   &......

阅读全文(3703) | 评论:0

钱能的《C++程序设计教程》序列二:chapter2第二部分(2005-07-21 12:21:00)

摘要:因为字数限制,进行分割。
二、课后练习答案:(不抄题目,没有课本的人可以到网上去下一本)
2.1.
#include<iostream>
using namespace std;
void main()
{
    int a=42486;
    cout<<"42486的8进制输出:"<<oct<<a
        <<",42486的16进制输出:"<<hex<<a<<dec<<endl;//效果是持续的
    unsigned b=42486;
    cout<<signed int(b)<<endl;//result:42486,在我的机器上还没有超出范围
//本题原考虑在16位机器上实验,目前多为32位机器,故不会超过范围的

}

2.2.
#include<iostream>
#include<iomanip>
using namespace std;
void main()
{
    const double PI=3.1415926;//不提倡使用宏定义也就是#define来定义
    double circle,radius;
    cin>>radius;
    circle=2*PI*radius;
    cout<<"圆周率为:"<<set......

阅读全文(3567) | 评论:2

钱能的《C++程序设计教程》序列二:chapter2第三部分(2005-07-21 12:30:00)

摘要:二、课后练习答案:(不抄题目,没有课本的人可以到网上去下一本)
2.6.
(1)自己运行一下就知道了
(2)这个程序的作用是已知三角形三边求三角形的面积
(3)转载
//#include <stdio.h>
#include <iostream.h>
#include <iomanip.h>
#include <math.h>

void main()
{
  float a,b,c,s,area;
  //printf("please input 3 sides of one triangle:\n");
  cout <<"please input 3 sides of one triangle:\n";
  //scanf("%f,%f,%f",&a,&b,&c);  //输入时以逗号作为数据间隔
  cin >>a >>b >>c;   //输入时以空格作为数据间隔

  s=(a+b+c)/2;
  area=sqrt(s*(s-a)*(s-b)*(s-c));

  //printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c);
  cout <<setiosflags(ios::fixed) <<setprecision(2)
       <<"a=" <<setw(7) <<a
       &l......

阅读全文(3402) | 评论:0

钱能的《C++程序设计教程》序列二:chapter2第一部分(2005-07-21 12:14:00)

摘要:声明:为了大家的共同学习,特推出一些经典书籍的课后练习的答案,答案内容属原创,转载请注明出处,欢迎大家批评指正。

这一序列说明:
1.采用国内的教材:《C++程序设计教程》钱能主编 清华大学出版社 1999
2.在每一章练习解答前会有一个“疑难知识点”概述,这里只代表我自己的观点,也就是我自己现在还不能达到非常熟练,或者我初学时感觉比较模糊的知识。
3. 有一些答案来自网络,里面答案的选题编辑:张朝阳,责任编辑:徐培忠、林庆嘉。在这里表示感谢。
4.更多的学习和改进将在《The C++ programming language》答案序列中体现。

序列二:chapter2

一、疑难知识点
1.(p14,表2-2)float、double、long double的表示范围如何计算得到?
呵呵,以前好像有去计算出来,现在反而不知道怎么求解出来了,竟然可以表示这么大的数值。

2.实型常量采用指数形式表示的两点要求:
(1).E或e前面必须要有数字
(2).E或e后面的指数必须要整数

3.反斜杠\可以和8进制或16进制数结合起来使用,以表示相应于该数的ACII码(P18)

4.有关枚举变量
   不能把整数赋给枚举变量。但是枚举变量可以用整型的常量表达式进行初始化。
,在《The C++ programming Language》(Special Editon)中文版,裘宗燕翻译第70页说,所赋的值不能超过该枚举的范围,这个范围是如何计算出来,我现在还不明白,谁懂的话可以介绍一下。但是在我机器上实验好像没有所谓的范围限制。

举例:
#include<iostream>
using namespace std;

enum aa{a1=1,a2=2,a3=4,a4=8};
void main()
{
    //aa bb=3;//wrong 不能把整数赋给枚举变量
    aa cc=(aa......

阅读全文(3562) | 评论:0

钱能的《C++程序设计教程》序列一:chapter1(2005-07-21 12:13:00)

摘要:声明:为了大家的共同学习,特推出一些经典书籍的课后练习的答案,答案内容属原创,转载请注明出处,欢迎大家批评指正。

这一序列说明:
1.采用国内的教材:《C++程序设计教程》钱能主编 清华大学出版社 1999
2.在每一章练习解答前会有一个“疑难知识点”概述,这里只代表我自己的观点,也就是我自己现在还不能达到非常熟练,或者我初学时感觉比较模糊的知识。
3. 有一些答案来自网络,里面答案的选题编辑:张朝阳,责任编辑:徐培忠、林庆嘉。在这里表示感谢。
4.更多的学习和改进将在《The C++ programming language》答案序列中体现。

序列一:chapter1

疑难知识点:
1.有关本书的参考标准ANSI C++标准
     本书讲述的内容是以ABNI C++为标准,其实那时(1999年)这个标准已经过时了,因为在1998年出现新的C++标准,也就是ISO C++标准,ANSi C++标准是美国国内的标准,而ISO C++标准(ISO/IEC)是国际标准,这个新的标准对C++进行了很大部分的统一,这在本书中有一些不是新的标准,我将把自己知道的尽量指出来,更多的内容可能要参考《The C++ programming language》答案序列。

2.本书里面的练习和例子都是基于16位机器的。

3.有关#include<iostream.h>
   新的标准一般使用#include<iostream>的形式。当然,还需要配合命名空间,也就是:
#include<iostream>
using namespace std;
详细解释可以参考《The C++ programming Language》(Special Editon)中文版,裘宗燕翻译 第718页,B3.1节。

本章没有练习
......

阅读全文(3882) | 评论:0

收集Eclipse插件网站(转,来自csdn)(2005-09-10 21:18:00)

摘要:收集Eclipse插件网站

摘自 CSDN(http://blog.csdn.net/blueball/archive/2004/07/26/51821.aspx)

http://www.eclipse-workbench.com/jsp/
http://www.objectlearn.com/index.jsp
http://www.crionics.com/products/opensource/eclipse/eclipse.jsp
http://eclipse-plugins.2y.net/eclipse/index.jsp----------good
ftp://202.113.29.2/pub/eclipse/plugins/  
http://sourceforge.net/projects-------plugin project
http://vssplugin.sourceforge.net/
http://www.azzurri.jp/en/software/clay/index.jsp---------database modeling plugin
http://www.improve-technologies.com/alpha/struts-config-editor/--------plugin
http://www.sysdeo.com/eclipse/tomcatPlugin.html--tomcat的plugin和jboss的plugin 

Lombo
 http://www.objectlearn.com/
TomcatPlugin
 http://www.sysdeo.com/eclipse/tomcatPlugin.html

EasyStruts
 http://easystruts.sourceforge.net

EclipseColorer plugin 
 http://colorer.sf.net 

CVS-SSH2 Plug-in for Eclipse 
 http://www.jcr......

阅读全文(6246) | 评论:0

【经典推荐】每个JAVA初学者都应该搞懂的问题!(转帖)(2005-06-17 11:11:00)

摘要:对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。内容均来自于CSDN的经典老贴。
问题一:我声明了什么!

String s = "Hello world!";

许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。
这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句:

String string = s;

我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。

问题二:"=="和equals方法究竟有什么区别?

==操作符专门用来比较变量的值是否相等。比较好理解的一点是:
int a=10;
int b=10;
则a==b将是true。
但不好理解的地方是:
String a=new String("foo");
String b=new String("foo");
则a==b将返回false。

根据前一帖说过,对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a和b都使用了new操作符,意味着将在内存中产生两个内容为"foo"的字符串,既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用"=="操作符,结果会是false。诚然,a和b所指的对象,它们的内容都是&q......

阅读全文(2431) | 评论:0

再论林杰杰的“JAVA真是强”(2005-06-17 10:27:00)

摘要:引自本blog,林杰杰的“JAVA真是强”
原文:
class 人
{
    private String 姓名;
    private int 年龄;
    
    public 人(String 名,int 岁)
    {
        姓名 = 名;
        年龄 = 岁;
    }
    
    void 介绍()
    {
        System.out.println("我叫" + 姓名 + ",今年" + 年龄 + "岁。");
    }
    
    public static void main(String[] args)
    {
        人 林 = new 人("林杰杰",22);
        林.介绍();
    }
}

居然这样写程序也能编译运行,JAVA真是……完......

阅读全文(3436) | 评论:4

Together for Eclipse的使用(转载,来自J2ME开发网)(2005-06-15 15:22:00)

摘要:Together for Eclipse的使用
       作者:CNN 文章来源:真情流露 点击数:2504 更新时间:2005-1-25
            1、介绍
                
            UML对Java系统的设计是一个很有帮助的语言,该语言综合了面向对象的建模语言、方法以及过程,系统整体设计可以帮助我们认清整个软件的开发概貌和过程,相信学过软件工程的人都知道,优点就不多说了。
                
            Together就是Borland公司推出的一款将UML功能和IDE开发工具集成在一起的一套UML建模软件。在使用过程中可以同时看到UML图和Java源代码,修改UML图会使得源代码得到即时的同步修改,反过来,修改Java源代码也会使该代码同步地在UML图中反映出来。
            2、版本
            Together有专门的开发版本,就是standalone的,以前叫做TogetherControlCenter,这个在网上可以找......

阅读全文(13298) | 评论:0

Effective Java读书笔记(转载,来自J2ME开发网)(2005-06-15 15:14:00)

摘要:终于翻开这本James都称赞的java经典书籍了,发现比一般的英语书籍要难懂一些。但是里面的Item都是非常实用的,是java程序员应该理解的。

            Creating and Destroying Object
            Item 1:考虑用静态工厂方法替代构造器
            例如:public static Boolean valueOf(boolean b)
                 {
                      return (b?Boolean.TRUE:Boolean.FALSE);
                 }
            这样的好处是方法有名字,并且它可以复用对象,不像构造器每次调用都产生新的对象。其次它还可以返回返回类型的子类。不好的地方是如果没有public
        &nbs......

阅读全文(4186) | 评论:0