PTA 查找書籍 (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;
}

注意輸入格式

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