该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#define N 50
int Ch(int n);
void Mul(char num[], int i);
void Pri(char num[], int i);
void Ord(char num[]);
main ()
{
char num[N];
int n,i = 1;
printf ("please input n = ");
scanf ("%d",&n);
while (getchar () != '\n');
n = Ch(n);
num[0] = 1;
for (i = 1;i <= n;i++)
{
Mul(num,i);
Pri(num,i);
}
}
/*检测n是否合法*/
int Ch(int n)
{
while (n <= 0)
{
printf ("error,please input again :");
scanf ("%d", &n);
}
return n;
}
/*计算阶乘*/
void Mul(char num[],int i)
{
int j,k;
for (j = 0;j < i;j++)
{
num[j] = num[j] * i;
}
for (k = 0;k < i;k++)
{
while (num[k] >=10)
{
num[k] -= 10;
num[k + 1] += 1;
}
}
}
/*将数组按照十进制顺序输出*/
void Pri(char num[],int i)
{
int j;
Ord(num);
for(j = 0;j < N;j++)
{
if (num[j] == 0);
else break;
}
printf ("%d ! = ",i);
for (;j < N;j++)
{
printf (&num[j]);
}
}
/*将数组的顺序倒置*/
void Ord(char num[])
{
int p = 0,q = 49;
char temp;
while (p <= q)
{
temp = num[0];
num[0] = num[49];
num[49] = temp;
}
}