24小时热门版块排行榜    

查看: 1520  |  回复: 18
本帖产生 2 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

sudo

木虫 (正式写手)


★ ★
微尘、梦想(金币+2): 谢谢回复…… 2011-04-03 17:57:12
青涩草(金币+10): 谢谢 2011-04-04 13:14:13
余泽成(程序强帖+1): 2011-05-13 21:22:56
其实这个程序已经写得比较清晰了...

修改了一下,还有一些小BUG,楼主自己解决吧
CODE:
#include
#include
#include

using namespace std;

int *multi(int *num1,int size1,int *num2,int size2)
{//返回位数为size1+size2
      int size=size1+size2;
      int *ret=new int [size];
      int i=0;
      memset(ret, 0, sizeof(int)*size);
      for(i=0;i       {
                          int k=i;
                          for(int j=0;j                           {
                                  ret[k++] += num2[i]*num1[j];
                          }
      }
      for(i=0;i       {
                         if(ret[i]>=10)
                         {
                                       ret[i+1] += ret[i]/10;
                                       ret[i] = ret[i]%10;
                         }
      }
      return ret;
}
int main()
{
    int num1[]={3,2,1};
    int num2[]={1,1,9,1,3,4};

    int size1=sizeof(num1)/sizeof(num1[0]);
    int size2=sizeof(num2)/sizeof(num2[0]);

    int *ret=multi(num1, size1, num2, size2);
    for(int i=size1+size2-1; i>=0; i--)
    {
            cout<     }

    delete [] ret;//内存释放
    return 0;
}

123*431911=53125053
14楼2011-04-03 10:57:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

zhengyangg

木虫 (初入文坛)


★ ★ ★ ★
青涩草(金币+1):谢谢参与
余泽成(金币+3, 程序强帖+1): 谢谢参与应助! 2011-05-13 21:23:05
#include
#define N 10000
void main()
{
int a[N],n,k,i,j,m,flag=1;//flag代表位数
printf("请输入一个100以内的正数";
scanf("%d",&n);
for(i=1;i<=N;i++)
  a=0;//这个循环使得数组里的每一个元素初值都为0
a[1]=1;//为了便于累乘运算,特殊的将a[1]赋值为1
    for(k=1;k<=n;k++)//大循环用于计算小于n的所有的数
{
  flag=1;
  for(i=1;i<=k;i++)
  {
   for(j=1;j<=flag;j++)
    a[j]*=i;
   for(j=1;j<=flag;j++)
   {
    if(a[j]>9)//从低位到高位判断是否大于9,如果大于,则进位
    {
     for(m=1;m<=flag;m++)
     {
      if(a[flag]>9)
       flag++;//控制所求得的数的阶乘的位数
      a[m+1]+=a[m]/10;
      a[m]=a[m]%10;//将数字分离到每一个数组元素里
     }
    }
   }
   
  }
  printf("%d的阶乘的全部有效数字为",k);
  for(;flag>=1;flag--)
      printf("%d",a[flag]);//从高位往低位依次输出
  printf("\n\n";
  for(i=1;i<=N;i++)
      a=0;
     a[1]=1;//每次运行以上步骤时都会改变数组a中的值,须再次赋值
}
}
16楼2011-05-12 20:36:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 青涩草 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见