习题9-4 查找书籍 (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>

/*定义结构体*/
struct book
{
	char bookname [31]; //每本书的书名(gets输入数组要在题目要求的基础上加一)
	double money; //每本书的价格
};

int main(int argc, char const *argv [] )
{
	struct book temp [10]; //结构变量(还要找最高价格最低价格需要用到结构体数组)
	int n; //书的数量
	int i; //循环变量
	double max = 0.00, min = 0.00; //最大值 和 最小值;初值分别为0.00 0.00
	int max_idx = 0, min_idx = 0; //最大值下标 和 最小值下标;初值分别为0 0(必须有不然会出错)
	
	scanf ("%d\n", &n); //输入数的数量(要把输入完的回车符吃掉,不然会出现极大错误)

	for (i = 0; i < n; i++)
	{
		/*输入书名和价格*/
		gets (temp[i].bookname);
		scanf ("%lf\n", &temp[i].money); //(要把输入完的回车符吃掉,不然会出现极大错误)

        /*如果是第一项分别赋值给最大值和最小值*/
		if (i == 0) max = min = temp[i].money;
		
        /*找最大值及其下标*/
		if (max < temp[i].money) 
		{
			max = temp[i].money;
			max_idx = i;
		}
		
        /*找最小值及其下标*/
		if (min > temp[i].money)
		{
			 min = temp[i].money;
			 min_idx = i;
		}		

	}

	/*打印价格最高和最低的书*/
	printf ("%.2lf, %s\n", max, temp[max_idx].bookname);
	printf ("%.2lf, %s\n", min, temp[min_idx].bookname);

    /*两种打印等价*/
    // printf ("%.2lf, %s\n", temp[max_idx].money, temp[max_idx].bookname);
	// printf ("%.2lf, %s\n", temp[min_idx].money, temp[min_idx].bookname);

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值