实验9-5 查找书籍 (20分)

在这里插入图片描述
题目不难,但是也有要注意的一些细节。就是比如输入n之后要读取一个换行符,而gets读取姓名之后则不需要读取换行符(gets读取一行字符和换行符之后舍弃换行符),之后scanf读取完成绩之后需要读取换行符,防止被下次循环时gets读取到。

#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
struct books{
    char name[35];
    double price;
};
int main()
{	
	int n, i; 
    scanf("%d", &n);
    getchar();
    struct books arr[n];
    double max, min;
    for (i = 0; i < n; i++){
        gets(arr[i].name);
        scanf("%lf", &arr[i].price);
        getchar();
    }
    max = arr[0].price;
    min = arr[0].price;
    for ( i = 1; i < n; i++){
        if (arr[i].price > max)
            max = arr[i].price;
        if (arr[i].price < min)
            min = arr[i].price;
    }
    for ( i = 0; i < n; i++)
        if (arr[i].price == max)
            printf("%.2f, %s\n", arr[i].price, arr[i].name);
    for ( i = 0; i < n; i++)
        if (arr[i].price == min)
            printf("%.2f, %s\n", arr[i].price, arr[i].name);
    
	
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/Mrrr_Li/article/details/107927081
9-5
今日推荐