#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned int k=1,i,n,s=0;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
k=k*i;
s+=k;
}
if(k!=0&&s>0&&k
>0)
printf("%u",s);
else
puts("overflow");
return 0;
}
Description
求1!+2!+…+k!=?,并判断是否溢出。
Input
输入为一个正整数k。
Output
若1!+2!+…+k!的值溢出unsigned(无符号整型)的范围输出“overflow”,否则输出1!+2!+…+k!的结果。
Sample Input
5
Sample Output
153
HINT
如果一个值溢出某个变量的数据类型存储范围,但仍然存入该变量,那么存入该变量中的值实际上是什么?
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned int k=1,i,n,s=0,j=0,count=0;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
k=k*i;
j=s;
s+=k;
if(j>s)
{
printf("overflow");
count=1;
break;
}
}
if(count==0)
printf("%u",s);
return 0;
}
改成这样还不对
#include
#include
int main()
{
unsigned int k=1,i,n,s=0,j=0,count=0;
scanf("%d",&n);
for(i=1; is)
{
printf("overflow");
count=1;
break;
}
}
if(count==0)
printf("%u",s);
return 0;
}
还是不行啊
哪儿不对啊?我运行正常啊,而且到了15开始溢出也对啊。
追问我改成这样交上去,系统不接受!!!
追答晕,我的编译器都正常运行了,而且结果也没问题,怎么会不接收,你们是交作业吗?