2016-09-26 3 views
-3

Я сделал простую программу на C, которая вычисляет факториал числа, но в конце я хочу запустить программу (снова). Вместо того, чтобы «нажимать любую клавишу для продолжения», я хочу, чтобы она показывала «нажмите любую клавишу, чтобы снова найти факториал числа».Я сделал простую программу на C, которая вычисляет факториал числа

код:

#include<stdio.h> 
int main() 
{ 
    int facto, i, m ; 
    m=1 ; 
    printf("Ener a Value : "); 
    scanf("%d", &facto) ; 
    for(i=facto-1 ; i>m ; i--) 
     facto *= i ; 
    printf("My Reg num:SP-16/BBS/033\nFactorial of the number : =%d\n", facto); 
    system ("pause") ; 
} 

ответ

3

"нажмите любую клавишу для продолжения"

Эта линия идет от system(pause). Если вы хотите:

1 .. найти другой факторный

2 .. печать другой Сообщ

вы должны использовать цикл и Printf, как этот

#include<stdio.h> 
int main() 
{ 
    int facto, i, m ; 
    m=1 ; 
    printf("Ener a Value : "); 
    while(0 < scanf("%d", &facto) && facto > 0){ 
    for(i=facto-1 ; i>m ; i--) 
     facto *= i ; 
    printf("My Reg num:SP-16/BBS/033\nFactorial of the number : =%d\n",facto); 
    printf("press any key to find factorial of a number again : "); 
    } 
    return 0; 
} 
+1

Как вы завершить программу показали? Является ли прерывание или эквивалент единственным значимым способом? Код должен, по крайней мере, проверять возвращаемое значение из 'scanf()', чтобы он не переходил в бесконечный цикл, если пользователь вводит 'a' или указывает EOF. –

+0

@JonathanLeffler Я пытался сохранить программу как можно более похожую на OP. Вот почему я не проверял возвращаемое значение scanf и просто объяснил в конце один из вариантов завершения цикла. Пока пользователь вводит «правильные» данные, это должно работать просто отлично – CIsForCookies

+1

Я согласен с моим первоначальным вопросом: как завершить эту программу? На одном уровне хорошо придерживаться исходного кода, но с другой стороны, вы меняете вещи так, что он будет бесконечно зацикливаться на ошибке, тогда как оригинал не будет. На вас лежит ответственность за то, чтобы такие ошибки не вызывали таких проблем, как бесконечный цикл. Итак, вы должны исправить код, чтобы дать полезный ответ. –

0

Прежде всего , позвольте мне указать, что ваш вопрос по-прежнему остается неясным. Если вы имели в виду, что хотите постоянно запускать программу, пока пользователь хочет, тогда я предлагаю ввести код поиска факториалов внутри цикла do-while. Условие while будет основано на переменной выбора. Только когда переменная «choice» получает вход «n» (поскольку программа должна заканчиваться в какой-то момент), код перестанет повторяться.

#include <stdio.h> 

int main(void) { 
int facto, i, m ; 
char choice='y'; 

do{ 
    printf("Ener a Value : "); 
    scanf("%d", &facto); 
    m=1 ; 
    for(i=facto-1 ; i>m ; i--) 
    facto *= i ; 

    printf("My Reg num:SP-16/BBS/033\nFactorial of the number : =%d\n",facto); 
    printf("Press any key to find factorial of a number again"); 
    scanf("%c", &choice); 
    } while(choice!='n'); 

} 
+0

'scanf («% c », & choice);' не ждет «Нажмите любую клавишу». – BLUEPIXY

+0

Обратите внимание, что вам нужно использовать 'scanf («% c », & choice)', чтобы пропустить новую строку слева, читая номер. Вам также нужно беспокоиться о том, что произойдет, если пользователь указывает EOF - похоже, ваша программа будет шумной и займет много времени, чтобы остановиться. –

0

Ваш код очень прост и понятен. Я ничего не делаю, чтобы приспособить это.

Однако, если вы хотите не Rerun всю программу снова и снова, пока какой-то момент, вы всегда должны рассмотреть возможность использования цикла с определенным конечным состоянием.

Попробуйте (нажмите введите для завершения программы, все остальное будет повторять)

#include<stdio.h> 
int main() 
{ 
    int facto, i, m ; 
    m=1 ; 
    do { 
     fflush(stdin); 
     system("cls"); 
     printf("Ener a Value : "); 
     scanf("%d", &facto) ; 
     getchar(); 
     for(i=facto-1 ; i>m ; i--) 
     facto *= i ; 
     printf("My Reg num:SP-16/BBS/033\nFactorial of the number : =%d\n", facto); 
     printf("press any key to find factorial of a number again (Enter to end): "); 
    } 
    while (getchar()!='\n'); 
} 
Смежные вопросы