c-函数-参数-求1-n的和

50 阅读1分钟

(一)代码如下:

#include <stdio.h>
#include <stdbool.h>  // 用于布尔类型(参数校验)

// 函数1:参数合法性校验(独立函数,提高复用性)
bool is_valid_n(int n) {
    return n > 0;  // n必须是正整数
}

// 函数2:核心求和函数(无循环、无递归,纯算术运算)
// 返回值用long long避免溢出,入参为合法正整数
long long sum_1_to_n(int n) {
    // 等差数列求和公式:n*(n+1)/2
    // 先强制转换为long long再计算,避免中间结果溢出
    return (long long)n * (n + 1) / 2;
}

// 函数3:封装计算流程(校验+求和+结果输出,一站式调用)
void calculate_and_print_sum(int n) {
    if (!is_valid_n(n)) {
        printf("错误:输入的n=%d不合法!必须是正整数。\n", n);
        return;
    }
    long long sum = sum_1_to_n(n);
    printf("1+2+...+%d 的和为:%lld\n", n, sum);
}

// 主函数(测试入口)
int main() {
    // 测试用例1:合法输入
    int n1 = 100;
    calculate_and_print_sum(n1);

    // 测试用例2:非法输入(负数)
    int n2 = -50;
    calculate_and_print_sum(n2);

    // 测试用例3:大数输入(验证long long防溢出)
    int n3 = 100000;
    calculate_and_print_sum(n3);

    return 0;
}

(二)运行结果如下:

image.png