任何人都可以找到这个缺陷并解释下面的程序吗?我会向你介绍一下 1)使用程序中的结构来存储有关产品的信息。 2)找到最低价格并显示它。 一切正常,但输出没有给出最低值。
#include <stdio.h>
#include <malloc.h>
struct product{
int code;
char name[30];
float price;
int qty;
};
void prodata(struct product *p,int n){
int i;
for (i=0;i<n;i++){
printf("\n Enter the Item Code. : ");
scanf("%d",&p[i].code);
fflush(stdin);
printf("\n Enter the Item Name. : ");
scanf("%s",&p[i].name);
printf("\n Enter the Item Price. : ");
scanf("%f",&p[i].price);
printf("\n Enter the Item Quantity in hand. : ");
scanf("%d",&p[i].qty);
}
}
void dispdata(struct product *p, int n){
int i;
int min;
min = 0;
for ( i = 1 ; i < n ; i++ ){
if (p[i].price < p[min].price) {
min = i;
}
}
printf("\n ** The Cheapest Product ** \n");
printf("\n The Product Code : %d \n",p[min].code);
printf("\n The Product Name is : %s \n",p[min].name);
printf("\n The Product Price is : %f \n",p[min].price);
printf("\n The Product Stock : %d \n",p[min].qty);
}
main(){
struct product *p=NULL;
int n;
printf("\n Product Information. \n");
printf("\n Please Enter the Number of Items : ");
scanf("%d",&n);
while(n<=1){
printf("\n Please Enter correct number of items : ");
scanf("%d",&n);
}
p =(struct product*)malloc(sizeof(struct product)*n);
prodata(p,n);
dispdata(p,n);
return 0;
}
答案 0 :(得分:1)
if (p[i].price < min) {
min = i;
}
您将min设置为索引,而不是对象的实际价格。
答案 1 :(得分:-1)
除了Daniel的回复,请确保将i索引为0.您的陈述应该是:
for(i = 0; i < n; i++) {....
现在你缺少1个整个产品,因为你的for循环开始计数为1,并且在我迭代到(n-1)并在for循环中执行代码块之后结束