每日一题Day13 链式修改

    技术2022-07-16  44

    基于链式存储结构的图书信息表的修改

    题目描述

    定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据完成图书信息表 的创建,然后计算所有图书的平均价格,将所有低于平均价格的图书价格提高 20%,所有高于或等于平均价格的图书价格提高 10%,最后逐行输出价格修改后的图书信息。

    输入描述

    输入 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

    样例输出

    25.50 9787302257646 程序设计基础 30.00 9787302164340 程序设计基础(第2版) 24.00 9787302219972 单片机技术及应用 35.20 9787302203513 单片机原理与应用技术 28.60 9787810827430 工业计算机控制技术——原理与应用 31.90 9787811234923 汇编语言程序设计教程 25.20 /** * main函数返回值不能为void,否则会汇编出错,请使用int main(),并在最后return 0。 * 虽然VC等windows下的编译器支持,但C/C++标准中不允许使用void main()! */ #include<stdio.h> #include<stdlib.h> typedef struct node { long long int num; char name[50]; double price; struct node *next; } Book,*BookList; int main() { BookList L; Book *p,*rear; L = (Book *)malloc(sizeof(Book)); L->num=0; L->next=NULL; rear = L; double sum=0; while(1) { p=(Book *)malloc(sizeof(Book)); scanf("%lld %s %lf",&p->num,p->name,&p->price); if(p->num==0&&p->name[0]=='0'&&p->name[1]=='\0'&&p->price-0<1e-6) { break; } else { rear->next=p; rear=p; L->num++; sum+=p->price; } } rear->next=NULL; free(p); double ave=sum/L->num; printf("%.2f\n",ave); p=L->next; while(p) { if(ave - p->price <1e-6) { p->price *= 1.1; } else { p->price *= 1.2; } printf("%lld %s %.2f\n",p->num,p->name,p->price); p=p->next; } return 0; }
    Processed: 0.010, SQL: 9