Я согласен с ответом NetVipeC.
Я хотел бы добавить примечание, которое, вероятно, выходит за рамки вашего назначения, но может помочь вам создать лучший код в будущем:
Ваш код страдает от code duplication. Чтобы устранить это, я бы создал функцию и вызывал эту функцию несколько раз с разными аргументами. Этот процесс называется code reuse. повторное использование кода необходимо для написания более сложных программ.Код:
// a user-defined function that counts the number of coins with a specific value used
int count_number_of_coins(int amount_left, int coin_value) {
int count = 0;
while(amount_left >= coin_value) {
count++;
amount_left -= coin_value;
}
return count;
}
int main(void) {
float amount = 0;
int cents = 0;
int count = 0;
int amount_left = 0;
int coin_values[] = {25, 10, 5, 1}; // an array of ints that hold the values of the coins in cents.
int i;
amount = .30;
cents = (int)round(amount * 100);
printf("%d", cents);
amount_left = cents;
for(i=0; i<4; i++) {
int current_count = count_number_of_coins(amount_left, coin_values[i]);
amount_left -= current_count*coin_values[i];
count += current_count;
}
printf("You get %d coins\n", count);
}
Я знаю, что теперь этот код может выглядеть странным. Я использовал несколько ключевых функций C language
, которые вы, вероятно, скоро узнаете: user-defined function
, array
и for loop
.
Надеюсь, это поможет. Удачи вам в учебе!
Edit:
Если вы не хотите использовать определенную пользователем функцию, вы можете избежать дублирования кода без него. В основном вы просто заливаете содержимое функции внутри основной функции (и изменяете имена переменных):
int main(void) {
float amount = 0;
int cents = 0;
int count = 0;
int amount_left = 0;
int coin_values[] = {25, 10, 5, 1}; // an array of ints that hold the values of the coins in cents.
int i;
amount = .30;
cents = (int)round(amount * 100);
printf("%d", cents);
amount_left = cents;
for(i=0; i<4; i++) {
while(amount_left >= coin_values[i]) {
count++;
amount_left -= coin_values[i];
}
}
printf("You get %d coins\n", count);
}
Печать 'count' вместо' amount_left'? –
Было бы понятнее, если бы вы написали 'while (cents> = 25) ...', не так ли? (Fortran II требовал такого рода сравнения, которое вы показываете, всегда сравнивая с нолем, Fortran IV - он же Fortran 66). Кроме того, есть полезный оператор, написанный '/' и другой написанный '%', который может сделать это лучше , –
@PatriceGahide Спасибо! но все равно я не получаю вывод. – Shyam