Непонятная ошибка после хорошей компиляции - C (СИ)
Формулировка задачи:
#include <stdio.h>
int main(void)
{
int k = 100;
/*do
{
printf("Сколько копеек составляет сдача? ");
scanf("%i",&k);
}
while (k<1);*/
int m = 0;
do
{
if(k>25)
{
int k = k-25;
int m = m++;
}
}
while(k!=0);
printf("%i\n",m);
}Решение задачи: «Непонятная ошибка после хорошей компиляции»
textual
Листинг программы
#include <stdio.h>
int main(void)
{
int k;
do
{
printf("Сколько копеек составляет сдача? ");
scanf("%i",&k);
}
while (k<1);
int m = 0;
do
{
if(k>=25)
{
do
{
k = k-25;
m++;
//printf("%i\n",k);
//printf("%i\n",m);
}while(k>=25);
}
if(k>=10)
{
do
{
k = k-10;
m++;
//printf("%i\n",k);
//printf("%i\n",m);
}while(k>=10);
}
if(k>=5)
{
do
{
k = k-5;
m++;
//printf("%i\n",k);
//printf("%i\n",m);
}while(k>=5);
}
if(k>=1)
{
do
{
k = k-1;
m++;
//printf("%i\n",k);
//printf("%i\n",m);
}while(k>0);
}
}
while(k>0);
printf("Минимальное количество монет, необходимых для выдачи вашей сдачи, составляет %i монет.\n",m);
printf("Приходите еще!\n");
}
Объяснение кода листинга программы
- Ввод числа
kс помощью функцииscanf(%i,&k). - Использование цикла
do-whileдля повторного запроса ввода, еслиkменьше 1. - Использование условных операторов
ifдля определения диапазона, в котором находится числоk. - Использование вложенных циклов
do-whileдля вычитания изkкаждого из возможных значений и увеличения счетчикаm. - Проверка, не равен ли
kнулю, перед тем как продолжить вычитание. - Вывод значения
mс помощью функцииprintf(%i\n,m). - Вывод сообщения с помощью функции
printf(Минимальное количество монет, необходимых для выдачи вашей сдачи, составляет %i монет.\n,m). - Вывод сообщения с помощью функции
printf(Приходите еще!\n).