#c
#c
Вопрос:
Итак, я новичок в программировании на C. Цель этой программы — использовать функцию для нахождения наибольшего делимого числа. Должны быть заданы три числа, и ответом должно быть число, которое больше первого числа и меньше второго числа, и должно быть наибольшим числом между ними, которое можно разделить равномерно на третье число.
#include <stdio.h>
#include <stdlib.h>
int my_function(int first, int second, int third) {
int i, answer;
for (i = second; i <= 0; i--) {
if (i < first || i > third) {
answer = 0;
break;
}
if (i % third == 0 amp;amp; i != 0 amp;amp; i > first)
answer = i;
}
return answer;
}
int main() {
printf("enter number one:n");
int one, two, three, final;
scanf("%d", amp;one);
printf("enter number twon");
scanf("%d", amp;two);
printf("enter number threen");
scanf("%d", amp;three);
final = my_function(one, two, three);
printf("the number is %d", final );
return 0;
}
Эта программа не работает. Может кто-нибудь помочь мне с моей ошибкой?
Комментарии:
1. По крайней мере
printf("the number is %dn", j);
… Я не углублялся в ваш код. За исключением того, чтоfinal
это недопустимый тип C.2. Пожалуйста, сделайте отступ в коде и удалите ненужные пустые строки.
3. «эта программа не работает» => Пожалуйста, сообщите нам, чего вы ожидаете, и что вы получаете вместо этого. Каков ваш тестовый пример?
4. Для этого вам не нужен цикл. Используйте это наибольшее кратное
a
не больше, чемb
a * (b / a)
для положительных чисел.
Ответ №1:
Ваша функция не работает по нескольким причинам:
- тест цикла всегда ложен, если
second
это положительное число. - тест
i > third
вызовет досрочный выход из цикла без уважительной причины. - когда вы найдете делимое число, вам следует выйти из цикла.
Вот модифицированная версия:
#include <stdio.h>
#include <stdlib.h>
int my_function(int first, int second, int third) {
int i;
for (i = second - 1; i > first; i--) {
if (i % third == 0)
return i;
}
return 0;
}
int main() {
int one = 0, two = 0, three = 0, final;
printf("enter number one:n");
scanf("%d", amp;one);
printf("enter number twon");
scanf("%d", amp;two);
printf("enter number threen");
scanf("%d", amp;three);
final = my_function(one, two, three);
printf("the number is %dn", final);
return 0;
}
Комментарии:
1. привет, спасибо за ваш ответ. причина финала не в виде клавиатуры, а в виде целочисленного имени.