小弟现有一个苦恼了几天的c程序(大数阶乘)问题,希望那位高手能够给予指点。跪谢@

来源:百度知道 编辑:UC知道 时间:2024/05/31 15:21:16
include <stdio.h>

int main(void)
{
int Data[10000];
int digit;
int i,j,r,k,m;
int N;

for(i=1;i<10000+1;i++)
Data[i]=0;
Data[0]=1;
Data[1]=1;
digit=1;

printf("Enter a number what you want to calculus:");
scanf("%d",&N);
while(N<=0||N>3000)
{ printf("you are wrong,please input again: ");
scanf("%d",&N);
}

for(i=1;i<N+1;i++)
{
for(j=1;j<digit+1;j++)
Data[j]*=i;
for(j=1;j<digit+1;j++)
{
if(Data[j]>10)
{
for(r=1;r<digit+1;r++)
{
if(Data[digit]>9)

不知道你运行不出来是什么意思?是看不到结果吗?那是因为出结果的那个黑屏一闪而过了,你在return 前加上getchar();或者system("pause");(需要包含头文件#include<iostream.h>)就行了。
我在C++ buider上运行了一下,程序正确!

我修改了一点,程序如下,结果正确显示:
#include <stdio.h>
#include<iostream.h>
int main(void)
{
int Data[10000];
int digit;
int i,j,r,k,m;
int N;

for(i=1;i<10000+1;i++)
Data[i]=0;
Data[0]=1;
Data[1]=1;
digit=1;

printf("Enter a number what you want to calculus:");
scanf("%d",&N);
while(N<=0||N>3000)
{ printf("you are wrong,please input again: ");
scanf("%d",&N);
}

for(i=1;i<N+1;i++)
{
for(j=1;j<digit+1;j++)
Data[j]*=i;
for(j=1;j<digit+1;j++)
{
if(Data[j]>10)
{
for(r=1;r<digit+1;r++)
{
if(Data[digit]>9)
digit++;
Data[r+1]+=Data[r]/10;
Data[r]=Data[r]%1