dbhllnr 2020-01-16
https://pintia.cn/problem-sets/12/problems/346
这个程序的算法不难,因为没有学透标准输入和输出,特别是gets()函数。如果不用getchar()读取多余的‘\n‘,程序就会运行错误。
#include <stdio.h>
#include <stdlib.h>
struct book
{
char title[31];
double price;
};
int main(void)
{
int i, n, min, max;
struct book *p;
scanf("%d", &n);
p = (struct book *)calloc(n, sizeof(struct book));
for (i = 0; i < n; i++)
{
getchar();
gets((p+i)->title);
scanf("%lf", &((p+i)->price));
}
min = max = 0;
for (i = 1; i < n; i++)
{
if ((p + i)->price > (p + max)->price)
{
max = i;
}
if ((p + i)->price < (p + min)->price)
{
min = i;
}
}
printf("%.2f, %s\n", (p + max)->price, (p + max)->title);
printf("%.2f, %s\n", (p + min)->price, (p + min)->title);
free(p);
return 0;
}