若1!+2!+…+k!的值溢出unsigned(无符号整型)的范围输出“overflow”,否则输出1!+2!+…+k!的结果。
时间: 2023-11-23 18:07:12 浏览: 162
overflow_数值溢出_
5星 · 资源好评率100%
以下是C语言的代码实现,用于判断1!+2!+…+k!是否会溢出unsigned(无符号整型)的范围,如果溢出则输出“overflow”,否则输出1!+2!+…+k!的结果:
```c
#include <stdio.h>
int factor(int i) {
int n;
if(i==0||i==1) n=1;
else n=i*factor(i-1);//函数的递归调用
return n;}
int main() {
int k,i;
unsigned int sum=0,sum1;
scanf("%d",&k);
if(k<=12)//k>=13将溢出
{
for(i=1;i<=k;i++) {
sum1=sum;
sum+=factor(i);
if(sum<sum1) {//判断是否溢出
printf("overflow\n");
return 0;
}
}
printf("%u\n",sum);
}
else printf("overflow\n");
return 0;
}
```
首先,定义了一个函数factor,用于计算阶乘。然后,在主函数中,输入k的值,如果k小于等于12,则进行循环计算1!+2!+…+k!的值,并判断是否溢出unsigned(无符号整型)的范围,如果溢出则输出“overflow”,否则输出1!+2!+…+k!的结果。如果k大于12,则直接输出“overflow”。
阅读全文