新手求教

Jzzzhao 2017-10-17 11:45:12
#include <stdio.h> int main() { unsigned long int i,n,sum; scanf("%d",&n); sum=0; for(i=1;i<=n;i++) { sum=sum+i; } printf("%d",sum); return 0; } 题目要求1 < = n < = 1,000,000,000 这样已经超出了范围 ,该怎么办呢
...全文
139 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jzzzhao 2017-10-17
  • 打赏
  • 举报
回复
输入s 用double 定义
Jzzzhao 2017-10-17
  • 打赏
  • 举报
回复
引用 1 楼 醉少爷的回复:
使用long long数据类型
谢谢,我的不支持long long
HomerRo 2017-10-17
  • 打赏
  • 举报
回复
引用 楼主 JZhao1998 的回复:
#include <stdio.h>
int main()
{
unsigned long int i,n,sum;
scanf("%d",&n);
sum=0;
for(i=1;i<=n;i++)
{
sum=sum+i;
}
printf("%d",sum);
return 0;
}

题目要求1 < = n < = 1,000,000,000
这样已经超出了范围 ,该怎么办呢

楼主:
个人的几个粗浅的看法:1、unsigned long int(无符号整数型)最大支持整数为4294967295也就是约42个亿,因此,SUM汇总值应该能够放的下;
2、printf("%d",sum)中的%d表示一个有符号的整数数值在正负21亿,出错了。如果改成printf("%u",sum)中的%u表示一个无符号的整数数值在42亿结果就正确了;
3、double型如全是整数,最多提供15位有效数字。_int64无符号类型支持所有19位及以下的有效数字(c语言支持)。

这个为修改printf("%d",sum)为printf("%u",sum)的运算结果,应该符合要求O(∩_∩)O
Jzzzhao 2017-10-17
  • 打赏
  • 举报
回复
引用 6 楼 ciji6985的回复:
10亿了,double好像也不够吧??
double应该够了吧,数量级是十的三十二次方
Jzzzhao 2017-10-17
  • 打赏
  • 举报
回复
引用 5 楼 自信男孩的回复:
用double是可行的,如果不用double可以考虑大数据的加法运算(数组模拟大数据)
这种还没学,不懂得写。
hamity 2017-10-17
  • 打赏
  • 举报
回复
为什么double可以
ciji6985 2017-10-17
  • 打赏
  • 举报
回复
10亿了,double好像也不够吧??
Jzzzhao 2017-10-17
  • 打赏
  • 举报
回复
大家,不用了,我已经解决了
醉_少 2017-10-17
  • 打赏
  • 举报
回复
使用long long数据类型
自信男孩 2017-10-17
  • 打赏
  • 举报
回复
用double是可行的,如果不用double可以考虑大数据的加法运算(数组模拟大数据)

69,369

社区成员

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

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