现有某省份21个城市的GDP数据,数据文件储存在文件”gdp_data.txt”中(文件已确保与可执行文件在同一目录下),储存格式如下: 1 ShenZhen 32387.7 1768 2 GuangZhou 28839.0 1881 3 Foshan 12698.4 961 ……依此类推 其中,每行的四项数据分别代表:城市序号、城市名称、城市GDP总量(单位为亿元)、城市常驻人口数(单位为万人)。 在先前的提问中,我们已经使用结构体储存了文件中的城市数据。 现在,请使用C++程序实现下列要求: 1.计算每个城市的人均GDP 2.输出城市人均GDP的最大值和最小值、以及对应城市的名字 注意: 1.上述代码实现需辅以注释解释每行代码的含义与作用 2.上述代码的输出结果均需辅以必要的文字说明 3.输出代码后,请详细解释代码中每一部分的含义、作用和其相关概念。
时间: 2024-03-10 21:48:31 浏览: 113
各省GDP数据,常住人口数等
好的,我会根据你的要求进行回答。下面是实现要求的C++代码:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
// 定义城市结构体
struct City {
int id; // 城市序号
string name; // 城市名称
double gdp; // 城市GDP总量(单位为亿元)
int population; // 城市常驻人口数(单位为万人)
};
int main() {
// 打开数据文件
ifstream infile("gdp_data.txt");
if (!infile) {
cout << "文件打开失败!" << endl;
return 0;
}
// 读取数据文件中的城市数据
City cities[21];
for (int i = 0; i < 21; i++) {
infile >> cities[i].id >> cities[i].name >> cities[i].gdp >> cities[i].population;
}
infile.close();
// 计算每个城市的人均GDP并输出
cout << "各城市人均GDP如下:" << endl;
for (int i = 0; i < 21; i++) {
double perGdp = cities[i].gdp * 10000 / cities[i].population; // 人均GDP计算公式
cout << cities[i].name << ":" << perGdp << "元/人" << endl;
}
// 计算人均GDP的最大值和最小值以及对应城市的名字并输出
double maxPerGdp = cities[0].gdp * 10000 / cities[0].population; // 初始化最大值和最小值
double minPerGdp = cities[0].gdp * 10000 / cities[0].population;
string maxCity = cities[0].name;
string minCity = cities[0].name;
for (int i = 1; i < 21; i++) {
double perGdp = cities[i].gdp * 10000 / cities[i].population; // 人均GDP计算公式
if (perGdp > maxPerGdp) { // 更新最大值和对应城市名字
maxPerGdp = perGdp;
maxCity = cities[i].name;
}
if (perGdp < minPerGdp) { // 更新最小值和对应城市名字
minPerGdp = perGdp;
minCity = cities[i].name;
}
}
cout << "人均GDP最大值为:" << maxPerGdp << "元/人,对应城市为:" << maxCity << endl;
cout << "人均GDP最小值为:" << minPerGdp << "元/人,对应城市为:" << minCity << endl;
return 0;
}
```
代码注释如下:
```c++
#include <iostream> // 标准输入输出头文件
#include <fstream> // 文件输入输出头文件
#include <string> // 字符串头文件
using namespace std;
// 定义城市结构体
struct City {
int id; // 城市序号
string name; // 城市名称
double gdp; // 城市GDP总量(单位为亿元)
int population; // 城市常驻人口数(单位为万人)
};
int main() {
// 打开数据文件
ifstream infile("gdp_data.txt");
if (!infile) { // 判断文件是否打开成功
cout << "文件打开失败!" << endl;
return 0;
}
// 读取数据文件中的城市数据
City cities[21]; // 定义城市数组
for (int i = 0; i < 21; i++) { // 循环读取每行数据
infile >> cities[i].id >> cities[i].name >> cities[i].gdp >> cities[i].population;
}
infile.close(); // 关闭文件
// 计算每个城市的人均GDP并输出
cout << "各城市人均GDP如下:" << endl;
for (int i = 0; i < 21; i++) {
double perGdp = cities[i].gdp * 10000 / cities[i].population; // 人均GDP计算公式
cout << cities[i].name << ":" << perGdp << "元/人" << endl;
}
// 计算人均GDP的最大值和最小值以及对应城市的名字并输出
double maxPerGdp = cities[0].gdp * 10000 / cities[0].population; // 初始化最大值和最小值
double minPerGdp = cities[0].gdp * 10000 / cities[0].population;
string maxCity = cities[0].name;
string minCity = cities[0].name;
for (int i = 1; i < 21; i++) { // 从第二个城市开始循环比较
double perGdp = cities[i].gdp * 10000 / cities[i].population; // 人均GDP计算公式
if (perGdp > maxPerGdp) { // 更新最大值和对应城市名字
maxPerGdp = perGdp;
maxCity = cities[i].name;
}
if (perGdp < minPerGdp) { // 更新最小值和对应城市名字
minPerGdp = perGdp;
minCity = cities[i].name;
}
}
cout << "人均GDP最大值为:" << maxPerGdp << "元/人,对应城市为:" << maxCity << endl;
cout << "人均GDP最小值为:" << minPerGdp << "元/人,对应城市为:" << minCity << endl;
return 0;
}
```
代码中的变量和函数含义如下:
- `City`:自定义的城市结构体,包含城市序号、城市名称、城市GDP总量和城市常驻人口数四个成员变量。
- `infile`:文件输入流,用于读取数据文件。
- `cities`:城市结构体数组,用于储存数据文件中的城市数据。
- `perGdp`:当前城市的人均GDP,由城市GDP总量和常住人口数计算得出。
- `maxPerGdp`和`minPerGdp`:人均GDP的最大值和最小值。
- `maxCity`和`minCity`:人均GDP最大值和最小值对应的城市名称。
- `ifstream`:文件输入流对象,用于从文件中读取数据。
- `if (!infile)`:判断文件是否打开成功,如果失败则输出错误信息并结束程序。
- `for`循环:用于读取数据文件中的城市数据。
- `cout`:标准输出流对象,用于输出数据。
- `return`:结束程序并返回指定值。
阅读全文