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++的关键字不能做用作用户定义实体的名字。