Viết thuật toán tính tổng s 1 2 3 n năm 2024

Trong bài viết này chúng ta sẽ làm bài tập S(n) = 1 + 2 + 3 + … + n bằng C / C++. Đây là một bài căn bản khi bắt đầu học một ngôn ngữ lập trình nào đó, vì nó luyện tư duy rất tốt.

Viết thuật toán tính tổng s 1 2 3 n năm 2024

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Mình sẽ thực hiện hai chương trình để tính bài toán này bằng hai ngôn ngữ khác nhau đó là ngôn ngữ C và C++. Để hiểu được bài tập này các bạn cần có kiến thức cơ bản về C / C++.

1. Tính S(n) = 1 + 2 + 3 + … + n bằng ngôn ngữ C

Ta cần khai báo biến n là phần tử cuối cùng của biểu thức. Ví dụ n = 6 thì biểu thức ta cần tính sẽ là 1 + 2 + 3 + .. + 6. Và một biến S để lưu kết quả của biểu thức trên.

Sau đó sử dụng printf() và scanf() để lấy dữ liệu từ bàn phím.

Bài viết này được đăng tại [free tuts .net]

Ta cần một vòng lặp for lặp từ 1 đến n (nghĩa là từ giá trị đầu đến giá trị cuối của biểu thức). Bên trong vòng lặp thì cho S = S + i.

Sau khi tính xong chỉ cần hiển thị S ra màn hình.

Code:

include<stdio.h>

int main() { int n; long S; S = 0; i = 1; printf("\nNhập vào số n: "); scanf("%d", &n); for(int i = 1; i <=n; i++) {

S = S + i;  
} printf("\nTổng 1 + 2 + ... + %d là %ld: ", n, S); printf("\n--------\n"); printf("Chương trình này được đăng tại Freetuts.net"); }

Kết quả:

2. Tính S(n) = 1 + 2 + 3 + … + n bằng ngôn ngữ C++

Giải bằng ngôn ngữ C++ về cơ bản nó tương tự như ngôn ngữ C ở ví dụ trên.

Chỉ thay đổi một chút là ở ngôn ngữ C ta sử dụng printf() và scanf() để lấy dữ liệu từ bàn phím. Còn ở ngôn ngữ C++ thì ta sử dụng cout và cin để lấy dữ liệu từ bàn phím.

Code:

include <iostream>

using namespace std; int main() { int n; long s = 0; cout<<"Nhập vào số n: "; cin>> n; for(int i = 1; i <= n; i++){

s += i;  
} cout<<"Tổng 1 + 2 + 3 +... + "<<n<<" là: "<<s; cout<<"\n------\n"; cout<<"Chương trình này được đăng tại Freetuts.net"; }

Kết quả:

Như vậy là chúng ta đã thực hiện xong hai chương trình tính biểu thức 1 + 2 + 3 + .... + n bằng ngôn ngữ C / C++. Đây là một trong các bài tập luyện tư duy logic rất tốt, vì vậy hãy thực hành thật nhiều nhé !!!

Đây là bài hướng dẫn đầu tiên nên mình muốn nói luôn, các bài code về sau mình viết bằng compiler visual studio nhé!

Bài viết này mình hướng dẫn cách viết cụ thể một chút để các bạn chưa học lập trình bao giờ có thể tiếp cận, do đó bạn nào đã biết rồi thì thông cảm nhé. Các bạn có thể dóng góp ý kiến hay cách viết khác trong cmt nhé!

Đa phần các bài toán tính tổng như thế này đều sử dụng đến vòng lặp. Mà cụ thể ta sử dụng vòng for để xử lý. Yêu cầu của đề bài ta có thể hiểu theo 2 cách:

  • Thứ nhất là viết chương trình tính tổng.
  • Thứ hai là viết hàm tính tổng.

Xử lý bài toán trong chương trình chính (Hàm Main)

include <iostream>

using namespace std; void main(){ int n, s = 0; cout<< “Nhap so nguyen n:”; cin>>n; for(int i=0; i<=n; i++){ s += i; } system(pause); }

Ở bài toán trên các bạn nếu viết thẳng trong hàm main thì viết tương tự như trên. Cách viết này thường được sử dụng cho các lập trình viên mới học, sau khi rành rồi thì người ta khuyến khích nên sử dụng hàm, vì hàm dễ sữa cũng như quản lý hơn.

Dòng

Include <iostream>, thư viện iostream về bản chất là thư viện nhập xuất chuẩn của C++ để phục vụ cho cin và cout. Đơn giản, còn nếu các bạn mới học trong trường dạy là print hay scan thì dùng stdio.h, dùng cái nào cũng được cả, nhưng theo cá nhân mình thấy dùng cout và cin đơn giản hơn, code dễ hiểu hơn!

Dòng void main(): Void trong C là một từ khóa ít được nhắc đến, nhưng khi lập trình nhiều thì ta mới nắm.hàm void: hàm không trả về gì cả, con trỏ void: void * trỏ được tới mọi thứ. Kích thước của void* tùy thuộc vào hệ điều hành 16, 32, 64 bit. Con trỏ hàm void: void (*foo)(int); giống như hàm void, nhưng đây là con trỏ hảm. (Source: http://daynhauhoc.com/)

  • int n, s = 0; // Khai báo biến n và s kiểu int, n không có giá trị mặc định, s mặt định là 0.
  • cout<< “Nhap so nguyen n:”; // Xuất dòng Nhap so nguyen n: ra màng hình.
  • cin>>n; // Nhập n từ bàn phím.
  • for(int i=0; i<=n; i++){ s += i; }// Vòng lặp xử lý, với số lần lặp là n nhặp vào từ bàn phím, lần thứ 0 thì s = s + 0 (s+=i), lần 1 thì s=s+1, 2 thì s=s+2… cứ như thế đến n.
  • system(pause);// Đơn giản là lệnh dừng màn hình, nếu ko có lện này thì sau khi nhập n và enter thì màng hình sữ tự đóng. Cái này tùy compiler!

Xử lý bài toán bằng hàm:

include <iostream>

using namespace std; int tinhTong01(int n){ int s = 0; for (int i = 0; i <= n; i++){ s += i; } return s; } void main(){ int n; cout << “Nhap so nguyen n:”; cin >> n; int kq = tinhTong01(n); cout << “Tong la:”<< kq << endl; system(“pause”); }

Xử lý bằng hàm thì cũng tương tự như xử lý thẳng trong chương trình chính, chỉ khác là đưa giải thuật ra một hàm bên ngoài (tinhTong01). Khi khai báo hàm mình cho kiểu trả về của hàm là int, vì thế trước khi kết thúc hàm phải có return, tương tự với các kiểu float, double,… trừ void.

Ở đây là tính tổng s nên mình mới dùng return s, chứ các bạn thử return n xem nó sẽ ra cái gì… Chắc chắn sẽ ra giá trị mà các bạn vừa nhập!

Các bạn lưu ý các biến hay hằng khai báo trong hàm là cục bộ, compiler chỉ hiểu khi còn nằm trong hàm, còn ra khỏi hàm thì nó chẳng hiểu mọe gì. Khi đó, mình mới sử dụng một biến kq để thay thế.

Lời kết

Tùy vào yêu cầu đề bài mà các bạn giải quyết bài toán theo nhiều cách, vì đây là một môn yêu cầu tư duy nên sẽ có nhiều cách giải khác nhau, khi làm bài các bạn nên tập viết code và hạn chế việc copy paste, chúc các bạn thành công!