| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 329 人关注过本帖
标题:[求助]程序错在哪儿啊?
取消只看楼主 加入收藏
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
结帖率:88.89%
收藏
 问题点数:0 回复次数:0 
[求助]程序错在哪儿啊?

/***************************************************************************/
/*******************算1000的阶乘********************************************/
/************无论我怎么修改,得出的结果还是****0,也就是********************/
/***************************************************************************/
#include<stdio.h>
#include<math.h>
void gewei(int *p,int k); /*声明对个位数的相乘的函数*/
void shiwei(int *p,int j); /*声明对十位数的相乘的函数*/
void baiwei(int *p,int i); /*声明对百位数的相乘的函数*/
void jingwei(int *p,int m); /*当相乘的积大于10需要进位时,调用此函数完成进位功能*/

main()
{
int arr[1000]={0,0}; /*定义一个数组,存放结果的每一位数*/
int dyxh,i,j,k;
int e,f,g;
FILE *fp_new;
arr[996]=1; /*将千位数初始化为1*/
for(dyxh=0;dyxh<1000;dyxh++) /*通过三重for循环打印出 arr[1000]的初值。*/
{
printf("%d",arr[dyxh]);
}
printf("\a\n以上输出了arr[1000]的初值!大小为0…01000\n即将执行1000的阶乘!\n按任意键继续!\n");
getchar(); /*程序执行到这里暂停,便于查看分析程序*/

for(i=0;i<10;i++) /*百位上的数从0到9*/
for(j=0;j<10;j++) /*十位上的数从0到9*/
for(k=1;k<10;k++) /*个位上的数从0到9*/
{


for(e=1;e<1000;e++)
{
gewei(&arr[1000-e],k); /*对个位数的相乘的函数*/
}
for(f=2;f<1000;f++)
{
shiwei(&arr[1000-f],j); /*用j乘以十位数并通过进位函数完成进位*/
}
for(g=3;g<1000;g++)
{
baiwei(&arr[1000-g],i); /*用i乘以百位数并通过进位函数完成进位*/
}
}
printf("\n阶乘运算结束!\n按任意键输出arr[1000]的新值!\n");
getchar();
for(dyxh=0;dyxh<1000;dyxh++)
{
printf("%d",arr[dyxh]);
}
printf("\n输出结束!\n");
getchar();
}
void gewei(int *p,int k) /*个位处理函数*****p为arr[999](个位)的地址******k为当前数的个位数*/
{
int m;
m=*p*k;
if(m>9)
{
jingwei(p, m);
return;
}
else
*p=m;

}
void shiwei(int *p,int j) /*十位处理函数****p为arr[998](十位)的地址******k为当前数的十位数*/
{
int m;
m=*p*j;
if(m>9)
{
jingwei(p, m);
return;
}
else
*p=m;

}
void baiwei(int *p,int i) /*百位处理函数****p为arr[997](百位)的地址******k为当前数的个位数*/
{
int m;
m=*p*i;
if(m>9)
{
jingwei(p, m);

}
else
*p=m;

}
void jingwei(int *p,int m) /*进位处理函数******用递归调用完成进位功能*/
{
int a,b,c;
int *pjw;
pjw=p;
a=m%10; /*取得操作位的数*/ /* 进位操作 */
b=m/10; /*取得操作位的上一位的数*/
*pjw=a; /*将操作位上的数填入*/
pjw--; /*移动指针到前一地址*/
c=b+*pjw;
if (c>9)
{
jingwei(pjw,c);
}
else
*pjw=c;

}

2007-04-26 13:36
快速回复:[求助]程序错在哪儿啊?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015227 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved