实验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;
}