《C++程序设计语言》(特别版)第四章答案

1.(*2)让“Hello,world”程序运行。如果程序无法按所写的形式运行,请看B.3.1节

参考解答:

 

#include <iostream>
using namespace std;
int main()
{
   cout<<"Hello,world!\n";
  return 0;
}

2.(*1)对于4.9节的每个声明做下面的事情:如果该声明不是一个定义,请为它写一个定义。如果该声明时一个定义,请改写,使它成为不是定义的声明

参考解答:略


3.(*1.5)写一个程序打印出各种基本类型,几个指针类型和几个你所选择的枚举类型的大小。使用sizeof运算符。

参考解答:

#include <iostream>
#include <typeinfo>
template <typename T>
struct Type{
 static void print()
 {
	 std::cout<<"sizeof("<<typeid(T).name()<<")="
		       <<sizeof(T)<<std::endl;
 }
};
struct Polymorph
{
	virtual ~Polymorph(){}
};
enum Bit{zero,one};
enum Intensity{black=0,brigthtest=100};
int main()
{
//基本整形类型:
	Type<bool>::print(); //有可能输出1,也有可能不是
	Type<char>::print();//输出一定是1
	Type<signed char>::print();
	Type<unsigned char>::print();
	Type<wchar_t>::print();
	Type<signed short>::print();
	Type<unsigned short>::print();
	Type<signed int>::print();
	Type<unsigned int>::print();
	Type<signed long>::print();
	Type<unsigned long>::print();
#ifdef LONGLONG_EXIT
	Type<signed long long>::print();
	Type<unsigned long long>::print();
#endif
//基本浮点型:
	Type<float>::print();
	Type<double>::print();
	Type<long double>::print();
//指针类型
	Type<int*>::print();
	Type<int(*)()>::print();  //指向函数的指针
	Type<void(Polymorph::*)()>::print();//指向成员函数的指针(在这里,是一个指向虚函数表的虚指针)
	Type<void*>::print();//有可能比int*大(很少的情况下).
//枚举类型
	Type<Bit>::print();
	Type<Intensity>::print();
	return 0;
}

4.(*1.5)写一个程序打印出字母'a'...'z'和数字'0...'9',以及它们的整数值。对所有其他可打印字符做同样的事情,再用16进制形式做同样的事情。

参考解答(我只答应了a..z,0...9)

#include <iostream>
using namespace std;
int i;
char const char_table[]=
"abcdefghijklmnopqrstuvwxyz0123456789";
int main()
{
	//十进制
	for(i=0;i<sizeof(char_table)-1;++i) //注意,char_table最后一个字符为'\0'。
	{
		cout<<char_table[i]<<'\t'
			<<dec<<int(char_table[i])<<endl;
	}
	cout<<"**********************************"<<endl;
	//十进制为默认进制,下面的这个输出将和上面一样
	for(i=0;i<sizeof(char_table)-1;++i)
	{
		cout<<char_table[i]<<'\t'
			<<int(char_table[i])<<endl;
	}
	cout<<"**********************************"<<endl;
	//十六进制
	for(i=0;i<sizeof(char_table)-1;++i)
	{
		cout<<char_table[i]<<'\t'
			<<hex<<int(char_table[i])<<endl;
	}
	return 0;
}

5.(*2)在你所用的机器上,下面类型的最大值和最小值是什么:char,short,int,long,float,double.long double 和unsigned

#include <iostream>
#include <limits>
template <typename T>
struct Type
{
	static void print()
	{
		std::cout<<typeid(T).name()<<": range is("
			<<std::numeric_limits<T>::min()<<","
			<<std::numeric_limits<T>::max()<<")\n";
	}
};
int main()
{
	Type<char>::print();
	Type<short>::print();
	Type<int>::print();
	Type<long>::print();
	Type<float>::print();
	Type<double>::print();
	Type<long double>::print();
	Type<unsigned>::print();
	return 0;
}

6。(*1)什么是可以在你的系统上的C++程序里使用的最长的局部名字?什么是可以在你系统上的C++程序里使用的最长外部名字?对于在你的名字中能够使用的字符有任何限制吗?

参考解答:

C++对一个名字里字符的个数并未强加任何控制。一个名字由字母和下划线构成。不过其首字母必须为字母(下划线也看做字母)。C++的关键字不能做用作用户定义实体的名字。



  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值