Đếm số chữ số của số nguyên dương

Bài toán kinh điển trong lập trình

0.0 (0 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 03:21 15-05-2018 32.641 lượt xem 4 bình luận
Học nhanh

Danh sách bài học

Đếm số chữ số của số nguyên dương

 

Mục tiêu

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


Mô tả bài toán

Cho số n, đếm số lượng chữ số của số nguyên dương n.

Ví dụ:               

  • Input:              2468
  • Output:           4

Hướng dẫn

Định nghĩa

Đệ quy (Recursion) là một trong những giải thuật khá quen thuộc trong lập trình (trong toán học thường được gọi với tên khác là “quy nạp”).

Trong lập trình, một hàm được gọi là đệ quy khi nó gọi chính nó trong thân hàm.

Ví dụ:

int Recusion()
{
     Recusion();
}

Hàm đệ quy gồm 2 phần:

  • Phần cơ sở: Điều kiện thoát khỏi đệ quy
  • Phần đệ quy: Thân hàm có chứa lời gọi đệ quy

Thuật toán

Có thể giải theo 2 cách:

  • Dùng vòng lặp
  • Dùng đệ quy

 

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 demSoChuSo(int);
int demSoChuSoDeQuy(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 nResult = demSoChuSoDeQuy(nInput);
	cout << nResult << endl;

	return 0;
}

int demSoChuSo(int nInput)
{
	int nCount = 0;
	while (nInput != 0)
	{
		nInput = nInput / 10;
		nCount++;
	}
	return nCount;
}

int demSoChuSoDeQuy(int nInput)
{
	if (nInput < 10) // n chỉ có 1 chữ số
	{
		return 1;
	}
	return 1 + demSoChuSoDeQuy(nInput / 10);
}

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ÌNH LUẬ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.

Nội dung bài viết

Tác giả

Khóa học

Bài toán kinh điển trong lập trình

Tổng hợp những bài toán trong lập trình, ngẫu nhiên từ cơ bản đến nâng cao.

Đánh giá

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
CáThíchLeoCây đã bình luận 16:46 05-08-2018
number = int(input("nhap vao so nguyen duong:"))
num = 0

while number > 0:
    number /= 10
    num += 1
print "so chu so:",num

 

KuChiNguoc đã bình luận 09:10 01-08-2018

Khi nhập vào là ký tự --> luôn ra kết quả là 1, cho em hỏi cách khác phục

tanlalan777 đã bình luận 09:39 26-07-2018

Cách ngắn gọn sử dụng vòng lặp while ạ :

#include <iostream>
using namespace std;
int main()
{
	int input;
	cout << " Nhap vao so can kiem tra so chu so" << endl;
	cin >> input;
	int sochuso(0);
	while (input!=0)
	{
		sochuso = sochuso + 1;
		input = input / 10;
	}
	cout << sochuso << endl;
	system("pause");
	return 0;

}

 

tvc12591 đã bình luận 11:07 01-05-2018

Python

def demso(_n):
    _dem = 0
    while _n >0:
        _n = _n // 10
        _dem = _dem + 1
    return _dem
print(demso(121312))
def demsochu(_str):
    _chu = 0
    _so = 0
    for _i in _str:
        if _i.isdigit() : _so = _so + 1
        if _i.isalpha() : _chu = _chu + 1
    print('Ký tự vừa nhập chứa',_so,'ký tự là số')
    print('Ký tự vừa nhập chứa',_chu,'ký tự là chữ')
    return
demsochu('tranchien 12312')

 

Không có video.