it-roy-ru.com

Печать от 1 до 1000 без цикла или условных обозначений

Задача: печатать числа от 1 до 1000 без использования каких-либо циклов или условных операторов. Не просто пишите операторы printf() или cout 1000 раз.

Как бы вы сделали это, используя C или C++?

323
Saurabh Gokhale

Я не думаю, что это "вопрос с подвохом". , , "?:" не является условным, это оператор.

Поэтому используйте рекурсию и оператор?:, Чтобы определить, когда остановиться?

int recurse(i)
{
   printf("%d\n", i);
   int unused = i-1000?recurse(i+1):0;

}

recurse(1);

Или по аналогичной извращенной линии мышления. , , второе предложение в условии "&" выполняется только в том случае, если первое значение истинно. Итак, повторить что-то вроде этого

i-1000 & recurse(i+1);

Возможно, интервьюер считает это выражением, а не условным.

0
Frank Merrow

Вы можете использовать System() для печати от 1 до 1000 (с помощью с помощью команды DOS)

 include <process.h>
 void main()
 {
     system("cmd.exe /c for /l %x in (1, 1, 1000) do echo %x" );
 }

Запустите . Exe (исполняемый файл) файл вашей программы, который отображает от 1 до 1000

ПРИМЕЧАНИЕ: протестировано в WINDOWS

0
Javed Akram

Я не собираюсь писать код, а просто идею. Как насчет создания потока, который печатает число в секунду, а затем другой поток уничтожает первый поток через 1000 секунд?

примечание: первый поток генерирует числа по рекурсии.

0
Kay Chan

я думаю, что этот код работает совершенно правильно, и его легко понять, вы можете напечатать любой, например, от 1 до 100 или от 1 до конечного диапазона. просто вставьте его в i и передайте в функцию вызова.

int main()
{
    int i=1;
    call(i,i);
}

void call(int i,int j)
{
    printf("%d",i);
    sleep(1); // to see the numbers for delay
    j /= (j-1000);

    j = ++i;

    call(i,j);
}

поэтому, когда j равен 1000, он делится на ноль, и он напрямую выходит из программы, которая моя идея напечатать числа

или гораздо более простой код ..

int main()
{
    static int i = 1;
    static int j = 1;
    printf("%d", i);
    sleep(1);
    j = ++i;
    j /= (j-1000);
    main();
}
0
jack