此代码旨在从“pivo.txt”中的啤酒列表中找到最昂贵的啤酒。 当它正在寻找最便宜的啤酒时,if语句被执行并且程序工作正常,但是当我将比较符号从>到<时,它从不执行。 这是一个合乎逻辑的问题还是有事可做与比较花车(铸造他们为int没有工作)如果陈述只在比较双打时有效?
#include <stdio.h>
#include <stdlib.h>
typedef struct{
char ime[50];
double kol;
double cijena;
}pivo;
char* cheap_price(pivo *p,int n)
{
int i=0,j=0;
double raz,maxraz;
maxraz = p[i].kol/p[i].cijena;
for(i=0;i<n;i++)
{
raz = p[i].cijena/p[i].kol;
printf("%lf\n",raz);
if(raz<maxraz)
{
maxraz = raz;
printf("min%lf\n",maxraz);
j=i;
}
}
return p[j].ime;
}
int main()
{
pivo *p;
int n,i;
FILE *file = fopen("pivo.txt","r");
fscanf(file,"%d",&n);
p = (pivo*)malloc(n*sizeof(pivo));
for(i=0;i<n;i++)
fscanf(file,"%s %lf %lf",p[i].ime,&p[i].kol,&p[i].cijena);
printf("\nCheapest beer is %s",cheap_price(p,n));
}
txt文件看起来像这样
9
Zlatorog 0.33 13.00
Calsberg 0.5 17.00
Ozujsko 0.5 13.00
Stella 0.33 13.00
Tuborg 0.5 15.00
Karlovacko 0.33 14.00
Guiness 0.33 18.00
Bavaria 0.25 15.00
Becks 0.33 17.00
而且从调试我在if语句中放置的printf是空的(如果从不执行)
把更多的printfs放在里面。 – OldProgrammer
首先可以请你正确缩进,其次,我认为你不需要太多的代码来证明你的观点。第三,你没有证明你的观点。 –
@ Jean-FrançoisFabre当我切换比较符号时,if语句奇迹般地不执行。我在第一句话中没有证明我的观点? –