作者 周咏梅
单位 广东外语外贸大学
定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的图书个数,同时逐行输出每本图书的信息。
输入格式:
输入n+1行,其中前n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第n+1行是输入结束标志:0 0 0(空格分隔的三个0)。其中书号和书名为字符串类型,价格为浮点数类型。
输出格式:
总计n+1行,第1行是所创建的图书表中的图书个数,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔。其中价格输出保留两位小数。
输入样例:
在这里给出一组输入。例如:
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
输出样例:
在这里给出相应的输出。例如:
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
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
C程序如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h> // 定义最大序列长度
#define MAXSIZE 100 // 定义书籍信息结构体
typedef struct { char id[30]; // 书籍ID char name[50]; // 书籍名称 double price; // 书籍价格
} BookInfo; // 定义顺序列表结构体
typedef struct { BookInfo Data[MAXSIZE]; // 存储书籍信息的数组 int length; // 当前列表长度 int size; // 列表的最大容量
} SeqList; // 向顺序列表中追加书籍信息
void AppendList(SeqList* list, BookInfo book); // 显示顺序列表中的书籍信息
void DispList(SeqList* list, int n); int main() { BookInfo book; // 临时存储输入的书籍信息 SeqList Information; // 定义顺序列表 Information.length = 0; // 初始化列表长度为0 Information.size = MAXSIZE; // 初始化列表最大容量为MAXSIZE int n = 0; // 记录已输入书籍的数量 // 循环读取书籍信息,直到输入ID和名称为"0",价格为0.0时结束 while (1) { scanf("%s %s %lf", book.id, book.name, &book.price); if (strcmp(book.id, "0") == 0 && strcmp(book.name, "0") == 0 && book.price == 0.0) { break; } n++; // 输入书籍数量加一 AppendList(&Information, book); // 追加书籍信息到列表 } DispList(&Information, n); // 显示列表中的书籍信息 return 0;
} // 向顺序列表中追加书籍信息
void AppendList(SeqList* list, BookInfo book) { if (list->length >= list->size) { printf("FULL!\n"); // 列表已满,打印提示信息 return; } list->Data[list->length] = book; // 将书籍信息添加到列表 list->length++; // 更新列表长度
} // 显示顺序列表中的书籍信息
void DispList(SeqList* list, int n) { printf("%d\n", n); // 打印已输入书籍的数量 for (int i = 0; i < list->length; i++) { printf("%s %s %.2lf\n", list->Data[i].id, list->Data[i].name, list->Data[i].price); // 打印列表中的每本书籍的ID、名称和价格 }
}