数据精度问题

smartboy8899 2008-05-24 10:35:15
#include<stdio.h>
#include<math.h>
main()
{int i=0,j,k,m,t=1,q,g;
int a[10],b[10];
long int s,N=0;
printf("Please input a number(<=104):\n");
//输入所要求和的数
do
{
{scanf("%d",&b[0]);
if(b[0]!=0) {a[0]=b[0]; }
else break;
}

//进行求和
t=1;
s=0;
N=0;
//if(b[0]>=19) {(long ) N, s;}
for(m=1;m<=a[0];m++)
{for(k=1;k<=m;++k) {t=t*k;}
s=m*t;
N=N+s;
t=1;
}
printf("\n");
//printf("1*1!+2*2!+...+%d*%d!=%ld\n",b[0],b[0],N);
//printf("\n");
if(N<10000) printf("%d\n",N);
else
{q=(int)(log10(N)+1);//检测数的位数
for(i=1,j=1;i<=(q-4);i++)
{j=10*j;}
g=N/(j);printf("%d",g);//输出前四位
}
printf("\n");
}
while(b[0]!=0);
return 0;
}
不知道怎么回事,当输入数据大于18后就不对呢!
请哪位高手帮我解决一下!急!
...全文
102 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Peterry 2008-05-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sailinghz 的回复:]
引用 7 楼 kings_zqz 的回复:
引用 6 楼 langhua0001 的回复:
引用 5 楼 lixun_21 的回复:
解决了?
解决了好啊!!我就来接分了
[/Quote]
sailinghz 2008-05-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 kings_zqz 的回复:]
引用 6 楼 langhua0001 的回复:
引用 5 楼 lixun_21 的回复:
解决了?
解决了好啊!!我就来接分了
[/Quote]
a3950410 2008-05-25
  • 打赏
  • 举报
回复
接分接分。
smartboy8899 2008-05-25
  • 打赏
  • 举报
回复
接吧!呵呵!!!
bysdy 2008-05-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 Peterry 的回复:]
引用 10 楼 sailinghz 的回复:
引用 7 楼 kings_zqz 的回复:
引用 6 楼 langhua0001 的回复:
引用 5 楼 lixun_21 的回复:
解决了?
解决了好啊!!我就来接分了
[/Quote]
恩恩~~~
smartboy8899 2008-05-24
  • 打赏
  • 举报
回复
我已解决!
smartboy8899 2008-05-24
  • 打赏
  • 举报
回复
是输入一个数,然后输出1*1!+2*2!+...+n*n!的结果的前四位!(n <=104)
我是当输入13以后的就不对呢!
smartboy8899 2008-05-24
  • 打赏
  • 举报
回复
是输入一个数,然后1*1!+2*2!+...+n*n!的结果的前四位!(n<=104)
chuchuzinnia 2008-05-24
  • 打赏
  • 举报
回复
先说下你这个程序是要做什么的?
kojie_chen 2008-05-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 langhua0001 的回复:]
引用 5 楼 lixun_21 的回复:
解决了?
解决了好啊!!我就来接分了

[/Quote]
langhua0001 2008-05-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lixun_21 的回复:]
解决了?
解决了好啊!!我就来接分了
[/Quote]
lixun_21 2008-05-24
  • 打赏
  • 举报
回复
解决了?
解决了好啊!!我就来接分了

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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