Выполнение кода принимает ввод, но ничего не возвращает - PullRequest
0 голосов
/ 12 января 2020

Как я могу получить вывод в этом коде? Как вы можете видеть вопрос для кода, который я написал в комментариях. Это написано в C.

/*To print prime numbers from n1 to n2 where n1 and n2 are input by user and n1<n2*/
    //please solve this code, i am stuck
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
        int n1, n2, i, j;
        printf("Enter two numbers");
        scanf("%d\t%d\n", &n1, &n2);
        printf("The prime numbers in betwn %d and %d are:\n", n1, n2);
        for (i = n1; i <= n2; i++)
        {
            for (j = 2; j < i; j++)
            {
                if (i % 2 == 0)
                {
                    continue;
                }
            }
            if (i = j)
            {
                printf("%d\t", i);
            }
        }
        getch();
    }

Ответы [ 2 ]

0 голосов
/ 20 января 2020

Чтобы добавить больше деталей :

Во-первых, я согласен с dev7060 и спасибо ему. Есть два аспекта, на которые вы должны обратить внимание:

1) %d\t%d\n означает, что вы должны ввести три параметра в поток данных. Вы можете видеть это, что я проверял на моей стороне.

enter image description here

Поэтому, пожалуйста, попробуйте это как dev7060 сказал:

scanf("%d%d", &n1, &n2);

И примечание , когда вы вводите один параметр, сначала нажмите пробел, а затем введите второй параметр. %d%d может захватить две цифры во входном потоке перед вводом любым пробелом, таким как клавиша TAB или пробел, или клавиша ввода. Поэтому, когда вы вводите параметры, вы можете получить их, набрав между ними символ интервала.

2) i=j означает операцию присваивания, а не операцию сравнения, и она всегда возвращает true. Вы должны использовать if(i==j).

Пожалуйста, обратитесь к этому:

#include <iostream>
#include <stdio.h>
#include <conio.h>

int main()
{
    int n1, n2, i, j;
    printf("Enter two numbers");
    scanf("%d%d", &n1, &n2);
    printf("The prime numbers in betwn %d and %d are:\n", n1, n2);
    for (i = n1; i <= n2; i++)
    {
        for (j = 2; j < i; j++)
        {
            if (i % 2 == 0)
            {
                continue;
            }
        }
        if (i == j)
        {
            printf("%d\t", i);
        }
    }
    getch();
}

Кроме того , когда вы сталкиваетесь с этими проблемами в VS:

ошибка C4996: 'scanf': эта функция или переменная может быть небезопасной. ошибка

ошибка C4996: 'getch': имя POSIX для этого элемента устарело.

Это ошибки компилятора, и вы должны использовать scanf_s() вместо scanf() и использовать _getch() вместо getch(). Вы можете сослаться на это .

0 голосов
/ 12 января 2020
scanf("%d\t%d\n", &n1, &n2);

Кажется, проблема здесь. Ввод должен быть предоставлен так же, как указано в формате scanf (). Для простоты я предлагаю изменить его на следующее:

scanf("%d %d", &n1, &n2);

Еще одна вещь: if (i = j), это должен быть оператор сравнения вместо присваивания.

Поскольку вы пытаетесь напечатать простые числа в диапазон, логика / подход также кажется неправильным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...