Tính tổng nguyên: S = 1 + 1/2 + 1/3 + 1/4 +… 1/n

Yêu cầu: Nhập số tự nhiên n rồi tính tổng (lưu ý phép chia các số nguyên):

S = 1 + 1/2 + 1/3 + 1/4 +... 1/n ( n > 0)

Phân tích:

– Nhập vào số nguyên dương n (n > 0)

– Dùng vòng lặp for( ) để tính tổng S

Code:

/************************************************************
* Author: VNCODING
* History
* 2014/04/02        first create    VNCODING
*************************************************************/
#include <stdio.h>
#include <conio.h>

void main()
{
    int n,i;
    float S = 0;
    do
    {
        printf("\nNhap n > 0: ");
        scanf("%d",&n);
    }
    while (n <= 0);

    for(i = 1;i <= n;i++)
    {
        S +=1/(float)i;
    }
    printf("\nS = %f", S);
    getch();
}

Kết quả:

Nhap n > 0: 5
S = 2.283334

19 Comments on Tính tổng nguyên: S = 1 + 1/2 + 1/3 + 1/4 +… 1/n

  1. #include
    #include

    using namespace std;

    int main() {
    double n,s;
    cout<>n;
    for(int i=1;i<=n;i++){
    s+=1/(float)i;
    }
    cout<<"Tong can tim, s= "<<setprecision(4)<<s<<"\n";
    }

  2. #include
    int main () {
    int a,i;
    float s=0;
    do {
    printf (“gia tri cua a \t “);
    scanf (“%d”,&a);
    }
    while (a<=1);
    for (i = 1; i <= a; i++) {
    s += 1/(float)i;
    }
    printf ("Tong S = %.2f \t ",s);

    return 0;
    }
    Cho e hỏi chút về chỗ lệnh printf cuối cùng ạ. Tại sao lệnh printf khi nằm ngoài dấu {} chỉ cho 1 giá trị và khi lệnh printf nằm trong dấu {} lại cho nhiều hơn 1 giá trị ạ? Em cảm ơn

    • Hi Thường,

      >Cho e hỏi chút về chỗ lệnh printf cuối cùng ạ. Tại sao lệnh printf khi nằm ngoài dấu {} chỉ cho 1 giá trị và khi lệnh printf nằm trong dấu {} lại cho >nhiều hơn 1 giá trị ạ? Em cảm ơn

      Nếu đặt printf trong {} là trong vòng lặp for => câu lệnh print được gọi nhiều lần.

      • Dạ, em cảm ơn ạ. Vậy phiền ad trả lời dùm e thêm một câu nữa nha. Em k hiểu tại sao lại dùng lệnh lặp do while ở phần đầu bài ạ? Em thấy bỏ phần đó ra thì chương trình vẫn chạy đúng ạ?

        • Hi Thường,

          >Em k hiểu tại sao lại dùng lệnh lặp do while ở phần đầu bài ạ? Em thấy bỏ phần đó ra thì chương trình vẫn chạy đúng ạ?

          Vòng lặp ở đầu hàm main() dùng để validate (kiểm tra) điều kiện nhập vào số nguyên dương.
          – Nếu user nhâp vào số N < = 0, thì vòng lặp chạy và yêu cầu user nhập lại - Nêu user nhập vào số N > 0, thì kết thúc vòng lặp

  3. #include
    #include
    using namespace std;
    int main ()
    {
    int n;
    float tong=0;
    cout<>n;
    for (int a;a<=n;a++)
    {
    tong=tong+1/(float)a;
    }
    cout<<setprecision(4);
    cout<<tong;
    return 0 ;
    }

Leave a Reply to Thường Cancel reply