数据结构——基于顺序存储结构的图书信息表的创建和输出

输入描述
输入n+1 行,其中前n 行是n 本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第n+1 行是输入结束标志:0 0 0(空格分隔的三个0)。其中书号和书名为字符串类型,价格为浮点数类型。
输出描述
总计n+1 行,第1 行是所创建的图书表中的图书个数,后n 行是n 本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔。其中价格输出保留两位小数。
样例输入
9787302257646 程序设计基础 25.00
9787302164340 程序设计基础(第2版) 20.00
9787302219972 单片机技术及应用 32.00
9787302203513 单片机原理与应用技术 26.00
9787810827430 工业计算机控制技术——原理与应用 29.00
9787811234923 汇编语言程序设计教程 21.00
0 0 0
样例输出
6
9787302257646 程序设计基础 25.00
9787302164340 程序设计基础(第2版) 20.00
9787302219972 单片机技术及应用 32.00
9787302203513 单片机原理与应用技术 26.00
9787810827430 工业计算机控制技术——原理与应用 29.00
9787811234923 汇编语言程序设计教程 21.00

#include <iostream>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>

#define OK 1
#define Maxsize 100
#define OVERFLOW -2

using namespace std;
typedef int Status;                 //声明类型int类型为Status
typedef struct
{
   char no[20];                     //图书ISBN
   char name[50];                   //图书名字
   float price;                     //图书价格
}Book;
typedef struct
{
 Book  *elem;//指向数据元素的基地址
 int length;//线性表的当前长度
}SqList;       //他的顺序存储结构类型为SqList
int main()
{
    Status InitList(SqList &L);  //声明函数
    Status PrintList_Sq(SqList &L); //声明函数
    Status CreationList_Sq(SqList &L,char *no,char *name,float &price);//声明函数
    SqList L;                       //定义L为SqList
    InitList(L);                    //初始化L
    char no[20],name[50];           //定义no,name为char数组
    float price;                    //定义price为float
    int i=0;
    while(1)     //输入no、name、price
    {
        cin>>no>>name>>price;
        if(*no=='0'&&*name=='0'&&price==0){break;}
        CreationList_Sq(L,no,name,price);//存入书信息
        ++i;
    }
    cout<<i<<endl;
    PrintList_Sq(L);
  return 0;
}
Status InitList(SqList &L)
{
   L.elem=new Book[Maxsize];   //为顺序表分配存储空间
   if(!L.elem) exit(OVERFLOW);   //存储分配失败
   L.length=0;         //空表长度为0
   return OK;
}
Status CreationList_Sq(SqList &L,char *no,char *name,float &price)
{
    Book B;                     //定义B为Book
    strcpy(B.no,no);            //复制书号
    strcpy(B.name,name);
    B.price=price;
    L.elem[L.length]=B;         //l的elem数组存储书的信息
    L.length++;                 //每存好一本书,书总量自加1,l.length=l.length+1.单目运算
    return OK;                      //OK=1,返回真
}
Status PrintList_Sq(SqList &L)
{
    for(int i=0;i<L.length;i++)     //顺序输出每本书的信息
    {
        cout<<L.elem[i].no<<" "<<L.elem[i].name<<" ";//每本书信息
        printf("%.2f\n",L.elem[i].price);//保留两位小数
    }
    return OK;                      //OK=1,返回真
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值