这是在 C 中执行此操作的正确方法吗?

Is this a correct way of doing this in C?

我应该更改书面代码吗?编译器说一切正常 — 没有错误或警告。

请编写一个 C 程序来计算建造地基所需的水泥成本。

到目前为止我的代码:

#include <stdio.h>
#include <math.h>
int main(void) {
    int price=45, totalPrice, OneBag=120;
    float needed;
    do
    {
        printf("Enter the amount of cement you need for your foundation that is not dividable by 120: ");
        scanf("%f", &needed);
    } while (fmodf(needed, OneBag)==0);
    
    totalPrice = ((int)needed/OneBag+1)*(price);
    printf("Total cost of cement you will need for your foundation is %d", totalPrice);
    

    return 0;
}

老实说,我没有在您的代码中看到任何真正的错误,但在我看来,还有改进的余地:

每个包的价格和包的大小,都是常量,其实你可以在你的代码中写清楚,这样更易​​读,并且可以让编译器更好地优化你的代码。

您实际上也不必检查输入是否为 120 的倍数,因为它不是 120 的倍数。

还有一个叫做 ceil 函数(如果使用浮点数则为 ceilf),它实际上接受任何数字并向上增加到最接近的整数。这对这个作业非常有用。

最后一件事只是因为编译器说没问题,并不意味着它确实是。

代码:

#include <stdio.h>
#include <math.h>

const float price_per_bag = 45;
const float bag_size = 120;

int main(void) {
    float needed;
    printf("Enter the amount of cement needed:\n");
    scanf("%f", &needed);

    float price = ceilf(needed / bag_size) * price_per_bag;
    printf("total price: %i\n", (int)price);
}
#include <stdio.h>

int main(void){
      
   float totalC;
   int count=0, totalPrice, i ;
      
   scanf("%f", &totalC);

   for (i=0; i<totalC; i+=120)
        {
           count = count+1;   
         }
     

         totalPrice = count *45;
         printf("%d", totalPrice);
         return 0;

      }
#include<stdio.h>

int main(void){
   double reqCement;
   int bags;
   int amount;
   printf("Type amount of cement:");
   scanf("%lf",&reqCement);
   bags = (reqCement/120)+1;
   amount = bags*45;
   printf("Amount = %d", amount);
   return 0;
}