用c语言图书信息包括书名、出版社和价格,任意输入5个图书信息,查找书名为 C language ,修改其出版社、价格信息为 SUST,39.6 要求:使用指针指向 结构体数组的完成 。
时间: 2024-03-26 20:34:04 浏览: 99
好的,这个问题我可以回答。以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_BOOKS 5
struct book {
char name[100];
char publisher[100];
float price;
};
int main() {
struct book books[MAX_BOOKS];
struct book *ptr_book;
int i;
// 输入图书信息
for (i = 0; i < MAX_BOOKS; i++) {
ptr_book = books + i;
printf("请输入第%d本书的信息:\n", i + 1);
printf("书名:");
scanf("%s", ptr_book->name);
printf("出版社:");
scanf("%s", ptr_book->publisher);
printf("价格:");
scanf("%f", &ptr_book->price);
}
// 查找并修改图书信息
for (i = 0; i < MAX_BOOKS; i++) {
ptr_book = books + i;
if (strcmp(ptr_book->name, "C language") == 0) {
strcpy(ptr_book->publisher, "SUST");
ptr_book->price = 39.6;
break;
}
}
// 输出所有图书信息
printf("\n所有图书信息如下:\n");
for (i = 0; i < MAX_BOOKS; i++) {
ptr_book = books + i;
printf("第%d本书:\n", i + 1);
printf("书名:%s\n", ptr_book->name);
printf("出版社:%s\n", ptr_book->publisher);
printf("价格:%f\n", ptr_book->price);
}
return 0;
}
```
这个程序定义了一个结构体 `book`,其中包含了三个字段:书名、出版社和价格。然后定义了一个结构体数组 `books`,用于存储所有图书的信息。接下来使用指针 `ptr_book` 指向结构体数组中的每一个元素,依次输入每一本书的信息。输入完成后,使用一个循环遍历整个结构体数组,查找书名为 “C language” 的图书,并修改其出版社和价格信息。最后,再次遍历整个结构体数组,输出所有图书的信息。
需要注意的是,上面的代码中使用了 `strcpy` 函数将字符串拷贝到结构体字段中,这在实际开发中可能会存在安全问题。如果你使用的是 C11 标准及以上的编译器,可以使用 `strcpy_s` 函数代替 `strcpy` 函数,避免安全问题的出现。
阅读全文