第四章
1.如何声明下述数据?
a. actor是由30个char组成的数组
b.betsie是由100个short组成的数组
c.chuck是由13个float组成的数组
d.dipsea是由64个long double组成的数组
2.使用模板类array而不是数组来完成问题1。
3.声明一个包含5个元素的int数组,并将它们初始化为前5个正奇数。
4.编写一条语句,将问题3中数组第一个元素和最后一个元素的和赋给变量even
5.编写一条语句,显示float数组ideas中的第2个元素的值
6.声明一个char的数组,并其初始化为字符串中“cheeseburger”
7.声明一个string对象,并将其初始化为字符串"WaldorfSalad"。
8.设计一个描述鱼的结构声明。结构中应当包括品种,重量(整数,单位为蛊司)和长度(英寸,包括小数)
struct Fish
{
std::string category;
int weight;
float length;
};
9.声明一个问题8中定义的结构的变量,并对它进行初始化。
Fish fish
{
"fish",
12,
26.3
};
10.用enum定义一个名为Response的类型,它包含Yes, No 和Maybe等枚举量,其中Yes的值为1,No为0,Maybe为2
enum Response
{
Yes, No, Maybe
};
11.假设ted是一个double变量,请声明一个指向ted的指针,并使用该指针来显示ted的值
double ted = 3.13;
double *ptr = &ted;
ptr = &ted;
std::cout << *ptr << std::endl;
12.假设treacle是一个包含10个元素的float数组,请声明一个指向treacle的第一个元素的指针,并使用该指针来显示数组的第一个元素和最后一个元素
float treacle[] = { 1.2, 3.4, 5.6, 7.8, 9.0, 2.8, 4.6, 6.4, 8.2, 0.9 };
float* ptr = treacle;
std::cout << *(ptr) << " " << *(ptr + 9) << std::endl;
13.编写一段代码,要求用户输入一个正整数,然后创建一个动态的int数组,其中包含的元素数目等于用户输入的值。首先使用new来完成这项任务,再使用vector对象来完成这项任务。
unsigned int n; //无符号表示正整数
std::cout << "Enter a positive integer";
std::cin >> n;
int *p = new int [n];
delete[] p;
std::vector<int> ret(n);
14.下面的代码是否有效?如果有效,它将打印出什么结果?
cout << (int*)"Home of the jolly bytes";
有效,表达式“Home of the jolly bytes” 是一个字符串常量,因此,他表示字符串开始的地址
15.编写一段代码,给问题8中描述的结构动态分配内存,再读取该结构的成员的值
struct Fish
{
std::string category;
int weight;
float length;
};
Fish * pole = new Fish;
std::cout << pole->length;
16.程序清单4.6指出了混合输入数字和一行字符串时存储的问题。如果将下面的代码:
cin.getline(address, 80);
替换为
cin >> address;
将对程序的运行带来什么影响?
使用cin >> address将使得程序跳过空白,知道找到非空白字符为止,然后将读取字符,知道遇到空白为止。因此他将跳过数字输入后的换行符,从而避免这种问题。另一方吧,它只读取一个单词,而不是整行。
17.声明一个vector对象和一个array对象,它们都包含10个string对象。指出所需的头文件,但不使用using.使用const来指定要包含的string对象数。
#include<vector>
#include<string>
#include<array>
const int N = 10;
std::vector <std::string> ret(N);
std::array<std::string, N> res;