C++怎么从1加到100 C++循环累加与高斯求和公式代码【入门】

最直接新手写法是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 = 50000int 就不够了
  • 安全写法是强制转成更大类型:long long sum = 1LL * n * (n + 1) / 2
  • 除法顺序不能换:n / 2 * (n + 1)n 为奇数时会丢精度(整数截断)

cin 输入 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,别偷偷换公式——考试/作业场景里这点容易被扣分

实际项目里,小范围累加用循环没问题;大范围或频繁调用,优先公式。但最容易被忽略的是:输入校验和整数溢出边界——它们不报错,但结果离谱。