最直接新手写法是int sum = 0; for (int i = 1; i

用 for 循环从 1 加到 100 最直接
新手最常写的写法,逻辑清晰、易理解,适合练习循环结构。注意 i 的起始值和终止条件别写反:
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
// sum == 5050
i 是关键,写成i 就只加到 99- 变量
sum必须初始化为 0,否则值是未定义的(常见坑) - 类型用
int足够(5050 在 int 范围内),但若扩展到 1~1000000,建议用long long
while 循环实现等价逻辑
和 for 本质一样,只是把初始化、判断、更新拆开了,更适合理解循环三要素:
int sum = 0, i = 1;
while (i <= 100) {
sum += i;
i++;
}
- 漏掉
i++会导致死循环——这是初学者高频错误 - 把
i++写在sum += i前面会变成从 2 加到 101,结果错 100 - 这种写法在需要动态控制步长(比如每次加 2)时更灵活
用高斯公式直接算:1 + 2 + … + n = n × (n + 1) / 2
不需要循环,O(1) 时间出结果,但要注意整数除法和溢出:
int n = 100; int sum = n * (n + 1) / 2; // 5050
- 公式本身是数学恒等式,但 C++ 中
n * (n + 1)可能先溢出再除——比如n = 50000时int就不够了 - 安全写法是强制转成更大类型:
long long sum = 1LL * n * (n + 1) / 2 - 除法顺序不能换:
n / 2 * (n + 1)在n为奇数时会丢精度(整数截断)
cin 输入 n 后通用求和,兼顾健壮性
真正实用的代码得处理用户输入,不是硬编码 100:
立即学习“C++免费学习笔记(深入)”;
int n;
std::cin >> n;
if (n < 1) {
std::cout << 0 << std::endl;
return 0;
}
long long sum = 1LL * n * (n + 1) / 2;
- 必须检查
n ,否则公式或循环都会出错(比如n = 0时循环不执行但公式仍算 0) - 用
long long避免大数溢出,比循环累加更可靠 - 如果题目明确要求“必须用循环”,那就老实用
for,别偷偷换公式——考试/作业场景里这点容易被扣分
实际项目里,小范围累加用循环没问题;大范围或频繁调用,优先公式。但最容易被忽略的是:输入校验和整数溢出边界——它们不报错,但结果离谱。










