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

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

    • @Tuan Anh,
      Xét phép toán a = b/c = 5/2 = 2
      Nếu b và c là số nguyên thì đây là phép chia lấy phần nguyên.
      Do vậy, cần ép kiểu cho b hoặc c là số thực kiểu float. Để phép chia a = b/c = 5/2 = 2.5

  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

Leave a Reply

Your email address will not be published.

*