最直接新手写法是int sum = 0; for (int i = 1; i
新手最常写的写法,逻辑清晰、易理解,适合练习循环结构。注意 i 的起始值和终止条件别写反:
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
// sum == 5050
i 是关键,写成 i 就只加到 99sum 必须初始化为 0,否则值是未定义的(常见坑)int 足够(5050 在 int 范围内),但若扩展到 1~1000000,建议用 long long
和 for 本质一样,只是把初始化、判断、更新拆开了,更适合理解循环三要素:
int sum = 0, i = 1; while (i <= 100) { sum += i; i++; }
i++ 会导致死循环——这是初学者高频错误i++ 写在 sum += i 前面会变成从 2 加到 101,结果错 100不需要循环,O(1) 时间出结果,但要注意整数除法和溢出:
int n = 100; int sum = n * (n + 1) / 2; // 5050
n * (n + 1) 可能先溢出再除——比如 n = 50000 时 int 就不够了long long sum = 1LL * n * (n + 1) / 2
n / 2 * (n + 1) 在 n 为奇数时会丢精度(整数截断)真正实用的代码得处理用户输入,不是硬编码 100:
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,别偷偷换公式——考试/作业场景里这点容易被扣分实际项目里,小范围累加用循环没问题;大范围或频繁调用,优先公式。但最容易被忽略的是:输入校验和整数溢出边界——它们不报错,但结果离谱。