首页 > 题库 > 职业考证 > 软考 > 程序员 > 案例题
案例题

【说明】
下面程序运行时,从标准输入设备读取一个整数n,然后调用函数factorial(int n)计算非负整数n的阶乘,要求n的值不超过1000,对于不满足要求的n值,输出" invalid input data”,否则依次输出1~n的阶乘值。考虑到n较大时,n!的位数较多而不能直接用一个整型变量表示,因此将阶乘值从最低位到最高位的各位数字依次存储在res[0]、res[1]、…等数组元素中。


阅读试题说明和C代码,填补C代码中的空缺(1)~(5),将解答写入对应的解答栏内。
【c代码】

#include <stdio.h>

void factorial(int);
void output(int,char[], int);

int main()
{
int n;

scanf("%d",&n);
factorial (n) ;

return 0;
}

void factorial(int n)
{
char res[5000] = {0} ;

#define MM 10
if( ( 1 ) ){
printf("invalid input data!\n");
return;
}
int i, stop_idx = 1;
( 2 ); //初始时res[0]保存0!
for(int m = 1; m<=n; m++) {
int temp,k = 0; //k表示进位
for(i = 0; i<stop_idx; i++) { //在(m-1)!的基础上计算m!
temp = res[i]*m + k ;
res[i] =( 3 ) ;
k =( 4 );
}

while (k) {
res[i++] = k%MM; k = k/MM ;
}

stop_idx = i;
output(( 5 )); //输出m!
}
}

void output(int m, char a[], int n)
{
printf("%d!=",m);
for(--n; n>=0;--n)
printf("%d", a[n]);

printf("\n");
}
/*
例如,输入10,程序运行后输出如下:
1!=1
2!=2
3!=6
4!=24
5!=120
6!=720
7!=5040
8!=40320
9!=362880
10!=3628800
*/

参考答案: 查看答案 查看解析 下载APP畅快刷题

相关知识点试题

相关试卷