练习:求表达式(1-1/2+1/3-1/4+......+1/n)的和

题目

编写代码,求表达式(1-1/2+1/3-1/4+…+1/n)的和

例如:当n=20时,表达式的值为0.668771

思路

1.“n”:scanf()函数获取
2.表达式的和sum:
关于2的执行思路可以看下面:

设置变量sum用来记录表达式1-1/2+1/3-1/4+…+1/n的和。
for()循环用i遍历1到n的数字,分别用1/i表示各项。
设置一个变量k,分别用1和-1来标记各项的正负,即用k*(1/i)进一步表示各项。

3.输出

代码

#include <stdio.h>
main()
{
    double sum = 0;
    int n;
    int k = 1;
    scanf("%d", &n);
    for (float i = 1; i <= n; i++)
    {
        sum += k * (1 / i);
        k = -k;
    }
    printf("%f\n",sum);
}

写的过程中想到的问题

1.关于sum到底用double型还是float型?

double是双精度浮点数,float是单精度浮点数,double型的精度大于float类型,适用于对于精度要求高的数据。
由题目示例可知,要保留六位,精度要求高。为减少错误,建议使用double型。

2.关于i到底用int型还是float型?

关于这个问题,主要影响的是 s += (1 / i) * k;语句中的输出结果。

如果int用int型,在保持式子(s += (1 / i) * k;)不变的情况下,1 / i仅保留整除的大小,即1/2=0,不符合题目要求。为避免此类问题,有以下两种处理方案:

  1. i用float型
  2. 将式子 s += (1 / i) * k; 改为 s += (1.0 / i) * k; 。

3.设置一个函数

#include <stdio.h>
float sum(int n)
{
    double s = 0;
    int k = 1;
    for (float i = 1; i <= n; i++)
    {
        s += (1 / i) * k;
        k = -k;
    }
    return s;
}
int main()
{
    int n;
    scanf("%d", &n);
    printf("sum=%f\n", sum(n));
}
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用循环或递归来1+2+3+...+n的和。 循环方法: ```c++ #include <iostream> using namespace std; int main() { int n, sum = ; cout << "请输入n的值:"; cin >> n; for (int i = 1; i <= n; i++) { sum += i; } cout << "1+2+3+...+" << n << "的和为:" << sum << endl; return ; } ``` 递归方法: ```c++ #include <iostream> using namespace std; int sum(int n) { if (n == 1) { return 1; } else { return n + sum(n - 1); } } int main() { int n; cout << "请输入n的值:"; cin >> n; cout << "1+2+3+...+" << n << "的和为:" << sum(n) << endl; return ; } ``` ### 回答2: 对于这个问题,我们可以使用循环语句来实现。具体的实现步骤如下: 1. 首先,我们需要定义一个变量来保存1到n的和。这个变量可以初始化为0,表示初始的和为0。 2. 接下来,我们使用for循环来依次遍历1到n的所有数值。在每次循环中,将当前的数值加到之前的和变量中。 3. 最后,当循环结束后,输出之前定义的和变量即可。 以下是具体的代码实现: ``` #include <stdio.h> int main() { int n, sum = 0; printf("请输入一个正整数n:"); scanf("%d", &n); for(int i = 1; i <= n; i++) { sum += i; } printf("1到%d的和为%d\n", n, sum); return 0; } ``` 在上面的代码中,我们使用了一个整型变量sum来保存和值。通过循环语句来取得每个自然数,加到sum中得到最后的和。在打印时,使用了格式化字符串来输出最终结果。 当用户输入n时,程序会计算1到n的所有自然数的和,并输出结果。 ### 回答3: C语言是一门十分强大的编程语言,在计算机编程领域有着广泛的应用。1到n的和也是C语言初学者们经常练习的一项基本技能,本文将以C语言为例,介绍如何编程1到n的和。 首先,我们需要了解一个关键概念,即循环。循环就是计算机反复执行某个操作的过程,分为三种,分别为for、while和do-while,我们可以根据需要选择其中之一。在本次和计算中,使用for循环来实现。 for循环的语法格式如下: for (初始化表达式; 条件表达式; 更新表达式) { 执行语句; } 其中,初始化表达式用于初始化循环控制变量,例如: int i = 1。条件表达式是指每次循环开始前被值的布尔表达式,如果它的值为真,则循环继续;如果为假,则循环结束。更新表达式用于更新循环控制变量,例如: i++。 那么,我们来看一下C语言编程1到n的和: ``` #include<stdio.h> int main() { int i,n,sum=0; //定义循环变量i,上界n,以及和sum printf("请输入上界n:"); scanf("%d",&n); //输入上界n的值 for(i=1;i<=n;i++) //循环控制 { sum=sum+i; //累加和 } printf("1~%d的和为%d\n",n,sum); //输出结果 return 0; //结束程序 } ``` 以上代码中,我们首先定义了三个变量,i、n和sum,其中sum用于累加和,实现最终和结果的存储和输出。通过scanf语句来获取用户输入的上界n的值,再利用for循环来计算1到n的和,最后使用printf函数将结果输出。 在循环中,变量i从1开始逐一加1,当i的值大于n时,循环结束。每次循环将i的值累加到sum中,从而实现和的功能。 以上就是C语言编程1到n的和的全部内容。有了这个基础,我们可以进一步学习C语言编程的更多技术,为将来的编程工作打下坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值