无法弄清楚为什么C中的循环在第一个浮点值上停止

use*_*015 -2 c arrays for-loop

我目前正在为我正在学习的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;
}
}
Run Code Online (Sandbox Code Playgroud)

这是我运行代码时得到的输出:

Prices: 10.64
Total: 10.64
Run Code Online (Sandbox Code Playgroud)

这是实验室的正确答案代码:

#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);

}

}
Run Code Online (Sandbox Code Playgroud)

这是我应该得到的正确输出:

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
Run Code Online (Sandbox Code Playgroud)

Tom*_*ese 9

return 0在for循环块中 - 这意味着程序在第一次迭代后结束.

你应该将它移出循环,如下所示:

    printf("Total: %0.2f\n", total);
}

return 0;
Run Code Online (Sandbox Code Playgroud)

而不是像这样:

    printf("Total: %0.2f\n", total);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

就像你现在拥有它一样.