📄 array01.c.txt
字号:
/*数组 实验 设计一个可容纳40位数的求n!的程序 */
/*===============================================*/
/*程序构思: */
/*依题意可得知,本程序所运用的数据结构为“数组”,*/
/*目的为运用数组来弥补整数数据类型有限的使用范围。*/
/*我们预先声明变量为一个大小为40的数组,负责存储每一个位数的数据,*/
/*变量Digit为计算位数的变更、变量i,j,r,k为循环中所用的计数变量。*/
/*首先先将Data数组中的数据做初始值零。再令第一位数值为1,位数也为1。*/
/*再将每次相乘的乘积存回数组中。*/
/*并循序处理每个数组中超过10的数,若数值超过10,则将位数加一,*/
/*原来的数除以10,商数加前一位数的数值后存回前一位数的数组中,*/
/*再将余数存回原来位数的数组中。最后再输出每次计算后的结果。*/
/*===============================================*/
/*程序源代码 */
/*==============Program Description==============*/
/*程序名称: array01.c */
/*程序目的: 设计一个可容纳40位数的求n!程序 */
/*程序提供: 马春江 */
/*===============================================*/
void main()
{
int Data[40]; /*存储40位数的整数数组*/
int Digit; /*数据位数变量 */
int i,j,r,k; /*循环计数变量 */
int N; /*用户输入值 */
for (i=1; i<40+1; i++) /将数组初始值设为0 */
Data[i]=0;
Data[0]=1; /*设第0位数数组为1 */
Data[1]=1; /*设第1位数数组为1 */
Digit=1; /*设数据位数为1 */
printf ("Enter a number what you want to calculus:");
scanf ("%d", &N); /*读取用户欲求的N值 */
for (i=1; i<N+1; i++)
{
for (j=1; j<Digit+1; j++)
Data[j]*=1; /*数组中内容的运算 */
for (j=1; j<Digit+1; j++)
{
if (Data[j]>10)
{
for (r=1; r<Digit+1; r++)
{
if (Data[Digit]>10)
Digit++; /*当数组中的值大于10时,则位数加1*/
Data[r+1]+=Data[r]/10; /*前一位数组值=前一位数组值+此位数组值除以10*/
Data[r]+=Data[r]%10; /*此位数组值=此位数组值+除10取余数*/
}
}
}
printf ("%d!=", i);
for (k=Digit; k>0; k--) /*输出数组中的内容*/
printf ("%d", Data[k]);
printf ("\n");
}
}
/*希望的结果 */
/*Input a number what you want to calculus:34 */
/*1!=1 */
/*2!=2 */
/*3!=6 */
/*4!=24 */
/*5!=120 */
/*6!=720 */
/*7!=5040 */
/*8!=40320 */
/*9!=362880 */
/*10!=3628800 */
/*11!=39916800 */
/*12!=479001600 */
/*13!=6227020800 */
/*14!=87178291200 */
/*15!=1307674368000 */
/*16!=20922789888000 */
/*17!=355687428096000 */
/*18!=6402373705728000 */
/*19!=121645100408832000 */
/*20!=2432902008176640000 */
/*21!=51090942171709440000 */
/*22!=1124000727777607680000 */
/*23!=25852016738884976640000 */
/*24!=620448401733239439360000 */
/*25!=15511210043330985984000000 */
/*26!=403291461126605635584000000 */
/*27!=0888869450418352160768000000 */
/*28!=304888344611713860501504000000 */
/*29!=8841761993739701954543616000000 */
/*30!=265252859812191058636308480000000 */
/*31!=8222838654177922817725562880000000 */
/*32!=263130836933693530167218012160000000 */
/*33!=8683317618811886495518194401280000000 */
/*34!=295232799039604140847618609643520000000 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -