永发信息网

c语言连long int 装不下怎么办?

答案:3  悬赏:0  手机版
解决时间 2021-01-31 23:49
代码如下,到输入13时就不对了,应该是差范围了,才学没多久不知道该怎么办?
(计算1!+2!+3!+。。。。+N!)
#include
void main()
{
long int i=0,n,x=1,y=1,z=1;
while(1)
{scanf("%d",&n);
if(n<=20)
{
for(i=1;z<=n;i++,z++)
{
i=x*z;
if(i>1)
{
y=i+y;
}
x=i ;
}
if(n==1)
printf("1\n");
else
printf("%d\n",y);
}}
}
最佳答案
long int实际上跟int一样,也只有4个字节。
解决办法是用long long。
修改三个地方:

long int i=0,n,x=1,y=1,z=1;
修改为long long i=0,n,x=1,y=1,z=1;
scanf("%d",&n);修改为scanf("%lld",&n);
printf("%d\n",y);修改为printf("%lld\n",y);
注意这里的ll是jkl里的小写l。
我用的是Linux上的CodeBlocks,如果是Windows,把%lld换成%I64d,注意前面的字母是HIJK里的大写I。
全部回答
c语言的已有的简单类型中没有一个放得下的。 如果你想计算,就需要自己想办法,例如 用一个大数组来存储计算结果的每一位等等,你可以网上搜搜,我也没有具体实现,只在网上看到过
- - 楼上正解。。 用数组 int a[1000]={0} 每一个数组元素装一位数,话说我做大整数加法时就是这样处理的 char c int i=0, a[100]={0}// 假设是100位的数,想节省空间的话也可以用shor 反正只装一位数 char c; while((c=getchar())!='\') { a[i]=c-'0'; //将字符转变成数字 数字字符减字符零等于该字符所代表的整数值 i++; } i--; // 输入回车后 a[i] 不再输入 但 i 的值比数组实际装的数据长度长1 其实用字符数组也可以, 原理都差不多- -! 不过用字符数组装的话 在计算时将字符转化为数字,然后再转化为字符存储,而整数数组的话是输入时将字符转化为数字; 非负整数数字字符与对应的整数的转化 非负整数+字符零=整数字符 整数的值要求在零到九之间
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
考技师有什么学历要要求,必须要大专学历吗,
墙上有奇怪的液体流过的痕迹,不知道是什么,
《目送》中的雨儿 批注
生辰八字算命1991腊月十一
lacoste是加盟店还是连锁店?
【宋史岳飞传】宋史岳飞传淲鞍甲而不息不汗是
王小源当的那首我知道我们不可能
吴老师家的电话号码从左往右依次是:①既是8
一个你喜欢的女生,她之前答应你这个星期找天
从郑州去平顶山舞钢从哪个汽车站坐车?票价多
墨玉县二二四团(八连华硕移动代办点)地址有知
EPSON LQ-300K打印机,开机约30秒后指示灯亮
别自作多情了,也别太自以为是了
男人最爽的玩具是什么?
创维电脑服务部地址好找么,我有些事要过去
推荐资讯
中国历代诗人年表
全联福利中心(淡水沙崙店)地址在哪,我要去那
我喜欢的人目前单身,他知道我喜欢他,昨天加
神界原罪2传送术怎么获得
畅通货运部(裕祥花园南)怎么去啊,我要去那办
3/8千米比800米化简
秘鲁属于发达国家还是发展中国家
小燕子为什么吃蚂蚁
小绯胸 和大绯胸 有什么区别 鹦鹉 ?
【2011上海高考物理】(2011·上海高考物理·T
歌词 我感动天感动地 却感动不了你 。。。求
之所以说《十二铜表法》是平民的胜利,主要是
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?