我目前正在为我正在学习的C编程课程做实验。我刚刚完成实验,运行了代码,然后检查了结果。然后,我去运行了每个实验室随附的正确答案/代码,然后我意识到我从代码中获得的答案是错误的。
我已经将我的代码与实验室的答案代码进行了数次比较,找不到任何区别,但是对于我的代码,该循环仅针对第一个浮动“价格”值而不是所有值运行。
下面是我的代码无法正常工作,然后第二段代码是实验室的正确答案代码。
#include <stdio.h>
int main()
{
float prices[]={9.99f,7.85f,15.99f,17.25f,12.00f,16.75f};
char taxable[]={'T','T','T','F','F','T'};
float total=0;
for(int i=0;i<6;i++){
if(taxable[i] == 'T'){
prices[i] = prices[i] + (prices[i]*0.065);
} else {
prices[i] = prices[i];
}
total+=prices[i];
printf("New Price: %0.2f\n", prices[i]);
printf("Total: %0.2f\n", total);
return 0;
}
}
这是我运行代码时获得的输出:
Prices: 10.64
Total: 10.64
这是实验室的正确答案代码:
#include <stdio.h>
int main ()
{
float prices[] = {9.99f,7.85f,15.99f,17.25f,12.00f,16.75f};
char taxable[] = {'T','T','T','F','F','T'};
float total=0;
for (int i=0;i<6;i++){
if (taxable[i] == 'T'){
prices[i] = prices[i] + (prices[i] * 0.065);
} else {
prices[i] = prices[i];
}
total += prices[i];
printf("New Price: $%0.2f\n", prices[i]);
printf("Total: $%0.2f\n", total);
}
}
这是我应该得到的正确输出:
New Price: $10.64
Total: $10.64
New Price: $8.36
Total: $19.00
New Price: $17.03
Total: $36.03
New Price: $17.25
Total: $53.28
New Price: $12.00
Total: $65.28
New Price: $17.84
Total: $83.12
最佳答案
您的return 0
在for循环块中-这意味着程序在第一次迭代后结束。
您应该将其移出循环,如下所示:
printf("Total: %0.2f\n", total);
}
return 0;
而不是像这样:
printf("Total: %0.2f\n", total);
return 0;
}
如您目前所拥有。
关于c - 无法弄清楚为什么C中的此循环在第一个浮点值时停止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20315540/