#c
#c
Вопрос:
Я пытаюсь написать программу на C, которая может принимать 10 чисел от 1 до 100. Если введены значения, выходящие за пределы диапазона, должно отображаться сообщение об ошибке.
Мне удалось написать следующий код для проверки того, находятся ли числа от 1 до 100
#include <stdio.h>
int main() {
int num1, num2, num3, num4, num5, num6, num7, num8, num9, num10;
printf("nEnter the first number : ");
scanf("%d", amp; num1);
printf("nEnter the second number : ");
scanf("%d", amp; num2);
printf("nEnter the third number : ");
scanf("%d", amp; num3);
printf("nEnter the fourth number : ");
scanf("%d", amp; num4);
printf("nEnter the fifth number : ");
scanf("%d", amp; num5);
printf("nEnter the sixth number : ");
scanf("%d", amp; num6);
printf("nEnter the seventh number : ");
scanf("%d", amp; num7);
printf("nEnter the eighth number : ");
scanf("%d", amp; num8);
printf("nEnter the nineth number : ");
scanf("%d", amp; num9);
printf("nEnter the tenth number : ");
scanf("%d", amp; num10);
if ((num1 <= 1 amp;amp; num2 <= 1 amp;amp; num3 <= 1 amp;amp; num4 <= 1 amp;amp; num5 <= 1 amp;amp; num6 <= 1 amp;amp; num7 <= 1 amp;amp; num8 <= 1 amp;amp; num9 <= 1 amp;amp; num10 <= 1) amp;amp; (num1 >= 100 amp;amp; num2 >= 100 amp;amp; num3 >= 100 amp;amp; num4 >= 100 amp;amp; num5 >= 100 amp;amp; num6 >= 100 amp;amp; num7 >= 100 amp;amp; num8 >= 100 amp;amp; num9 >= 100 amp;amp; num10 >= 100)) {
printf("good");
printf("Numbers are good");
} else {
printf("All numbers must be between 1 to 100");
}
return (0);
}
Когда я запускаю код, я получаю этот вывод «Все числа должны быть от 1 до 100», даже если числа, которые я ввожу, находятся в диапазоне от 1-100. я ожидаю, что результат будет «Числа хороши». Пожалуйста, помогите.
Комментарии:
1. Здесь было бы удобно изучить массивы и циклы.
2. Если я правильно их прочитал, вы требуете, чтобы все числа были меньше или равны единице или больше или равны 100, что невозможно.
3. Я хочу, чтобы введенные числа были от 1 до 100
4. Затем вернитесь и проверьте операторы, которые вы использовали.
5. @CollinsNjoka ты
(n >= 1) amp;amp; (n <= 100)
не(n <= 1) amp;amp; (n >= 100)
хочешь и из жалости используешь цикл для управления всеми числами в нем, а не для дублирования кода
Ответ №1:
Ваш тест неверен, вы хотите (n >= 1) amp;amp; (n <= 100)
не (n <= 1) amp;amp; (n >= 100)
Также используйте цикл для управления всеми входными данными, а не дублирующий код, представьте, что вам нужно ввести 1000 чисел.
Предложение:
#include <stdio.h>
#define N 10
int main() {
int isAllOk = 1;
int nums[N]; /* to save the values to have them available later even not used in your question */
for (int i = 0; i != N; i) {
printf("nEnter number %d : ", i 1);
if (scanf("%d", amp; nums[i]) != 1) {
fprintf(stderr, "invalid inputn");
return -1;
}
isAllOk amp;= ((nums[i] >= 1) amp;amp; (nums[i] <= 100));
}
puts((isAllOk) ? "Numbers are good" : "All numbers must be between 1 to 100");
return (0);
}
Компиляция и выполнение:
pi@raspberrypi:/tmp $ gcc -pedantic -Wall -Wextra l.c
pi@raspberrypi:/tmp $ ./a.out
Enter number 1 : 1
Enter number 2 : 2
Enter number 3 : 44
Enter number 4 : 3
Enter number 5 : 3
Enter number 6 : 3
Enter number 7 : 3
Enter number 8 : 3
Enter number 9 : 3
Enter number 10 : 3
Numbers are good
pi@raspberrypi:/tmp $ ./a.out
Enter number 1 : 111111111
Enter number 2 : 23
Enter number 3 : 3
Enter number 4 : 3
Enter number 5 : 3
Enter number 6 : 3
Enter number 7 : 3
Enter number 8 : 3
Enter number 9 : 3
Enter number 10 : 3
All numbers must be between 1 to 100
Обратите внимание, что также можно немедленно остановить, когда число не находится между 1 и 100, но это кажется несовместимым с вашим запросом.
Ответ №2:
Условие в операторе if неверно. Это должно быть x=>1
и x<=100
. А также не обязательно разделять все scanf и condition.
Ответ №3:
Вашим условием является 1<=num<=100
, а не 1>=num
и 100>=num
, поэтому решением было бы изменить if
условие следующим образом:
if (
(num1 >= 1 amp;amp; num2 >= 1 amp;amp; num3 >= 1 amp;amp; num4 >= 1 amp;amp; num5 >= 1 amp;amp; num6 >= 1 amp;amp; num7 >= 1 amp;amp; num8 >= 1 amp;amp; num9 >= 1 amp;amp; num10 >= 1) amp;amp;
(num1 <= 100 amp;amp; num2 <= 100 amp;amp; num3 <= 100 amp;amp; num4 <= 100 amp;amp; num5 <= 100 amp;amp; num6 <= 100 amp;amp; num7 <= 100 amp;amp; num8 <= 100 amp;amp; num9 <= 100 amp;amp; num10 <= 100)
) {
printf("Numbers are good");
} else {
printf("All numbers must be between 1 to 100");
}
Ответ №4:
(n <= 1) amp;amp; (n >= 100)
неверно. Это должно было быть (n >= 1) amp;amp; (n <= 100)
. Теперь вы можете улучшить свой дизайн с помощью циклов, массивов и специальных функций. Это делает ваш код более легким для чтения / понимания, а также легко модифицируемым. Добавление еще 10 значений к группе не должно означать еще 10 (рукописных) проверок, а изменение диапазона не должно означать изменения всех 20 проверок заново. Вот пример реализации:
#include <stdio.h>
#include <stdbool.h>
bool numb_in_range(int numb, int lower, int upper)
{
return (numb >= lower) amp;amp; (numb <= upper);
}
bool arry_in_range(int* arry, size_t sz, int lower, int upper)
{
for (size_t i = 0; i != sz; i)
{
if (!numb_in_range(arry[i], lower, upper))
{
return false;
}
}
return true;
}
int main(void)
{
const size_t sz = 10;
int arry[sz];
for (size_t i = 0; i != sz; i)
{
scanf("%d", arry i);
}
if (arry_in_range(arry, 10, 1, 100))
{
puts("good");
}
else
{
puts("bad");
}
return 0;
}
Ответ №5:
Вам нужно отменить все сравнения, подобные этому:
if ((num1 >= 1 amp;amp; num2 >= 1 amp;amp; ... amp;amp; num10 >= 1) amp;amp;
(num1 <= 100 amp;amp; num2 <= 100 amp;amp; ... amp;amp; num10 <= 100))
Ответ №6:
Если N — число, большее или равное 1 и меньшее или равное 100, мы обозначаем его через:
if(N >= 1 amp;amp; N <= 100)
Ответ №7:
Проблема в компараторах, потому что условие неверно.
Вы принимаете как хорошие, когда числа меньше 1 и выше 100
.
if (
(num1 >= 1 amp;amp; num2 >= 1 amp;amp; num3 >= 1 amp;amp; num4 >= 1 amp;amp; num5 >= 1 amp;amp; num6 >= 1 amp;amp; num7 >= 1 amp;amp; num8 >= 1 amp;amp; num9 >= 1 amp;amp; num10 >= 1) amp;amp;
(num1 <= 100 amp;amp; num2 <= 100 amp;amp; num3 <= 100 amp;amp; num4 <= 100 amp;amp; num5 <= 100 amp;amp; num6 <= 100 amp;amp; num7 <= 100 amp;amp; num8 <= 100 amp;amp; num9 <= 100 amp;amp; num10 <= 100)
) {
printf("good");
}