Chuyển đến phần nội dung

Cho số nguyên dương n tính tổng các chữ số của n

Nội dung chính

  • Mô tả bài toán
  • Hướng dẫn
  • Thuật toán
  • Source code tham khảo
  • Kết luận
  • Thảo luận
  • 2. Lời giải
  • 3. Tổng kết
  • Bài toán tính tổng các chữ số trong một số
  • Video liên quan

Diễn đàn sinh viên CNTT Quảng Ninh

Trang chủ

Diễn đàn

Công nghệ phần mềm

Lập trình ứng dụng Desktop

Visual C++

Làm quen cách viết các chương trình đơn giản, cách sử dụng:

  • VÒNG LẶP WHILE 
  • Phép chia nguyên (division)
  • Phép chia dư (modulus)

Mô tả bài toán

Tính tổng của các chữ số của một số nguyên.

Ví dụ:               

Hướng dẫn

Thuật toán

  • Lấy chữ số cuối của số nguyên sử dụng toán tử chia lấy dư (Modulus)
  • Cộng chữ số cuối vào biến Sum
  • Xóa chữ số cuối bằng cách sử dụng toán tử chia lấy phần nguyên (Division)
  • Lặp lại đến khi số nguyên bằng 0

Bài tập mang tính tham khảo, hỗ trợ các bạn làm quen và luyện tập với các bàn toán lập trình cơ bản trong C++.

Kteam khuyến khích các bạn tự phân tích đề bài > tự giải bài toán > debug để kiểm tra kết quả và fix lỗi trong quá trình giải. Sau đó, bạn có thể tham khảo source code mẫu để hoàn chỉnh bài tập. 

Để được hỗ trợ tốt nhất, bạn có thể đặt câu hỏi ở phần bình luận bên dưới bài viết hoặc ở mục Hỏi & Đáp.

Source code tham khảo

Header.h

// Header.h
#ifndef _HEADER_
#define _HEADER_
int tinhTongCacChuSoDungFor(int);
int tinhTongCacChuSoDungWhile(int);
#endif // _HEADER_

Source.cpp

// Source.cpp
#include <iostream>
#include “Header.h”
using namespace std;
int main()
{
int nInput;
cout << “Enter n(integer): “;
cin >> nInput;
int nSum = tinhTongCacChuSoDungWhile(nInput);
cout << “Tong cac chu so: ” << nSum << endl;
return 0;
}
int tinhTongCacChuSoDungWhile(int nInput)
{
int nRem, nSum = 0;
while (nInput != 0)
{
// Lấy chữ số cuối của số nguyên sử dụng toán tử chia lấy dư (Modulus)
nRem = nInput % 10;
// Cộng chữ số cuối vào biến Sum
nSum = nSum + nRem;
// Xóa chữ số cuối bằng cách sử dụng toán tử chia lấy phần nguyên (Division)
nInput = nInput / 10;
}
return nSum;
}
int tinhTongCacChuSoDungFor(int nInput)
{
int nRem, nSum = 0;
for (; nInput != 0;)
{
nRem = nInput % 10;
nSum = nSum + nRem;
nInput = nInput / 10;
}
return nSum;
}

Kết luận

Bạn có thể củng cố kiến thức C++ từ khóa Lập trình C++ cơ bản.

Hoặc tìm hiểu thêm các bài tập khác trong khóa Bài toán kinh điển trong lập trình

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của bạn để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.

Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Bài tập cơ bản này ta có thể có hướng giải quyết là sử dụng vòng lặp while trong ngôn ngữ lập trình C.

Đầu vào sẽ là một biến nguyên dương N,  yêu cầu của bài toán là tính tổng các chữ số của N. Ví dụ N=234 suy ra tổng các chữ số của N là 2 + 4 +3 = 9.

2. Lời giải

Để giải được bài tập tính tổng các chữ số của số nguyên dương N trong C bạn phải có kiến thức về toán học cơ bản, có kiến thức về lập trình C cơ bản.

Các bước thực hiện bài toán như sau:

Bước 1: Khai báo biến int N, khai báo biến int gan = N để gán giá trị của N, khai báo biến int tong = 0 để tính tổng các chữ số của N

Bước 2: Nhập vào N với điều kiện N>=0, nếu không yêu cầu nhập lại.

Bước 3: Ta sử dụng vòng lặp while với điều kiện là khi biến gan còn khác 0 thì vòng lặp tiếp tục, trong vòng lặp ta cho biến tong tăng lên gan%10 mỗi khi lặp, còn biến gan chia 10 mỗi khi lặp.

Bước 4: In biến tong ra màn hình.

Chương trình giải bài tập tính tổng các chữ số của số nguyên dương N trong C như sau :

#include<stdio.h>
#include<math.h>
int main()
{
//khai bao bien N
int N;
//khai bao bien gan
int gan;
//Khai bao bien dem = 0
int tong = 0;
do
{
//Nhap vao du lieu cua N
printf(“\nNhap N: “);
scanf(“%d”, &N);
}while(N < 0 && printf(“\nLoi: n >= 0 !”));//Neu N<0 yeu cau nhap lai
// khai bao gan = N
gan = N;
while(gan != 0)//Neu biên gan con khac 0 thuc hien vong lap
{
tong = tong + gan%10;//bien tong tang len gan%10
gan = gan / 10;//bien gan chia 10
}
//in bien tong ra man hinh
printf(“\nTong cac chu so cua %d la %d”,N, tong);
}

Ví dụ tôi nhập N = 1234

Kết quả:

Nhap N: 1234Tong cac chu so cua 1234 la 10

3. Tổng kết

Để thực hiện giải bài tập tính tổng các chữ số của số nguyên dương N trong C bạn đọc cần phải có kiến thức cơ bản về ngôn ngữ lập trình C, bạn cần nắm vững cách nhập xuất căn bản và các cách sử dụng vòng lặp trong C và các phép toán học cơ bản.

Viết chương trình Tính tổng các chữ số trong một số n ? Đây là một bài tập khá hay :D, tuy nó cũng khá đơn giản thôi, nhưng cái mà nó mang lại cho chúng ta không hề giản đơn như chúng  ta nghĩ là đơn giản :v. Vậy thì bài tập này cho chúng ta những gì ? Hãy cũng mình tìm hiểu trong bài viết này nhé, mình xin được bắt đầu bài viết.

Bài toán tính tổng các chữ số trong một số

Đề bài: Trên ngôn ngữ lập trình C , hãy nhập vào một số nguyên dương n. Hãy viết chương trình Tính tổng các chữ số của n , in kết quả ra màn hình.

Như vậy, bài toán này sẽ giúp các bạn học được các kiến thức cơ bản nhất về nhập xuất trong lập trình C. Cách sử dụng vòng lặp toán tử chia dư, chia nguyên trong lập trình C.

Xác định input output:

input: Nhập n = 12345

output: s = 1 + 2 + 3 + 4 + 5

Ý tưởng :

  1. Khởi tạo một biến tachso để tách các chữ số của n bằng toán tử chia dư và một biến s để tính tổng bằng các số đã tách. Song song với tách số chúng ta sử dụng toán tử chia nguyên để xóa chữ số cuối của n
  2. Đặt chúng vào một vòng lặp for và chạy
  3. Đến đây thì f11 thôi 😀

Ok chỉ vậy thôi, bây giờ mình sẽ code và chú thích chi tiết ngay ở dưới.

#include<conio.h>

#include<stdio.h>

int main(){

    int n;

    int sotachra;

    int s = 0;

    printf(“Nhap n: “);

    scanf(“%d”,&n);

    for(;n!=0;){

        sotachra = n % 10;

        s += sotachra;

        n /= 10;

    }    

    printf(“%d”,s);

}

Kết quả:

Okê xong rồi đấy :D, Vậy là mình đã giải quyết xong bài toán Tính tổng các chữ số trong một số n . Mình rất vui vì bạn đã tham khảo bài viết này của mình. Chúc bạn học tập thật tốt và từng bước từ newbie đi lên coder và trở thành developer hihi. Hãy nhớ là nền vững thì mới xây cao. Bọn mình và sếp sẽ luôn đồng hành cùng các bạn hehe. Các bạn cứ để lại bình luận nếu thắc mắc,  mình xin được kết thúc bài viết tại đây.

Xem thêm bài viết về C/C++ tại đây

Lên trên