用c语言定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据完成图书信息表的创建,然后计算所有图书的平均价格,将所有低于平均价格的图书价格提高20%,所有高于或等于平均价格的图书价格提高10%,最后逐行输出价格修改后的图书信息。
时间: 2024-09-13 08:12:37 浏览: 59
首先,我们需要定义一个图书信息的结构体,包含书号、书名和价格三个字段。然后,我们可以创建一个顺序表(数组)来存储多本图书的信息。接下来,计算所有图书的平均价格,并根据平均价格调整每本图书的价格。最后,输出调整后的图书信息。
下面是一个简单的C语言实现示例:
```c
#include <stdio.h>
#include <string.h>
// 定义图书信息结构体
typedef struct {
int book_id; // 书号
char book_name[50]; // 书名
float price; // 价格
} Book;
// 函数声明
void inputBooks(Book books[], int *book_count);
void calculateAndAdjustPrices(Book books[], int book_count);
void printBooks(const Book books[], int book_count);
int main() {
int book_count; // 图书数量
Book *books = NULL; // 动态分配图书信息数组
// 读入图书信息并创建图书信息表
inputBooks(books, &book_count);
// 计算所有图书的平均价格并调整价格
calculateAndAdjustPrices(books, book_count);
// 输出调整后的图书信息
printBooks(books, book_count);
// 释放动态分配的内存
free(books);
return 0;
}
// 读入图书信息
void inputBooks(Book books[], int *book_count) {
printf("请输入图书数量: ");
scanf("%d", book_count);
books = (Book *)malloc(*book_count * sizeof(Book));
for (int i = 0; i < *book_count; ++i) {
printf("请输入第 %d 本图书的信息(书号 书名 价格): ", i + 1);
scanf("%d %s %f", &books[i].book_id, books[i].book_name, &books[i].price);
}
}
// 计算平均价格并调整图书价格
void calculateAndAdjustPrices(Book books[], int book_count) {
float total_price = 0.0;
for (int i = 0; i < book_count; ++i) {
total_price += books[i].price;
}
float average_price = total_price / book_count;
for (int i = 0; i < book_count; ++i) {
if (books[i].price < average_price) {
books[i].price *= 1.2; // 低于平均价格的图书提高20%
} else {
books[i].price *= 1.1; // 高于或等于平均价格的图书提高10%
}
}
}
// 输出图书信息
void printBooks(const Book books[], int book_count) {
printf("\n调整后的图书信息:\n");
for (int i = 0; i < book_count; ++i) {
printf("书号:%d, 书名:%s, 价格:%.2f\n", books[i].book_id, books[i].book_name, books[i].price);
}
}
```
这段代码实现了题目中的要求,但是请注意,这个示例没有处理输入验证和异常处理,实际使用时应当增加这些重要特性。
阅读全文