204、基于顺序存储结构的图书信息表的创建和输出
描述
定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的图书个数,同时逐行输出每本图书的信息。
输入
输入n+1行,其中前n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第n+1行是输入结束标志:0 0 0(空格分隔的三个0)。其中书号和书名为字符串类型,价格为浮点数类型。
输出
总计n+1行,第1行是所创建的图书表中的图书个数,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔。其中价格输出保留两位小数。
输入样例 1
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00
0 0 0
输出样例 1
8
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00
AC代码(C++)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef struct // 定义一个书结构体
{
string ibsn;
string name;
double price;
}Book;
const int MaxSize = 10010; // 定义顺序表最长长度
// 1、创建一个顺序表
Book books[MaxSize];
int main()
{
// 2、初始化顺序表,此类型不必初始化
// 3、进行顺序表的建立
int n = 0; // 遍历次数
while (1)
{
cin >> books[n].ibsn >> books[n].name >> books[n].price;
if (books[n].price == 0) break; // 当输出 3 个 0 时,输出结束
n ++;
}
// 重载排序
// sort(SqList, SqList + n);
// 4、输出
cout << n << endl;
for (int i = 0; i < n; i ++)
{
cout << books[i].ibsn << " " << books[i].name << " ";
printf("%.2lf\n", books[i].price); // 题目要求
}
return 0;
}
205、基于顺序存储结构的图书信息表的排序
描述
定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据完成图书信息表的创建,然后将图书按照价格降序排序,逐行输出排序后每本图书的信息。
输入
输入n+1行,前n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第n+1行是输入结束标志:0 0 0(空格分隔的三个0)。其中书号和书名为字符串类型,价格为浮点数类型。
输出
总计n行,每行是一本图书的信息(书号、书名、价格),书号、书名、价格用空格分隔。其中价格输出保留两位小数。
输入样例 1
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00
0 0 0
输出样例 1
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787302164340 Operating-System 50.00
9787822234110 The-C-Programming-Language 38.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257646 Data-Structure 35.00
9787302219972 Software-Engineer 32.00
AC 代码
#include <iostream>
#include <cstring>
#include <algorithm> // sort函数在这个库中
using namespace std;
typedef struct // 建立书结构体
{
string ibsn;
string name;
double price;
}Book;
const int MaxSize = 10010;
Book books[MaxSize]; // 定义Book类型的顺序表
bool operator < (const Book &a, const Book &b) // 重载小于号
{
return a.price > b.price; // 由于题目要求是降序价格输出
}
int main()
{
int n = 0;
while (1) // 1、建立顺序表
{
cin >> books[n].ibsn >> books[n].name >> books[n].price;
if (books[n].price == 0) break; // 输入三个0时终止输入
n ++; // 注意这个n ++的操作需要在break语句后面
}
sort(books, books + n); // 2、利用重载特性排序
for (int i = 0; i < n; i ++) // 3、输出
{
cout << books[i].ibsn << " " << books[i].name << " ";
printf("%.2lf\n", books[i].price);
}
return 0;
}
206、基于顺序存储结构的图书信息表的修改
描述
定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据完成图书信息表的创建,然后计算所有图书的平均价格,将所有低于平均价格的图书价格提高20%,所有高于或等于平均价格的图书价格提高10%,最后逐行输出价格修改后的图书信息。
输入
输入n+1行,前n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第n+1行是输入结束标志:0 0 0(空格分隔的三个0)。其中书号和书名为字符串类型,价格为浮点数类型。
输出
总计n+1行,第1行是修改前所有图书的平均价格,后n行是价格修改后n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔。其中价格输出保留两位小数。
输入样例 1
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00
0 0 0
输出样例 1
43.88
9787302257646 Data-Structure 42.00
9787302164340 Operating-System 55.00
9787302219972 Software-Engineer 38.40
9787302203513 Database-Principles 43.20
9787810827430 Discrete-Mathematics 43.20
9787302257800 Data-Structure 68.20
9787811234923 Compiler-Principles 68.20
9787822234110 The-C-Programming-Language 45.60
AC 代码
#include <iostream>
#include <cstring>
#include <algorithm> // sort函数在这个库中
using namespace std;
typedef struct // 建立书结构体
{
string ibsn;
string name;
double price;
}Book;
const int MaxSize = 10010;
Book books[MaxSize]; // 定义Book类型的顺序表
int main()
{
int n = 0;
double sum = 0;
while (1) // 1、建立顺序表顺便求和
{
cin >> books[n].ibsn >> books[n].name >> books[n].price;
if (books[n].price == 0) break; // 输入三个0时终止输入
sum += books[n].price; // 价钱加和
n ++; // 注意这个n ++的操作需要在break语句后面
}
// 2、求平均
double ave = sum / n; // 这里由于右值中包含double类型,因此可以略精确除得到平均值
printf("%.2lf\n", ave);
for (int i = 0; i < n; i ++) // 3、输出
{
if (books[i].price < ave) books[i].price *= 1.2; // 按题目要求操作
else books[i].price *= 1.1;
cout << books[i].ibsn << " " << books[i].name << " ";
printf("%.2lf\n", books[i].price);
}
return 0;
}
207、基于顺序存储结构的图书信息表的逆序存储
描述
定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后将读入的图书信息逆序存储,逐行输出逆序存储后每本图书的信息。
输入
输入n+1行,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。其中书号和书名为字符串类型,价格为浮点数类型。
输出
总计n行,第i行是原有图书表中第n-i+1行的图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔。其中价格输出保留两位小数。
输入样例 1
8
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00
输出样例 1
9787822234110 The-C-Programming-Language 38.00
9787811234923 Compiler-Principles 62.00
9787302257800 Data-Structure 62.00
9787810827430 Discrete-Mathematics 36.00
9787302203513 Database-Principles 36.00
9787302219972 Software-Engineer 32.00
9787302164340 Operating-System 50.00
9787302257646 Data-Structure 35.00
AC 代码
#include <iostream>
using namespace std;
typedef struct // 建立书结构体
{
string ibsn;
string name;
double price;
}Book;
const int MaxSize = 10010;
Book books[MaxSize]; // 建立书结构体类型数组
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i ++) // 1、输入
cin >> books[i].ibsn >> books[i].name >> books[i].price;
for (int i = n - 1; i >= 0; i --)
{
cout << books[i].ibsn << " " << books[i].name << " ";
printf("%.2lf\n", books[i].price);
}
return 0;
}
208、基于顺序存储结构的图书信息表的最贵图书的查找
描述
定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后查找价格最高的图书,输出相应图书的信息。
输入
总计输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。其中书号和书名为字符串类型,价格为浮点数类型。
输出
总计输出m+1行,其中,第一行是最贵图书的数目(价格最高的图书可能有多本),后m行是最贵图书的信息,每本图书信息占一行,书号、书名、价格用空格分隔,其中价格输出保留两位小数。
输入样例 1
8
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00
输出样例 1
2
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
AC 代码
// 总体思路是拍完序后直接输出第一个就好(降序排列)
#include <iostream>
#include <cstring>
#include <algorithm> // sort函数在这个库中
using namespace std;
typedef struct // 建立书结构体
{
string ibsn;
string name;
double price;
}Book;
const int MaxSize = 10010;
Book books[MaxSize]; // 定义Book类型的顺序表
bool operator < (const Book &a, const Book &b) // 重载小于号
{
return a.price > b.price; // 由于题目要求是降序价格输出
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i ++) // 1、建立顺序表
cin >> books[i].ibsn >> books[i].name >> books[i].price;
sort(books, books + n); // 2、利用重载特性排序
// for (int i = 0; i < n; i ++) // 3、输出
// {
// cout << books[i].ibsn << " " << books[i].name << " ";
// printf("%.2lf\n", books[i].price);
// }
int ans = 0;
while (books[ans].price == books[0].price)
ans ++; // 记录价格同为最贵的书籍数量
cout << ans << endl;
for (int i = 0; i < ans; i ++)
{
cout << books[i].ibsn << " " << books[i].name << " ";
printf("%.2lf\n", books[0].price);
}
return 0;
}
209、基于顺序存储结构的图书信息表的最爱图书的查找
描述
定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的最爱图书的名字,查找最爱的图书,输出相应图书的信息。
输入
总计n+m+2行。首先输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。其中书号和书名为字符串类型,价格为浮点数类型。然后输入m+1行,其中,第一行是一个整数m,代表查找m次,后m行是每次待查找的最爱图书名字。
输出
若查找成功: 总计输出m*(k+1)行,对于每一次查找,第一行是最爱图书数目(同一书名的图书可能有多本),后k行是最爱图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,其中价格输出保留两位小数。 若查找失败: 只输出以下提示:抱歉,没有你的最爱!
输入样例 1
8
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00
2
Java-Programming-Language
Data-Structure
输出样例 1
Sorry,there is no your favourite!
2
9787302257646 Data-Structure 35.00
9787302257800 Data-Structure 62.00
AC 代码
// 总体思路是拍完序后直接输出第一个就好(降序排列)
#include <iostream>
#include <cstring>
#include <algorithm> // sort函数在这个库中
using namespace std;
typedef struct // 建立书结构体
{
string ibsn;
string name;
double price;
}Book;
const int MaxSize = 1010;
Book books[MaxSize]; // 定义Book类型的顺序表
bool operator < (const Book &a, const Book &b) // 重载小于号
{
return a.price > b.price; // 由于题目要求是降序价格输出
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i ++) // 1、建立顺序表
cin >> books[i].ibsn >> books[i].name >> books[i].price;
int m;
cin >> m;
while (m --)
{
string name;
cin >> name;
int cnt = 0; // 喜欢书的数量
for (int i = 0; i < n; i ++)
if (books[i].name == name)
cnt ++;
if (cnt == 0) cout << "Sorry,there is no your favourite!" << endl;
else
{
cout << cnt << endl;
for (int i = 0; i < n; i ++)
if (books[i].name == name)
{
cout << books[i].ibsn << " " << books[i].name << " ";
printf("%.2lf\n", books[i].price);
}
}
}
return 0;
}
210、基于顺序存储结构的图书信息表的最佳位置图书的查找
描述
定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的最佳位置的序号,查找该位置上的图书,输出相应图书的信息。
输入
总计n+m+2行。首先输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。其中书号和书名为字符串类型,价格为浮点数类型。然后输入m+1行,其中,第一行是一个整数m,代表查找m次,后m行每行内容为一个整数,代表待查找的图书的位置序号。
输出
输出m行 若查找成功: 输出内容为第i次查询的指定位置上的一本图书的信息(书号、书名、价格),书号、书名、价格用空格分隔,其中价格输出保留两位小数。 若查找失败: 只输出以下提示:抱歉,最佳位置上的图书不存在!
输入样例 1
8
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00
2
2
0
输出样例 1
9787302164340 Operating-System 50.00
Sorry,the book on the best position doesn't exist!
AC 代码
#include <iostream>
#include <cstring>
using namespace std;
typedef struct // 建立书结构体
{
string ibsn;
string name;
double price;
}Book;
const int MaxSize = 1010;
Book books[MaxSize]; // 定义Book类型的顺序表
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i ++) // 1、建立顺序表,注意,这里为了和位序相对,是从1开始
cin >> books[i].ibsn >> books[i].name >> books[i].price;
int m;
cin >> m;
while (m --)
{
int site; // 2、输入位置
cin >> site;
if (site < 1 || site > n) cout << "Sorry,the book on the best position doesn't exist!" << endl;
else
{
cout << books[site].ibsn << " " << books[site].name << " ";
printf("%.2lf\n", books[site].price);
}
}
return 0;
}
211、基于顺序存储结构的图书信息表的新图书的入库
描述
定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的待入库的新图书的位置和信息,将新图书插入到图书表中指定的位置上,最后输出新图书入库后所有图书的信息。
输入
总计n+3行。首先输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。其中书号和书名为字符串类型,价格为浮点数类型。之后输入第n+2行,内容仅为一个整数,代表待入库的新图书的位置序号。最后输入第n+3行,内容为新图书的信息,书号、书名、价格用空格分隔。
输出
若插入成功: 输出新图书入库后所有图书的信息(书号、书名、价格),总计n+1行,每行是一本图书的信息,书号、书名、价格用空格分隔。其中价格输出保留两位小数。 若插入失败: 只输出以下提示:抱歉,入库位置非法!
输入样例 1
7
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
2
9787822234110 The-C-Programming-Language 38.00
输出样例 1
9787302257646 Data-Structure 35.00
9787822234110 The-C-Programming-Language 38.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
输入样例 2
7
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9
9787822234110 The-C-Programming-Language 38.00
输出样例 2
Sorry,the position to be inserted is invalid!
AC 代码
#include <iostream>
#include <cstring>
using namespace std;
typedef struct // 建立书结构体
{
string ibsn;
string name;
double price;
}Book;
const int MaxSize = 1010;
Book books[MaxSize]; // 定义Book类型的顺序表
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i ++) // 1、建立顺序表,注意,这里为了和位序相对,是从1开始
cin >> books[i].ibsn >> books[i].name >> books[i].price;
int site; // 2、输入插入位置
cin >> site;
if (site < 1 || site > n)
{
cout << "Sorry,the position to be inserted is invalid!" << endl;
return 0; // 注意这里不能再运行程序
}
else
{
for (int i = n; i >= site; i --) // 倒序开始遍历,将顺序表后移
{
books[i + 1].ibsn = books[i].ibsn;
books[i + 1].name = books[i].name;
books[i + 1].price = books[i].price;
}
cin >> books[site].ibsn >> books[site].name >> books[site].price;
}
for (int i = 1; i <= n + 1; i ++)
{
cout << books[i].ibsn << " " << books[i].name << " ";
printf("%.2lf\n", books[i].price);
}
return 0;
}
212、基于顺序存储结构的图书信息表的旧图书的出库
描述
定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的待出库的旧图书的位置,将该图书从图书表中删除,最后输出该图书出库后的所有图书的信息。
输入
总计n+2行。首先输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。其中书号和书名为字符串类型,价格为浮点数类型。之后输入第n+2行,内容仅为一个整数,代表待删除的旧图书的位置序号。
输出
若删除成功: 输出旧图书出库后所有图书的信息(书号、书名、价格),总计n-1行,每行是一本图书的信息,书号、书名、价格用空格分隔。其中价格输出保留两位小数。 若删除失败: 只输出以下提示:抱歉,出库位置非法!
输入样例 1
7
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
2
9787822234110 The-C-Programming-Language 38.00
输出样例 1
9787302257646 Data-Structure 35.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00
输入样例 2
8
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00
9
输出样例 2
Sorry,the position to be deleted is invalid!
AC 代码
#include <iostream>
#include <cstring>
using namespace std;
typedef struct // 建立书结构体
{
string ibsn;
string name;
double price;
}Book;
const int MaxSize = 1010;
Book books[MaxSize]; // 定义Book类型的顺序表
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i ++) // 1、建立顺序表,注意,这里为了和位序相对,是从1开始
cin >> books[i].ibsn >> books[i].name >> books[i].price;
int site; // 2、输入插入位置
cin >> site;
if (site < 1 || site > n)
{
cout << "Sorry,the position to be deleted is invalid!" << endl;
return 0;
}
else
for (int i = site; i <= n - 1; i ++) // 遍历进行替换
{
books[i].ibsn = books[i + 1].ibsn;
books[i].name = books[i + 1].name;
books[i].price = books[i + 1].price;
}
for (int i = 1; i <= n - 1; i ++)
{
cout << books[i].ibsn << " " << books[i].name << " ";
printf("%.2lf\n", books[i].price);
}
return 0;
}
213、基于顺序存储结构的图书信息表的图书去重
描述
出版社出版的任何一本图书的书号(ISBN)都是唯一的,即图书表中不允许包含书号重复的图书。定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建(书号可能重复),然后进行图书的去重,即删除书号重复的图书(只保留第一本),最后输出去重后所有图书的信息。
输入
总计输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格(书号可能重复)。其中书号和书名为字符串类型,价格为浮点数类型。
输出
总计输出m+1行(m≤n),其中,第一行是去重后的图书数目,后m行是去重后图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,其中价格输出保留两位小数。
输入样例 1
9
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00
输出样例 1
8
9787302257646 Data-Structure 35.00
9787302164340 Operating-System 50.00
9787302219972 Software-Engineer 32.00
9787302203513 Database-Principles 36.00
9787810827430 Discrete-Mathematics 36.00
9787302257800 Data-Structure 62.00
9787811234923 Compiler-Principles 62.00
9787822234110 The-C-Programming-Language 38.00
AC 代码
#include <iostream>
#include <cstring>
using namespace std;
typedef struct // 建立书结构体
{
string ibsn;
string name;
double price;
}Book;
const int MaxSize = 1010;
Book books[MaxSize]; // 定义Book类型的顺序表
// 利用双指针算法进行去重
void Unique(Book books[], int &n) // 注意前一个参数传的是地址,后一个参数传的是引用,因此都属于地址传递
{
int length = 0;
int j = 0;
for (int i = 0; i < n; i ++)
if (!i || books[i].ibsn != books[i - 1].ibsn) // 如果不是第一个话并且和前一个不同的话,我们就将其加入到新的顺序表中
{
books[j ++] = books[i];
length ++;
}
n = length;
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i ++) // 1、建立顺序表
cin >> books[i].ibsn >> books[i].name >> books[i].price;
// 2、去重
Unique(books, n); // 传入待去重顺序表和顺序表长度
cout << n << endl;
for (int i = 0; i < n; i ++)
{
cout << books[i].ibsn << " " << books[i].name << " ";
printf("%.2lf\n", books[i].price);
}
return 0;
}