查找书籍 (20分)

查找书籍 (20分)
给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。

输入格式:
输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。

输出格式:
在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。

输入样例:
3
Programming in C
21.5
Programming in VB
18.5
Programming in Delphi
25.0

输出样例:
25.00, Programming in Delphi
18.50, Programming in VB

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

struct books
{
    char name[31];//字符数组最好要多留一个空位出来,用来存储'\0'!!!
    double price;
} bookinf[10];

int main()
{
    struct books bookinf[10];
    int x,i,a=0,b=0;//将a,b初始化为0,这样就可以在x=1时(也就是只输入了一本书籍的信息时),输出的max和min都是[0](唯一输入的那本书的信息)
    double max,min;
    scanf("%d",&x);
    for(i=0;i<x;i++)
    {
        scanf("\n");//要单独输入一个换行,否则输入的字符串无法存储到字符变量中
        gets(bookinf[i].name);//gets能够读入带空格的字符串,而%s只能读入单个单词、一遇空格就结束
        //bookinf[i].name  [i]在bookinf(定义的结构体变量)后面!!!,不是在name后面
        scanf("%lf",&bookinf[i].price);//输入数字时,要加&取址符

    }
    min=bookinf[0].price;
    max=bookinf[0].price;
    //这里最好min,max的初值赋为数组中的第一个
    for(i=0; i<x; i++)
    {
        if(bookinf[i].price>max)
        {
            max=bookinf[i].price;
            a=i;
        }

    }
    for(i=0; i<x; i++)
    {
        if(bookinf[i].price<min)
        {
            min=bookinf[i].price;
            b=i;
        }
    }
    //printf("\n");
    printf("%.2f, %s\n",max,bookinf[a].name);
    printf("%.2f, %s\n",min,bookinf[b].name);
    return 0;
}

注意输入格式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章