我是编码的新手,并试图弄清楚如何将代码整理到下一个小时。我能够想到的唯一方法(即我所教过的唯一方法)就是每隔一小时做一次if语句。显然这根本没有效率,我知道可能会有更简单的事情。我得知一个涉及数学方程式的线索?
到目前为止,这是我编码的内容:
#include <stdio.h>
int main()
{
//listens for value of "cost"
float cost;
printf("How much does this go-kart location charge per hour?\n");
scanf("%f", &cost);
//listens for value of "time"
float time;
printf("How many minutes can you spend there?\n");
scanf("%f", &time);
// i have to get it to round time to values of 60 (round up to next hour)
//really overcomplicated lack of knowledge workaround.txt
if (time < 60 && time > 0){
time = 1;
} else if(time > 61 && time < 70){
time = 2;
} else if(time > 71 && time < 80){
time = 3;
} else if(time > 81 && time < 90){
time = 4;
} else if(time > 91 && time < 100){
time = 5;
} else if(time > 101 && time < 160){
time = 6;
}
//etc etc
float total = cost * time;
printf("Your total will be $%f\n", total);
return 0;
}
答案 0 :(得分:2)
对于非常规间隔,可以执行类似
的操作int times[] = { 60; 70; 80; 90; 100; 160; INT_MAX }; // INT_MAX is to avoid segfault for bad input
int facts[] = { 1; 2; 3; 4; 5; 6; -1 }; // -1 is value for bad input
int it = 0;
while(times[it] < time) ++it;
int result = facts[it];
请注意,您的代码在时间= 60,70等时没有有效结果...您应该检查想要的行为
答案 1 :(得分:1)
int hour = time/60;
if(60*hour < time)
++hour;
答案 2 :(得分:1)
这是相当基础的数学。
time
/ 60会向下舍去给你一小时。
因此(time
/ 60)+ 1回合。
如果最长为6小时,则只需检查:
hour = time/60 + 1;
if (hour > 6) hour = 6;
当然我假设时间是int
。如果它是float
,那么您可以使用floor
或ceil
向上或向下舍入:
hour = floor(time/60 +1);
或
hour = ceil(time/60);
答案 3 :(得分:1)
我认为这还不错
time = (time % 60) ? time / 60 + 1 : time / 60