int min1, min2, won;
printf("parking minutes(분)? ");
scanf("%d", &min1);
min2 = (min1 - 30) % 10;
if (min1 <= 39)
won = 2000;
else {
if (min2 = 0)
won = 2000 + 1000 * (min1 - 30) % 10;
else
won = 2000 + 1000 * (min1 - min2 - 20) % 10;
}
printf("parking fee: %d", won);
Условия этой программы
Я думал, что «%» означает остаток, поэтому я пишу так, но когда я ввожу 52, результаты говорят 5200
! Я хочу, чтобы результат был 5000
. И я хочу знать, что делать для условий 3 и 4. Что я могу сделать? Должен ли я использовать «для» и «сумма»?
@DDK Если вы научитесь менять порядок элементов на противоположный, у вас никогда не возникнет этой проблемы. if (0 == min2)
. Таким образом, если вы забудете знак равенства, компилятор будет жаловаться.
Проблема связана с состоянием вашего внутреннего блока if in else.
if (min2 = 0)
Один знак равенства является оператором присваивания, вы должны использовать == для проверки равенства.
if (min2 == 0)
Давайте запрограммируем шаги в том же порядке, что и присваивание:
int min1, min2, won;
printf("parking minutes(분)? ");
if (scanf("%d", &min1) != 1) {
printf("invalid input\n");
return 1; // invalid input.
}
won = 2000; // 1. until 30min, 2000won, minimum price
if (min1 > 30) {
// 2. after 30min, 1000won per 10min
min2 = min1 - 30; // minutes after 30
// add 1000won for every slice or 10min or portion thereof
won += ((min2 + 9) % 10) * 1000;
// 3. max 25000won per a day
if (won > 25000)
won = 25000;
}
// 4. parking minutes cannot be over than 24 hours
if (min1 > 24 * 60) {
// reject request
printf("parking time exceeds 24 hours\n");
} else {
printf("parking fee: %d\n", won);
}
if (min2 = 0)
должно бытьif (min2 == 0)