(一)代码如下:
#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;
}
(二)运行结果如下: