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.

Đếm số chữ số của số nguyên dương Đếm số chữ số của số nguyên dương Đếm số chữ số của số nguyên dương Đếm số chữ số của số nguyên dương Đếm số chữ số của số nguyên dương 4/5 (163 reviews)

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

Đã đăng 2016-12-21 23:03:23 bởi Kteam
4 bình luận 26043 lượt xem
Đếm số chữ số của số nguyên dương 4 /5 stars (3 reviews)
 
 

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ó”.

 

Chia sẻ:
Thảo luận Hỏi và đáp Báo lỗi bài viết
Hủy bỏ   hoặc  
Đếm số chữ số của số nguyên dương
CáThíchLeoCây 2018-08-05 16:46:50
number = int(input("nhap vao so nguyen duong:"))
num = 0

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

 

0 bình chọn
Reply
Đếm số chữ số của số nguyên dương
KuChiNguoc 2018-08-01 09:10:30

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

0 bình chọn
Reply
Đếm số chữ số của số nguyên dương
tanlalan777 2018-07-26 09:39:25

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;

}

 

0 bình chọn
Reply
Đếm số chữ số của số nguyên dương
tvc12591 2018-05-01 11:07:25

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')

 

0 bình chọn
Reply
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education