我目前正在为我正在学习的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/

10-10 13:42