图书信息包括书名、出版社和价格,任意输入5个图书信息,查找书名为 C language ,修改其出版社、价格信息为 SUST,39.6 要求:使用指针指向 结构体数组的完成 。使用c语言编写
时间: 2024-03-25 21:40:21 浏览: 84
图书信息管理系统(C语言)(结构体数组)
5星 · 资源好评率100%
好的,以下是使用指向结构体数组的方式实现的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_BOOKS 5
struct book {
char name[50];
char publisher[50];
float price;
};
int main() {
struct book books[MAX_BOOKS];
struct book *p_book;
char target_name[] = "C language";
int i;
// 输入图书信息
printf("请输入 %d 本图书的信息:\n", MAX_BOOKS);
for (i = 0; i < MAX_BOOKS; ++i) {
p_book = &books[i];
printf("请输入第 %d 本图书的信息:\n", i + 1);
printf("书名:");
scanf("%s", p_book->name);
printf("出版社:");
scanf("%s", p_book->publisher);
printf("价格:");
scanf("%f", &p_book->price);
}
// 查找并修改图书信息
for (i = 0; i < MAX_BOOKS; ++i) {
p_book = &books[i];
if (strcmp(p_book->name, target_name) == 0) {
strcpy(p_book->publisher, "SUST");
p_book->price = 39.6;
printf("已修改 %s 的出版社为 %s,价格为 %.2f。\n",
p_book->name, p_book->publisher, p_book->price);
break;
}
}
if (i == MAX_BOOKS) {
printf("没有找到书名为 %s 的图书。\n", target_name);
}
return 0;
}
```
代码中定义了一个结构体 `book`,包含三个字段:书名、出版社和价格。然后定义了一个结构体数组 `books`,用于存储多个图书的信息。
在输入图书信息时,使用一个循环,遍历结构体数组,每次输入一本图书的信息。为了方便访问,使用指向结构体的指针 `p_book` 指向当前正在处理的结构体。
在查找并修改图书信息时,同样使用一个循环遍历结构体数组,每次判断当前结构体的书名是否与目标书名相同。如果找到了目标书名,就使用 `strcpy()` 和赋值语句修改出版社和价格信息,并打印修改后的信息。如果遍历完整个结构体数组都没有找到目标书名,就打印提示信息。
注意,为了使用指针指向结构体数组,我们需要定义一个指向结构体类型的指针 `p_book`,然后使用 `&books[i]` 取出结构体数组中第 `i` 个元素的地址,赋值给 `p_book`。这样,我们就可以使用 `p_book->name`、`p_book->publisher` 和 `p_book->price` 来访问当前结构体的字段了。
阅读全文