求1-2+3-4+……100 C语言多种算法
时间: 2024-10-21 10:18:00 浏览: 23
在C语言中计算1到100之间整数序列的和,有几种常见的算法:
1. **累加法** (Sum by loop):
```c
#include <stdio.h>
int main() {
int sum = 0;
for(int i = 1; i <= 100; ++i) {
if(i % 2 != 0) // 如果是奇数,则加上
sum += i;
}
printf("1到100的奇数之和是:%d\n", sum);
return 0;
}
```
这个程序只计算奇数部分的和。
2. **递归法** (Recursive Sum):
```c
#include <stdio.h>
int recursive_sum(int n) {
if(n == 1)
return 1;
else if(n % 2 == 0)
return -recursive_sum(n - 1); // 对偶数求相反数
else
return recursive_sum(n - 1) + n; // 对奇数直接相加
}
int main() {
int sum = recursive_sum(100);
printf("1到100的和是:%d\n", sum);
return 0;
}
```
这里递归地处理序列,每次减一,如果遇到偶数就取负值。
3. **公式法** (Using mathematical formula):
对于1到n的和,可以使用高斯求和公式 `n*(n + 1)/2`。但请注意,此方法不适合循环结构,因为它不是通过遍历每一步得到结果的。
```c
#include <stdio.h>
int main() {
int n = 100;
int sum = n * (n + 1) / 2;
printf("1到%d的和是:%d\n", n, sum);
return 0;
}
```
阅读全文