第2章 变量和基本类型 课后习题
来源:互联网 发布:c语言编程需要什么软件 编辑:程序博客网 时间:2024/06/06 22:01
-------------------------------------------------------------------------------------------------------------------------------------------------------------
2.1
答:int , long, short 都是C++中的内置数据类型,可以把它们理解为固定大小的内存空间的别名,在不同的机器上,不
同的操作系统中,它们的大小是不同的,short在32位的机器中占2个字节,int 占4个字节,long占4个字节。
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.2
答:unsigned为定义无符号数,singed为定义有符号数,除布尔类型外,整型默认都为有符号数
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.3
答:因为short 在默认情况下都是有符号型 的,固它可以表示的最大数为2的15次方减去1:即:32767
unsigned short 时为2的16次方减去1,即:65535
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.4
答:
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.5
答:float 是单精度,double 是双精度, 它们的差别是表示数的精度不同。
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.6
答:我感觉这三者都用double来表示更好,因为这三者的运算都有小数的参加,为了保证精度的不丢失,
用double来表示更好。
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.7
答:(a), 第一个为单个字符char 型 ,第二个宽字符,它们是不同的数据类型; 第三个为字符串型的,编译器在的a的
后面默认添上空字符‘\0’, 最后一个为宽字符串型 , 后两者也不同的数据类型。
(b),第一个普通的整型字面值常量,即:它是有符号,十进制
第二个是指定它为无符号型
第三个指定它为long类型
第四个指定它为long,无符号类型
第五个为八进制表示
第六个为十六进制表示
(c),第一个为普通的浮点类型,默认为double型的
第二个指定它们float类型
第三个指定它为long类型
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.8
答:第一个为有符号整型
第二个为无答题类型
第三个为有符号浮点类型
第三个为有符号浮点类型
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.9
答:
c是非法的,因为前后两个类型不一至
d是非法的,因为1024为整型,后面不能再加上f
e是非法的,因为3.14为浮点型,后面不能再加U
f是非法的,因为如果是一个字符串的话,写成两行,要在第一行的后面加上 \
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.10
答:
#include <iostream>
int main()
{
printf("2M\n");
return 0;
}
修改后:
#include <iostream>
int main()
{
printf("2\tM\n");
return 0;
}
2.11
答:
#include <iostream>
int main()
{
int v1,v2,s=1;
std::cout<<"请输入两个数,第一个为底数,第二个为指数,计算它们的值:"<<std::endl;
std::cin>>v1>>v2;
for(int i=0; i<v2; i++)
{
s*=v1;
}
std::cout<<"最后的值为:"<<s<<std::endl;
return 0;
}
2.12
答:左值是出现在赋值语句的左边或右边,右值是出现的赋值语句的右边
变量是左值,因此可以出现在赋值语句的左边,数字字面值为右值,因此不能被赋值
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.13
答:一个赋值语句中就需要左值,如 int a; a=1; 这里的a就是一个左值。
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.14
答:a是非法的,double是C++的关键字,不能用变量名,可以改为:double_a
c是非法的,变量名只能以字母,数字,下划线组成
d是非法的,变量名不能以数字开头
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.15
答:上述定义是错误的,因为以0打头的话,编译器会认为是八进制数
要把前面的0去掉
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.16
答:第一个是非法的,auto 是关键字。
第三个是非法的,cin>>后面不能定定义
第四个是非法的,不能用连=
-------------------------------------------------------------------------------------------------------------------------------------------------------------
2.17
答:第一个初始值为一个空串
第二个如果为一个全局变量,那么它会被默认初始化为0
如果为局部变量,那么里面是一个垃圾值
第三个中,第一个没有被初始化,里面是一个垃圾值
第二个初始化为空串
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.18
答:第一个为声明一个string 类型的变量,没有给它分配内存空间
第二个为定义一个string类型的变量,并直接初始化
第三个可以看作是一个定义的变量name ,即使他前面有关键字extern
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.19
答:100
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.20
答:100 55(错了) 正解为:45
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.21
答:不合法,因为i中是for循环中定义的,它的作用域为语句作用域,当for循环执行完毕时,i就已不存在了,
最后将i输出,会出现i没有定义的错误。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.22.
答:第一个问题是程序的可读性差,100是什么意思,在上下文中并没有体现出来
第二个问题是如果程序中出现大是的这个100的值,那么当我们需要把这个100改成200时,程序的可维护性也很差
改善:交100定义为一个可读变量,并为其起一个容易记的名字
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.23
答:a中是定义只读变量,它是定义的时候就要初始化,所以第一个是不合法的
b中这样定义是合法的
c中是不合法的,cnt可以++,但只读变量sz是不可以++的
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.24
答:b是不合法的,非const引用只能绑定到与该引用同类型的对象
a中虽然这样的定义编译可以通的过,但是这样做是不符合规范的
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.25
答:
我的答案: (错)
a中的赋值是合法的,因为rval2其实是ival的一个别名,对rval2的新赋值,实际上是对ival的赋值
b是不合法的,因为const对象不能与普通的引用相关联,必须两者都为const
c也是不合法的,理由同上
d是合法的,const引用则可以绑定到不同但相关的类型的对象或绑定到右值
正确答案:
d非法,因为rval3是一个const引用,不能进行赋值
合法的赋值解释:
a,将一个double型字面值赋给int 型变量ival,发生隐式类型转换,ival得到的值为3
b将int值1赋给变量ival
c将int 值1赋给变量ival
-------------------------------------------------------------------------------------------------------------------------------------------------------------
2.26
答:
第一句:定义一个int 型变量ival,并将它赋初值为0.
第二句:定义一个const型的引用ri,并赋初值为0.
第三句:将0赋给ival,合法
第四句:试图将0赋给ri,但这是非法的,因为ri是const类型的
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.27
答:10 10
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.28
答:如果没有写分号,编译器会报错的。
-------------------------------------------------------------------------------------------------------------------------------------------------------------
2.29
答:如果用class关键字来定义一个类,那么默认情况下是private的,
通常我们用public来定义操作,用private来定义数据成员
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.30
答:
class Tel_number
{
public:
//……操作
private:
std::string country_number;
std::string city_number;
std::string phone_number;
};
class Address
{
public:
// ……操作
private:
std::string country;
std::string city;
std::string street;
std::string number;
}
class Employee
{
public:
// ……操作
private:
std::string ID:
std::string name;
char sex;
Address addr;
Tel_number tel;
}
class Company
{
public:
//……操作
private:
std::string name;
Address addr;
Tel_number tel;
}
class Address
{
public:
// ……操作
private:
std::string ID;
std::string name;
char sex;
std::string dept;
std::string major;
Address home_addr;
Tel_number tel;
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------
2.31
答:
a为定义,定义一个变量ix , 并初始化为1023
b为定义,定义一个变量iy, 但并没有初化化
c为声明,声明一个已定义过的变量 iz , 并没有给这个变量分配内存空间
c为声明,声明一个引用ri
-------------------------------------------------------------------------------------------------------------------------------------------------------------2.32
答:
a为普通的定义变量,应放在源文件中
b中定义了一个只读变量pi , 并用常量表达式来初始化它,所以它可以放在头文件中
c为定义一人普通的变量, 不能放在源文件中
d为定义一个只读变量,但它并非用常量表达式来初始化的,所以要放在源文件中
-------------------------------------------------------------------------------------------------------------------------------------------------------------
2.33
答:
-------------------------------------------------------------------------------------------------------------------------------------------------------------- 第2章 变量和基本类型 课后习题
- C++ Peimer 第2章-变量和基本类型习题答案
- 第2章 变量和基本类型
- 第2章 变量和基本类型
- 第2章:变量和基本类型
- 第2章 变量和基本类型
- 第2章 变量和基本类型
- 第2章 变量和基本类型
- 【C++ Primer】摘记--第2章 变量和基本类型
- C++Primer学习:第2章 变量和基本类型
- 复习小记----第2章 变量和基本类型
- C++ Primer笔记 第2章 变量和基本类型
- 【C++ Primer】第2章 变量和基本类型
- 【c++ primer读书笔记】【第2章】变量和基本类型
- [C++Primer]第2章.变量和基本类型
- C++ Primer 第2章 变量和基本类型
- 《c++primer》笔记 第2章 变量和基本类型
- c++ primer 第2章 变量和基本类型
- JDK1.6官方下载_JDK6官方下载_JDK1.6API(chm)下载_JDK6APICHM中文参考
- sizeof
- 时间倒计时
- Java String之StringBuilder以及它的API的详细使用方法
- 题目1079:手机键盘
- 第2章 变量和基本类型 课后习题
- linux修改数据库密码
- 【转】DataGridView列的宽度、行的高度自动调整
- 深入浅出.NET接口:阿猫阿狗和程序员
- boost::serialization::singleton单例的使用方式
- win7 跟VC++6.0兼容性处理以及安装程序VA_X_Setup1845 和行号再现
- 日接口日三巨头日时间日三天
- 论程序员如何追女孩
- Android -- Looper.prepare()和Looper.loop()