Нет ошибок компиляции, но не получен вывод в C - PullRequest
0 голосов
/ 26 сентября 2019

Это меня очень беспокоило.Это простая функция для определения простого числа, но я не получаю вывод на моей консоли, несмотря на то, что нет ошибок компиляции.Может кто-нибудь определить, что не так с этим кодом?

#include<stdio.h>
int isprime(int);

int main()
{
    int n;
    scanf("%d", &n);

    if (isprime(n))
        printf("Yes");
    else
        printf("No");

    return 0;
}

int isprime(int num)
{
    int flag = 1;

    for(int i = 2; i <= num/2; i++)
    {
        if(num % i == 0)
        {
            flag = 0;
            break;
        }
    }

    return flag;
}

Ответы [ 3 ]

2 голосов
/ 26 сентября 2019

С программой все в порядке.Выходные данные плохо отформатированы из-за пропущенных новых строк, поэтому, возможно, добавив их, вы сможете увидеть что-то, поскольку выходные данные могут быть в самом начале командной строки консоли.

int n;
printf("Input a number: ");
scanf("%d", &n);

if (isprime(n))
    printf("Yes\n");
else
    printf("No\n");
0 голосов
/ 26 сентября 2019

Бьюсь об заклад, вы не видите результат, но он показан.Никакой новой строки нет, и после ответа следует командная строка типа NoC:\> вместо C:\>.

0 голосов
/ 26 сентября 2019

Для начинающих функция isprime недействительна.Он возвращает 1 для не простого числа 1 .:)

И функция должна быть объявлена ​​как минимум как

int isprime( unsigned int num );

Что касается вашего вопроса, то выходной буферне очищается до тех пор, пока символ новой строки не будет найден.

Напишите вместо

if (isprime(n))
    printf("Yes\n");
else
    printf("No\n");

или

if (isprime(n))
    puts("Yes");
else
    puts("No");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...