C语言计算1!-2!+3!-4!+5!-6!+7!-8!+9!-10!

#include<stdio.h>main(){inti,s,m,t,k;s=0;for(i=1,k=1;i<=10;i++,k++){for(t=1;t<=i;t++)... #include<stdio.h>main(){int i,s,m,t,k;s=0;for(i=1,k=1;i<=10;i++,k++){for(t=1;t<=i;t++)m*=t;s+=pow(-1,k)*m;}printf("%d",s);}
为什么结果不对啊?

结果是-3301819
展开
 我来答
止凝竹c
2013-05-17 · TA获得超过395个赞
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:161万
展开全部
#include<stdio.h>
#include<math.h>
int main()
{
int i,m,t,k;
double s;
s=0;
m=1;
for(i=1,k=1;i<=10;i++,k++)
{
for(t=1;t<=i;t++)
m*=t;
s+=pow(-1,k)*m;
m=1;
}
printf("%.0lf",s);
}
你的m用来乘了,但是m没有赋初值,所以算不出,还有用了pow就变成double型了,所以得用double型的变量来存答案,这是语法问题,至于你自己的算法问题,得自己找错误,找多了才行,找多了才会变厉害,自己带几个值在纸上算着跑一遍,看看对不对,
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
appllppa
2013-05-17
知道答主
回答量:2
采纳率:0%
帮助的人:2.7万
展开全部
#include <stdio.h>

int main()
{
int sum = 0,temp = 1,i = 0;

for ( i = 1 ; i <= 10 ; ++i )

{
sum += temp;
temp *= ( -(i+1));

}

printf("%d",sum);

}

这样清爽很多。。具体到你的程序,s+=pow(-1,k)*m; 这句不应该在内层循环里,内层求阶乘,外层累加,内层循环开始前m要重置,还有幂次不对,pow(-1,k-1),还有实际上i和k是重复的变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-05-17
展开全部
s+=pow(-1,k)*m;
改成
s+=pow(-1,k-1)*m;

并且
for(t=1;t<=i;t++)
这句前面应该要加上
m=1;
这句
不然都是错的
逻辑错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jdergon
2013-05-17 · TA获得超过225个赞
知道小有建树答主
回答量:316
采纳率:0%
帮助的人:140万
展开全部
power 函数时是求幂指数的。题目要求时就是阶层
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友da6fc92
2013-05-17 · TA获得超过469个赞
知道答主
回答量:168
采纳率:0%
帮助的人:75.9万
展开全部
算的是0吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式