C++PrimerPlus 第四章 复合类型(复习题含答案)

C++PrimerPlus 第四章 复合类型(复习题含答案)

1、如何声明下述数据?
a. actor是由30个char组成的数组。
b. betsie是由100个short组成的数组。
c. chuck是由13个float组成的数组。
d. dipsea是由64个long double组成的数组。

//a.
char actors[30];
//b.
short betsie[100];
//c.
float chuck[13];
//d.
long double dipsea[64];

2、使用模板类array而不是数组来完成问题1。

//a.
array<char, 30>actors;
//b.
array<short, 100>betsie;
//c.
array<float, 12>chuck;
//d.
array<long double, 64>dipsea;

3、声明一个包含5个元素的int数组,并将它初始化为前5个正奇数。

int oddly[5] = {1, 3, 5, 7, 9};

4、编写一条语句,将问题3中数组第一个元素和最后一个元素的和赋给变量even。

int even = oddly[0] + oddly[4];

5、编写一条语句,显式float数组ideas中的第2个元素的值。

cout << ideas[1] << endl;

6、声明一个char的数组,并将其初始化为字符串“cheeseburger”。

char c[13] = “cheeseburger”;

或者

char c[] = “cheeseburger”;

7、声明一个string对象,并将其初始化为字符串“Waldorf Salad”。

string s = “Waldorf Salad”;

8、设计一个描述鱼的结构声明。结构中应当包括品种、重量(整数,单位为盎司)和长度(英寸,包括小数)。

struct fish{
	char kind[20];
	int weight;
	float length;
};

9、声明一个问题8中定义的结构的变量,并对它进行初始化。

fish f{
	“trout”,
	12,
	26.25
};

10、用enum定义一个名为Response的类型,它包含Yes、No和Maybe等枚举量,其中Yes的值为1,No为0,Maybe为2。

enum Response{No, Yes, Maybe};

11、假设ted是一个double变量,请声明一个指向ted的指针,并使用该指针来显式ted的值。

double* pd = &ted;
cout << *pd << “\n”;

12、假设treacle是一个包含10个元素的float数组,请声明一个指向treacle的第一个元素的指针,并使用该指针来显示数组的第一个元素和最后一个元素。

float* pf = treacle;						//or = &treacle[0]
cout << pf[0] << “ ” << pf[9] << “\n”;		//or use *pf and *(pf + 9)

13、编写一段代码,要求用户输入一个正整数,然后创建一个动态的int数组,其中包含的元素数目等于用户输入的值。首先使用new来完成这项任务,再使用vector对象来完成这项任务。

unsigned int size;
cout << “Enter a positive integer:;
cin >> size;
int* dyn = new int[size];
vector<int> dv(size);

14、下面的代码是否有效?如果有效,它将打印出什么结果?
cout << (int*)”Home of the jolly bytes”;

是的,它是有效的。表达式“home of the jolly bytes”是一个字符串常量,因此,它将判定为字符串开始的地址。cout对象将char地址解释为打印字符串,但类型转换(int*)将地址转换为int指针,然后作为地址被打印。总之,该语句打印字符串的地址,只要int类型足够宽,能够存储该地址。

15、编写一段代码,给问题8中描述的结构动态分配内存,再读取该结构的成员的值。

struct fish
{
	char kind[20];
	int weight;
	float length;
};
fish* pole = new fish;
cout << “Enter kind of fish:;
cin >> pole->kind;

16、程序清单4.6指出了混合输入数字和一行字符串时存储的问题。如果将下面的代码:
cin.getline(address, 80);
替换为:
cin >> address;
将对程序的运行带来什么影响?

使用cin>>address将使得程序跳过空白,直接找到非空白字符为止。然后它将读取字符,直到再次遇到空白为止。因此,它将跳过数字输入后的换行符,从而避免这种问题。另一方面,它只读取一个单词,而不是整行。

17、声明一个vector对象和一个array对象,它们都包含10个string对象。指出所需的头文件,但不要使用using。使用const来指定要包含的string对象数。

#include
#include
#include
const int Str_num {10};	//or = 10
...
std::vector<std::string> vstr(Str_num);
std::array<std::string, Str_num>astr;

你可能感兴趣的:(C++PrimerPlus,c++,开发语言)