Как печатать несколько раз без использования цикла?

#c

#c

Вопрос:

Я хочу напечатать оператор n несколько раз без использования цикла.

 #include<stdio.h>
#include<conio.h>
void show(char *n,int count);
void main()
{
    int x=10;
    char name[20]="zeeshann";
    clrscr();
    show (name,10);
    getch();
}

void show(char *n,int count)
{
    while(count>0)
    {
        printf("%sn",n);
        count--;
    }
}
 

Это мой код, в котором я печатаю строку 10 раз, используя цикл while.

Как можно распечатать его 10 раз без использования while или любого цикла?

Комментарии:

1. Единственным другим вариантом является рекурсивная функция (или копировать-вставлять printf 10 раз, но, пожалуйста, не делайте этого).

2. что касается инструкции: void main() это недопустимая подпись для main() (хотя некоторые несовместимые компиляторы разрешат это.) Единственными допустимыми подписями являются: int main( void ) и int main( int argc, char *argv[] )

Ответ №1:

Вы можете сделать это с помощью рекурсивной функции.

Рекурсивная функция — это функция, которая вызывает саму себя во время выполнения. Процесс может повторяться несколько раз, выводя результат и конец каждой итерации.

Удалите цикл while из метода show() и используйте условие if .

Он будет непрерывно вызывать метод до тех пор, пока условие if не станет ложным,

 void show(char *n,int count)
{
    if(count>0)
    {
        printf("%sn",n);
        count--;
        show(n,count);
    }
}
 

Для лучшего понимания, полный код,

 #include<stdio.h>
#include<conio.h>
void show(char *n,int count);
void main()
{
    int x=10;
    char name[20]="zeeshann";
    clrscr();
    show (name,10);
    getch();
}

void show(char *n,int count)
{
    if(count>0)
    {
        printf("%sn",n);
        count--;
        show(n,count);
    }
}
 

Комментарии:

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

2. Ваш ответ был бы немного лучше с объяснением того, что вы делаете, а не только с указанием кода для копирования и вставки. Например, было бы полезно включить хотя бы упоминание о рекурсии , чтобы помочь OP (и другим) что-то искать.

Ответ №2:

 #include <stdio.h>
#include <setjmp.h>
jmp_buf buf;
int main() {
   int x = 1;
   setjmp(buf); //set the jump position using buf
   printf("KrishnaKanthn"); // Prints a name
   x  ;
   if (x <= 5)
      longjmp(buf, 1); // Jump to the point located by setjmp
      
      return 0;
}
 

Вывод:

 KrishnaKanth
KrishnaKanth
KrishnaKanth
KrishnaKanth
KrishnaKanth
 

Другой метод: многократный вызов main

 #include<stdio.h> 
int main()
{ 
   static int counter = 1; // initialized only once
   printf("KrishnaKanthn"); 
   if(counter==5) 
     return 0; 
   counter  ; 
   main(); 
}
 

Вывод:

 KrishnaKanth
KrishnaKanth
KrishnaKanth
KrishnaKanth
KrishnaKanth