14 条题解

  • 11
    @ 2023-6-24 14:44:07
    #include <iostream>
    #include <iomanip>
    using namespace std;
    int main()
    {
        int n,a;
        double q;
        q = 0;
        cin >> n;
        a = 1;
        while (a <= n)
        {
            q += 1.0 / a;
            a++;
        }
        cout << fixed << setprecision(3) << q;
        return 0;
    }
    

    解析:

    1.定义循环变量 a ,输入变量 n ,以及统计变量 q。(我发现我特别喜欢 q )

    注意!!!统计变量一定要用双精度double

    2.在循环次数不确定的情况下使用 while 循环, 条件为 a <= n ( a 是循环变量)

    3.众所周知,分数可以改写为除法算式(如:X / Y)所以我们用 q 加上 1.0 / a。

    注意!!!要写 1.0 而不是 1,这俩玩意儿不一样,因为算式结果会自动转化为更复杂的数值的数据类型。1 / 2 答案会是 0 ,(转化为整数了) 1.0 / 2 答案就会是 0.5 了。(如果我记得没错,如果有错欢迎各位指出)

    4.循环变量 a 要自增 1 ,不然循环就死了。

    5.用老朋友 fixed 控制小数位数并输出。

    6.看到这里就点个赞吧!👍

    提示:

    简单到复杂的数据类型分别为(举例):

    char / short (字符型 / 短整型) -> int / long long (整形) -> float (单精度实型) -> double (双精度实型)

  • 4
    @ 2023-6-23 21:35:33

    还是先看题

    Sn = 1 + 1/2 + 1/3 + … + 1/n

    将1转化为1/1可得

    Sn = 1/1 + 1/2 + 1/3 + … + 1/n

    于是我们可以发现分母是可以用枚举枚举出来的,所以这里采用for循环枚举出每个分母,用1÷分母的到具体的值,再求和就行(因为求出来得知可能是很多位小数,所以这里用double)。注意输出时要保留3位小数,用cstdio的可以用"%.3f"处理小数位数。用iostream的需要再用到iomanip处理小数位数

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main()
    {
        int n;
        double sum = 0;
        cin >> n;
        for(double i = 1;i<=n;i++)
            sum += (1.0 / i);
        cout << fixed << setprecision(3) << sum;
        return 0;
    }
    
  • 3
    @ 2023-6-23 15:15:05

    解析

    Sn=112131nS_n = 1+\frac{1}{2}+\frac{1}{3}+…+\frac{1}{n}

    故编写循环,遍历1~n,在每次循环中,累加1.0/i1.0 / i

    题解

    #include <iostream>
    #include <iomanip>
    using namespace std;
    int main()
    {
        int n;
        double sum = 0;
        cin >> n;
        int i = 1;
        while (i <= n)
        {
            sum += 1.0 / i;
            i++;
        }
        cout << fixed << setprecision(3) << sum;
        return 0;
    }
    
    • 2
      @ 2023-6-24 18:24:15

      先看代码:

      #include <iostream>
      #include <iomanip> //不用万能头文件的小伙伴,这行不能忘记啊!
      using namespace std;
      int main()
      {
          int n;
          cin >> n;
          double i = 1, sum = 0; //这两个变量要是double,否则最终输出出来是整数;
          while (i <= n) //很好理解吧!n是几就得加几次吗!
          {
              sum += 1 / i; //这里把每个分数变成除法算式都加到里面去,开头的1 = 1 / 1;
              //为什么被除数是1?因为我们的i是double类型,除法算式中只要有一个为double,结果就是double;
              i++; // 循环步进不能忘!否则进入死循环;
          }
          cout << fixed << setprecision(3) << sum; //处理输出;
          return 0;
      }
      

      以上就是代码,注释一定得看; 如果有错误亲们指出🎉️ ,不要吝啬你们的👍 最后我祝大家

      端午安康

      安康的就给我点赞!!👍

      • 1
        @ 2024-6-5 20:50:11

        题解 c++

        #include <bits/stdc++.h> //hetao4040809
        using namespace std;
        int main()
        {
            double n,num=0.0;
            cin>>n;
            for(int i=1;i<=n;i++)
            {
                num+=1.0/i;
            }
            cout<<setiosflags(ios::fixed);
            cout.precision(3);
            cout<<num;
            return 0;
        }
        
        • 1
          @ 2024-5-11 22:49:40

          👀️

          #include<iostream>
          #include<cstdio>
          using namespace std;
          int main()
          {
              int n,i=1;
              cin >> n;
              double s=0;
              while(i<=n)
              {
                  s += 1.0/i;
                  i++;
              }
              printf("%.3f",s);
              return 0;
          }
          
          • 1
            @ 2024-4-12 21:21:35
            #include<iostream>
            #include<iomanip>
            using namespace std;
            int main()
            {
                int n;
                cin >> n;
                double sum;//定义结果sum
                while(n>0)//当n不等于0时
                {
                    sum+=1.0/n;//sum加等于n分之1
                    n-=1;//n减1
                }
                cout << fixed << setprecision(3) << sum;
                return 0;
            }
            
            • 1
              @ 2023-6-23 22:00:02
              #include <bits/stdc++.h>
              using namespace std;
              int main()
              {
                  int n;
                  cin >> n;
                  int i = 1;
                  double sum = 0;
                  while (i <= n)
                  {
                      sum += 1.0 / i;
                      i++;
                  }
                  printf ("%.3lf",sum);
                  return 0;
              }
              
              • 0
                @ 2024-5-24 17:13:36
                #include<iostream>
                #include<cstdio>
                #include<cmath>
                #include<iomanip>
                using namespace std;
                int main()
                {
                    int a;
                    double b;
                    b = 0;
                    cin >> a;
                    for (int i = 1;i <= a;i++)
                    {
                        b += 1.0 / i;
                    }
                    cout << fixed << setprecision(3) << b;
                    return 0;
                }
                
                • 0
                  @ 2024-4-16 16:41:06

                  闲来无事,编个题解......请勿借()鉴()!

                  #include <iostream>
                  #include <iomanip>
                  #include <cstdio>
                  #include <cmath>
                  using namespace std;
                  int main()
                  {
                  double n,m=0,o;
                  cin >> n;
                  while(m<n)
                  {
                  m++;
                  o+=(1.0/m);
                  }
                  cout << fixed << setprecision(3) << o;
                  return 0;
                  }
                  

                  出现以下报错不用管

                  foo.cc: In function 'int main()': foo.cc:13:10: warning: 'o' may be used uninitialized in this function [-Wmaybe-uninitialized] o+=(1.0/m); ~^~~~~~~~~

                  • 0
                    @ 2023-11-16 21:36:11
                    using namespace std;
                    int main(){
                    	double q=0;int n;
                    	cin>>n;
                    	for(int i=1;i<=n;i++){
                    		q+=1.0/i;
                    	}
                    	cout<<fixed<<setprecision(3)<<q;
                    	return 0;
                    }
                    
                    • 0
                      @ 2023-6-28 16:19:54
                      #include<bits/stdc++.h>
                      using namespace std;
                      int main(){
                          int n;
                          cin>>n;
                          double result;
                          while(n>0){
                              result += 1/(double)n;
                              n--;
                          }
                          printf("%.3lf",result);
                          return 0;
                      }
                      

                      直接强转+printf

                      • -1
                        @ 2023-6-24 17:01:16
                        #include<stdio.h>//只是为了四舍五入方便
                        using namespace std;
                        int main()
                        {
                            int n;
                            double sn=0,i=1;//可以直接把i声明为double
                            scanf("%d",&n);
                            while(i<=n)//i每次增加1
                            {
                                sn+=1/i;
                                i+=1;
                            }
                            printf("%.3f",sn);
                        }
                        

                        另一种解法

                        • -3
                          @ 2023-7-13 10:37:19

                          解析:

                          1.定义循环变量 i ,我循环时特别喜欢用循环变量 i 。输入变量 n ,以及统计变量 sum。(我发现我特别喜欢 sum 😄 )

                          注意!!!统计变量一定要用双精度double必须记住

                          2.在循环次数不确定的情况下使用 while 循环, 条件为 a <= n ( a 是循环变量)

                          3.众所周知,分数可以改写为除法算式(如:X / Y)所以我们用 q 加上 1.0 / a。

                          注意!!!要写 1.0 而不是 1,这俩东东不一样,因为算式结果会自动转化为更复杂的数值的数据类型。1 / 2 答案会是 0 ,(转化为整数了) 1.0 / 2 答案就会是 0.5 了。

                          4.循环变量 i 要自增 1 ,不然就死循环了。

                          5.用大朋友 fixed 控制小数位数并输出。

                          6.看到这里就点“亿”赞吧!👍

                          #include <iostream>
                          #include <cstdio>           //导入cstdio库
                          using namespace std;
                          
                          int main()
                          {
                             int i = 1,n;            //定义i,n。
                             double sum = 0;
                              cin >> n;
                              while (i <= n)         //while循环。
                              {
                                  sum += 1.0/i;
                                  i++;
                              }
                               printf ("%.3lf",sum); //打印出来
                              return 0;
                          }
                          
                        • 1

                        信息

                        ID
                        224
                        时间
                        1000ms
                        内存
                        256MiB
                        难度
                        5
                        标签
                        递交数
                        2243
                        已通过
                        881
                        上传者