1.如何声明下述数据?
a.actor是由30个char组成的数组。
char actor[30];
b.betsie是由100个short组成的数组。
short betsie[100];
c.chuck是由13个float组成的数组。
flaot chuck[13];
d.dipsea是由64个long double组成的数组。
long double dipsea[64];
2.使用模板类array而不是数组来完成问题1。
a.array
b.array
c.array
d.array
3.声明一个包含5个元素的int数组,并将它初始化为前5个正奇数。
int a[5] = {1,3,5,7,9};
4.编写一条语句,将问题3中数组第一个元素和最后一个元素的和赋给变量even。
int even = a[0] + a[4];
5.编写一条语句,显示float数组ideas中的第2个元素的值。
cout << ideas[1] << endl;
6.声明一个char的数组,并将其初始化为字符串“cheeseburger”。
char a[] = "cheeseburger";
7.声明一个string对象,并将其初始化为字符串“Waldorf Salad”。
string str1 = "Waldorf Salad";
8.设计一个描述🐟的结构说明,结构中应当包括品种、重量(整数,单位为盎司)和长度(英寸,包括小数)。
- struct fish
- {
- char variety[20];
- int weight;
- double length;
- };
9.声明一个问题8中定义的结构的变量,并对它进行初始化。
- fish a =
- {
- "trout";
- 2;
- 3.25;
- };
10.用enum定义一个名为Response的类型,它包含Yes、No和Maybe等枚举量,其中Yes的值为1,No为0,Maybe为2。
enum Response{Yes,No,Maybe};
11.假设ted是一个double变量,请声明一个指向ted的指针,并使用该指针来显示ted的值。
- double *p = &ted;
- cout << *p << endl;
12.假设treacle是一个包含10个元素的float数组,请声明一个指向treacle的第一个元素的指针,并使用该指针来显示数组的第一个元素和最后一个元素。
- float * p = treacle;
- cout << p[0] << " " << p[9] << endl;
- //cout << *p << " " << *(p + 9) << endl;
13.编写一段代码,要求用户输入一个整数,然后创建一个动态的int数组,其中包含的元素数目等于用户输入的值。首先使用new来完成这项任务,再使用vector对象来完成这项任务。
- unsigned int size;//无符号类型,不能存储负数值,优点是可以增大变量能够存储的最大值。
- cout << "Enter a positive integer: ";
- cin >> size;
- int *dyn = new int [size];//使用new创建动态数组
- vector<int> dv(size);//使用vector对象完成
14.下面的代码是否有效?如果有效,它将打印出什么结果?
cout << (int *) "Home of the jolly bytes";
- #if 1
- #include
- using namespace std;
-
- int main()
- {
- cout << (int *) "Home of the jolly bytes";
-
- system("pause");
- return 0;
- }
- #endif
由以上运行结果可以看到,上述代码有效。 "Home of the jolly bytes"是一个字符串常量,因此,它将被判定为字符串开始的地址。cout将char地址解释为打印字符串,但是如果要显示字符串的地址,则必须将这种指针强制转换为另一种指针类型,如int*,即(int*)将地址转换为int指针,然后作为地址被打印。
15.编写一段代码,给问题8中描述的结构动态分配内存,再读取该结构的成员的值。
- struct fish
- {
- char variety[20];
- int weight;
- double length;
- };
- fish *p = new fish;
- cout << "Enter kind of fish: ";
- cin >> p -> variety;
- cout << "Enter weight of fish: ";
- cin >> p -> weight;
- cout << "Enter length of fish: ";
- cin >> p -> length;
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};
- std::vector
vstr(str_num) ; - std::array
astr;