一个100以内的阶乘的程序,高手帮我看看那里错了,编译没问题

palm_civet 2005-07-16 02:30:39
//主函数
#include <stdio.h>
#include <iostream.h>
#include "factorial.h"

void main()
{
int i;
int num;
cout <<"请输入数据: ";
cin >>num;
factor fac;
for (i=2;i<=num;i++) fac.mul(i);
fac.display();
}

//factorial.h
class factor
{
public:
factor();
void mul(int x);
void display();
private:
int len;
int a[201];
};

//factorial.cpp
#include <stdio.h>
#include <iostream.h>
#include "factorial.h"

void factor::mul(int x) /*乘法过程*/
{
int i;
for (i=1;i<=len;i++) a[i]*=x; /*一位一位的乘*/
for (i=1;i<=len+1;i++) /*进位*/
{
a[i+1]+=a[i]/10;
a[i]%=10;
}
len+=2; /*计算新的数字长度*/
while (a[len]==0) len--;
}

void factor::display() /*输出数字*/
{
int i;
for (i=len;i>0;i--) cout<<a[i];
}

factor::factor()
{
for (int k=0;k<=201;k++) a[k]=0; /*初始化赋*/
len=1;
a[1]=1;
}
...全文
111 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
foochow 2005-07-16
  • 打赏
  • 举报
回复
数组越界
antter 2005-07-16
  • 打赏
  • 举报
回复
for (int k=0;k<=201;k++) a[k]=0; /*初始化赋*/
改成
for (int k=0;k<201;k++) a[k]=0; /*初始化赋*/

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧