Я немного удивлен, что они хотят, чтобы вы использовали break для выхода из цикла, так как вы обычно хотите, чтобы циклы заключали «естественно» (и вы обычно сохраняете разрывы для операторов switch).Примерно так должно работать, используя целочисленное деление и оператор модуля (примечание для редактирования: я использую два целых вместо одного с плавающей точкой из-за неточности с последним. Если кто-то более знающий хочет показать, как это сделать с плавающей точкой, будетбыть интересным.):
#include <stdio.h>
int main() {
int dollar, cent;
int q = 0;
int d = 0;
int n = 0;
int p = 0;
int re;
printf("Enter amount: ");
scanf(" %d.%d", &dollar, ¢);
q = dollar * 4;
re = cent;
q = q + (re / 25);
re = re % 25;
d = re / 10;
re = re % 10;
n = re / 5;
re = re % 5;
p = re;
printf("q %d d %d n %d p %d\n", q, d, n, p);
return 0;
}
Этот подход также работает, если, например, вам даны секунды и вы хотите найти min: sec из этого.Если вам дается 65 секунд, вы делаете 65/60 для минутной части (которая равна 1), а секундная часть - это только остаток от деления на 60, или 65% 60 (что составляет 5).