查找書籍 (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;
}
注意輸入格式