* 函数名称:output * 函数功能:输出显示book型结构体数组元素值 * 输出格式:(1)一行输出一本图书信息,共输出num行 * (2)每行先后输出书号、书名、作者、价格(保留小数点后2位),用逗号分隔图书信息 * (3)若形参p为空指针,则输出字串NULL * 形式参数:p,book型指针,book型一维数组首地址 * 形式参数:num,int型,图书数量 * 返 回 值:无
时间: 2024-02-17 10:12:54 浏览: 255
下面是一个实现上述功能的output函数的示例代码:
```c
#include <stdio.h>
// book型结构体定义
typedef struct {
int id; // 书号
char name[20]; // 书名
char author[20]; // 作者
double price; // 价格
} book;
// 输出book型结构体数组元素值的函数
void output(book *p, int num) {
if (p == NULL) { // 判断p是否为空指针
printf("NULL\n");
return;
}
for (int i = 0; i < num; i++) {
printf("%d,%s,%s,%.2f\n", p[i].id, p[i].name, p[i].author, p[i].price);
}
}
```
该函数接受两个参数,一个是book型指针p,另一个是图书数量num。首先判断p是否为空指针,如果是则输出“NULL”,并直接返回。如果不是空指针,则依次输出每本图书的信息,每行输出一本,输出格式为“书号,书名,作者,价格”。其中,价格保留小数点后两位。
相关问题
c语言代码:现有3本图书,每本图书的信息包括:书号、书名、作者、价格。 (1)编写input函数,实现从键盘输入若干本图书信息,存放在结构体数组中。 (2)编写output函数,遍历结构体数组,输出所有图书信息。 (3)编写findBookByID函数,实现按书号检索图书。 (4)编写findBookByName函数,实现按书名检索图书。 目前,已编写完成main函数、input函数和findBookByName函数,请编程实现output函数和findBookByID函数。程序结构及具体要求如下。 * 函数名称:findBookByID * 函数功能:按书号检索图书 * 形式参数:p,book型指针,book型一维数组首地址 * 形式参数:num,int型,图书数量 * 形式参数:id,int型,书号 * 返 回 值:返回book型指针。若没有找到图书,则返回空指针NULL;否则,仅返回第1本符合检索条件的图书 */ struct book * findBookByID(struct book *p, int num, int id){ // 请编程实现本函数
下面是实现findBookByID函数的代码:
```
struct book* findBookByID(struct book *p, int num, int id) {
int i;
for (i = 0; i < num; i++) {
if (p[i].bookID == id) {
return &p[i];
}
}
return NULL;
}
```
该函数的作用是按照书号检索图书,并返回符合条件的第一本图书的指针。函数中,p是一个book型指针,指向存放图书信息的结构体数组的首地址,num是图书的数量,id是要检索的书号。
函数实现的方法是遍历结构体数组,逐一比较每一本图书的书号是否与要检索的书号相同。如果找到符合条件的图书,则返回该图书的指针;否则返回空指针NULL。
c语言代码:#include <stdio.h> #include <string.h> typedef struct book{ int id; // 书号 char name[30]; // 书名 char author[30]; //作者 float price; //价格 }BOOK; int main(){ /* 声明函数 */ void input(struct book *p, int num); void output(struct book *p, int num); struct book * findBookByID(struct book *p, int num, int id); struct book * findBookByName(struct book *p, int num, char name[]); /* 声明变量 */ const int NUM = 3; struct book myBooks[NUM]; struct book *pBook = myBooks; BOOK *theBook; /* 为myBooks数组的所有元素赋值 */ input(pBook, NUM); /* 按ID检索图书 */ int bookID; scanf("%d", &bookID); fflush(stdin); /*清空输入缓冲区*/ theBook = findBookByID(pBook, NUM, bookID); /*按书号检索*/ output(theBook, 1); /*输出检索结果*/ /* 输出myBooks数组的所有元素值 */ output(pBook, NUM); return 0;* * 函数名称:findBookByID * 函数功能:按书号检索图书 * 形式参数:p,book型指针,book型一维数组首地址 * 形式参数:num,int型,图书数量 * 形式参数:id,int型,书号 * 返 回 值:返回book型指针。若没有找到图书,则返回空指针NULL;否则,仅返回第1本符合检索条件的图书 */ struct book * findBookByID(struct book *p, int num, int id){ // 请编程实现本函数
首先我们需要遍历整个书的数组,查找是否有书号与要查找的书号相同的书。如果找到了符合要求的书,就返回该书的指针;否则返回空指针NULL。
具体实现:
```
struct book *findBookByID(struct book *p, int num, int id){
for(int i = 0; i < num; i++){
if(p[i].id == id){
return &p[i];
}
}
return NULL;
}
```
阅读全文