c语言读入1 个正整数 n(n<=100),计算并输出1+1/2+1/3+……+1/n 。(保留两位小数)
时间: 2023-07-14 14:14:06 浏览: 437
以下是一个简单的 C 语言程序,可以实现该功能:
```c
#include <stdio.h>
int main() {
int n;
double sum = 0.0;
printf("请输入一个正整数n(n<=100):");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
sum += 1.0 / i;
}
printf("1 + 1/2 + ... + 1/%d = %.2f\n", n, sum);
return 0;
}
```
在该程序中,我们首先读入一个正整数 n,然后使用一个 for 循环来计算并累加 1/1,1/2,1/3,...,1/n 的和。最后,我们使用 printf 函数输出结果,保留两位小数。
相关问题
C语言读入1个正整数n(n<=100),计算并输出1+1/3+1/5+1/+……的前n项和(保留3位小数)。源代码
在C语言中,你可以使用`<stdio.h>`库来处理输入和输出,`<math.h>`库来进行浮点数运算。以下是一个简单的程序来计算序列的和:
```c
#include <stdio.h>
#include <math.h>
// 函数声明
double sum_series(int n);
int main() {
int n;
printf("请输入一个正整数n (不超过100): ");
scanf("%d", &n);
// 检查输入是否有效
if (n > 100 || n <= 0) {
printf("输入错误,请输入1到100之间的正整数。\n");
return 1;
}
double result = sum_series(n);
printf("前 %d 项和 (保留3位小数): %.3f\n", n, result);
return 0;
}
// 计算交错级数的函数
double sum_series(int n) {
double denominator = 1.0; // 初始化分母为1
double term = 1.0 / denominator; // 初始化每一项为1除以分母
double partial_sum = term; // 初始和为第一项
for (int i = 2; i <= n; i++) { // 从第二项开始
denominator += 2; // 每次增加2,得到奇数项的分母
term = 1.0 / denominator; // 更新当前项
partial_sum += term; // 加上当前项到和中
}
return round(partial_sum * 1000) / 1000.0; // 四舍五入到3位小数
}
```
在这个程序中,我们首先让用户输入一个正整数n,然后检查其有效性。接着,我们定义了一个递归函数`sum_series`来计算序列的和,最后输出结果。
C语言读入1 个正整数 n(n<=100),计算并输出1-1/2+1/3-1/4+……的前n项和(保留3位小数)。
在C语言中,你可以使用循环结构和分数运算来解决这个问题。由于不能直接处理浮点数的除法,我们可以采用长整型(long int)存储中间结果,并利用浮点数减法来模拟分数相加的过程。以下是一个简单的示例程序:
```c
#include <stdio.h>
#include <math.h>
double addFraction(int numerator, int denominator, double sum) {
// 如果分母已经很大,说明接近最终结果,不需要再添加更小的分数
if (denominator > 1e6) {
return sum + numerator / denominator;
} else {
// 将当前分数加入到总和中,然后继续下一项
return addFraction(numerator * 2, denominator * 2, sum + M_PI / denominator);
}
}
int main() {
long int n;
printf("请输入一个正整数 n(不超过100): ");
scanf("%ld", &n);
// 检查输入是否合法
if (n <= 0 || n > 100) {
printf("错误:n 的值应大于0且小于等于100。\n");
return 1;
}
double total = 0.0; // 初始化总和
for (int i = 1; i <= n; i++) {
total = addFraction(1, i, total); // 计算每一项并累加
}
// 输出结果,保留3位小数
printf("前 %d 项和(保留3位小数): %.3f\n", n, total);
return 0;
}
```
阅读全文