定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的图书个数,同时逐行输出每本图书的信息。
输入格式:
输入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
#include<stdio.h>
#include<string.h>
typedef struct{
char no[100];
char name[50];
float price;
}Book;
typedef struct
{
Book date[100];//存储空间的基地址
int length;//图书表中当前图书个数
}SqList;
void InitList(SqList *l)//初始化顺序表
{
l->length = 0;
}
void CreationList(SqList *l,char no1[],char name1[],float price1)//向顺序表中存储数据
{
Book B;
strcpy(B.no,no1); //复制书号
strcpy(B.name,name1);
B.price = price1;
l->date[l->length] = B;
l->length++;
}
void PrintList(SqList *l)
{
printf("%d\n",l->length);
for (int i = 0; i < l->length; i++)
printf("%s %s %.2f\n", l->date[i].no,l->date[i].name,l->date[i].price);
}
int main(){
SqList l;
InitList(&l);
char no1[100];
char name1[50];
float price1;
for(int i=0;;i++){
scanf("%s %s %f",no1,name1,&price1);
if(!strcmp(no1,"0")&&!strcmp(name1,"0")&&price1==0){
break;
}
else{
CreationList(&l,no1,name1,price1);
}
}
PrintList(&l);
return 0;
}
有不好的地方请指出!!