修正以下代码:#include<stdio.h> struct book { char cover[31]; double value; }; int main() { int n,i; struct book c[n]; for(i=0;i<n;i++) { scanf("%s %lf",c[i].cover,&c[i].value); } float max,min,max1,min1; max=c[0].value,min=c[0].value; max1=0,min1=0; for(i=0;i<n;i++) { if(c[i].value>max) { max1=i; } if(c[i].value<min) { min1=i; } } printf("%0.2lf %s\n",c[max].value,c[max].cover); printf("%0.2lf %s\n",c[min].value,c[min].cover); return 0; }
时间: 2024-01-29 13:02:13 浏览: 81
修正后的代码如下:
```
#include <stdio.h>
struct book {
char cover[31];
double value;
};
int main() {
int n;
printf("请输入书的数量:");
scanf("%d", &n);
struct book c[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d本书的封面和价格:", i + 1);
scanf("%s %lf", c[i].cover, &c[i].value);
}
int max = 0, min = 0;
for (int i = 1; i < n; i++) {
if (c[i].value > c[max].value) {
max = i;
}
if (c[i].value < c[min].value) {
min = i;
}
}
printf("价格最高的书是:%s,价格为%0.2lf元\n", c[max].cover, c[max].value);
printf("价格最低的书是:%s,价格为%0.2lf元\n", c[min].cover, c[min].value);
return 0;
}
```
主要修正了以下问题:
1. 在定义结构体数组时,使用了变量 n,但是 n 并没有被初始化,导致无法确定数组的大小。应该先读入 n 的值,然后再定义结构体数组。
2. 在查找最大值和最小值的过程中,max1 和 min1 的初始值应该为 0,而不是 max 和 min 的值。因为 max 和 min 是结构体数组中的元素,而不是下标。
3. 在查找最大值和最小值的过程中,应该从 1 开始遍历,因为已经将第 0 个元素作为初始值了。
阅读全文