Đệ viết được 1 chương trình tính Giai thừa của một số tự nhiên.
nhưng nó chỉ chạy đúng đến 12! thôi.
Bắt đầu từ 13! thì Kết quả Sai so với Kết quả tính toán từ ExceLL.
Có Pro nào rảnh giải thích giùm đệ nhé.
#include <stdio.h>
#include <stdlib.h>
/*Chuong trinh tinh toan Giai thua cua mot so Tu Nhien*/
int clean_stdin() {
while (getchar() != '\n') {
}
return 1;
}
void Numerical_input(int *input_coefficient)
{
int input;
char c;
int counter=1;
do {
//printf("Enter an integer: ");
if (counter>1)
printf("\nEnter Again: ");
++counter;
} while (((scanf("%d%c", &input, &c) != 2 || c != '\n') && clean_stdin()));
*input_coefficient = input;
}
unsigned long GiaiThua(int a)
{
if (a>1)
return a*GiaiThua(a-1);
else
return (1);
}
int main()
{
int N;
int input_char;
do
{
printf("Chuong trinh tinh toan Giai thua N!\n");
printf("Nhap vao so tu nhien: \tN = ");
Numerical_input(&N);
printf("\tKet qua tinh toan:\n");
printf("\t%d! = %lu\n",N,GiaiThua(N));
printf("Do you want to Escape (Y\\N)??");
input_char = getchar();
if (input_char==89 || input_char==121){
printf("\nThanks for Using!!!\n\tBye Bye!\n");
break;
}
else
system("cls");
} while (input_char!=89 && input_char!=121);
system("pause");
return 0;
}