Yêu cầu:
– Nhập vào số nguyên dương n
– Tính tổng S(n) = 1/2 + 3/4 + 5/6 +…+ (2n+1)/(2n+2)
Giải thuật:
– Dùng vòng lặp for, do while để duyệt biến i từ 0 tới n
– Tính tổng: s = s + (2i + 1)/(2i + 2)
Code
/************************************************************ * Author: VNCODING * History * 2016/12/12 first create VNCODING *************************************************************/ #include <stdio.h> #include <conio.h> int main() { printf("S(n) = 1/2 + 3/4 + 5/6 +...+ (2n+1)/(2n+2)\n"); int i, n; float s = 0.0; do { printf("n = "); scanf("%d", &n); }while(n < 0); for(i = 0; i <= n; i++) { s += (2*i + 1.0)/(2*i + 2); } printf("\nS(%d) = %f", n, s); getch(); return 0; }
Kết quả:
Admin cho e hỏi chút ạ: Tại sao khi sử dụng kiểu dữ liệu float thì tử số luôn phải khai báo rõ vd:1.0 còn mẫu số thì không ạ?
Hi PhongDT,
Đây là style của mình.
bạn có thể khai báo như sau cũng được
ad cho em hỏi tại sao một số bài tính tổng có những bài s=0 và i=0 nhưng cũng có những bài s=1 và i=0 or s=0, i=1 e chưa hiểu rõ chỗ này lắm ạ
Hi Bắc,
>ad cho em hỏi tại sao một số bài tính tổng có những bài s=0 và i=0 nhưng cũng có >những bài s=1 và i=0 or s=0, i=1 e chưa hiểu rõ chỗ này lắm ạ
Nó phụ thuộc vào công thức tính tổng tổng quát bạn nhé.
Ví dụ:
1) S(n) = 1/2 + 3/4 + 5/6 +…+ (2n+1)/(2n+2)
–> user có thể nhập n = 0, i chắc chắn phải chạy từ 0, s = 0
2) S(n) = 1/2 + 1/4 + 1/6 + 1/8 + 1/2n
–> user có thể nhập giá trị n > 0, i chắc chắn chạy tử 1, s = 0