struct BookInfo {
string title;
string author;
string publisher;
double price;
};
以下语句定义了一个名为 bookList 的数组,它有 20 个元素,每个元素都是一个 BookInfo 结构体。BookInfo bookList[20];
数组中的每个元素都可以通过下标来访问。例如,bookList[0] 是数组中的第一个结构体,bookList[1] 是第二个结构体,依此类推。bookList[5].title
以下循环遍历数组,显示存储在每个元素中的信息:
for (int index = 0; index < 20; index++)
{
cout << bookList[index].title << endl;
cout << bookList[index].author << endl;
cout << bookList[index].publisher << endl;
cout << bookList[index].price << endl << endl;
}
因为成员 title、author 和 publisher 都是 string 对象,所以组成字符串的各个字符也可以被访问。以下语句显示 bookList [10] 的 title 成员的第一个字符:cout << bookList[10].title[0];
以下语句可将字符 t 存储在 bookList[2] 的 publisher 成员的第 4 个位置。bookList[2].publisher[3] ='t';
下面的程序将计算和显示一组员工的收入信息,它使用了一个单一的结构体数组:
// This program uses an array of structures to hold payroll data.
#include <iostream>
#include <iomanip>
using namespace std;
struct PayInfo // Define a structure that holds 2 variables
{
int hours; // Hours worked
double payRate; // Hourly pay rate
};
int main ()
{
const int NUM_EMPS = 3; // Number of employees
PayInfo workers[NUM_EMPS];// Define an array of Paylnfo structures
double grossPay;
// Get payroll data
cout << "Enter the hours worked and hourly pay rates of "<< NUM_EMPS << " employees. \n";
for (int index = 0; index < NUM_EMPS; index++)
{
cout << "\nHours worked by employee #" << (index + 1) << ":";
cin >> workers[index].hours;
cout << "Hourly pay rate for this employee: $";
cin >> workers[index].payRate;
}
// Display each employeef s gross pay
cout << "\nHere is the gross pay for each employee:\n";
cout << fixed << showpoint << setprecision(2);
for (int index = 0; index < NUM_EMPS; index++)
{
grossPay = workers[index].hours * workers[index].payRate;
cout << "Employee #" << (index + 1);
cout << ": $" << setw(7) << grossPay << endl;
}
return 0;
}
程序输出结果:
Enter the hours worked and hourly pay rates of 3 employees.
Hours worked by employee #1:10
Hourly pay rate for this employee: $9.75
Hours worked by employee #2:15
Hourly pay rate for this employee: $8.65
Hours worked by employee #3:20
Hourly pay rate for this employee: $10.50
Here is the gross pay for each employee:
Employee #1: $ 97.50
Employee #2: $ 129.75
Employee #3: $ 210.00
struct PayInfo
{
int hours; //己工作的小时数
double payRate; // 每小时收入
PayInfo (int h = 0, double p = 0.0) // 构造函数
{
hours = h;
payRate = p;
}
};
使用这个结构体声明,原程序中的数组现在可以初始化如下:PayInfo workers[NUM_EMPS] = { PayInfo(10, 9.75),PayInfo(15, 8.65),PayInfo(20, 10.50)};
请注意,初始化结构体数组中的成员的语法与初始化对象数组中的成员的语法相同。这与初始化单个结构体的语法不同。
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有