Lập Trình C: Hàm Đảo Chuỗi Trong C++, Hàm Strrev()

Để luyện tập kiến thức về chuỗi trong C, hôm nay Lập trình không khó sẽ cùng các bạn đi làm bài tập đảo ngược chuỗi nhập từ bàn phím trong ngôn ngữ C/C++. Chúng ta sẽ cùng nhau thực hiện đảo ngược chuỗi không sử dụng hàm và đảo ngược chuỗi sử dụng hàm có sẵn trong các thư viện của ngôn ngữ C/C++.

Bạn đang xem: Hàm đảo chuỗi trong c++

Input

Đảo ngược chuỗi không dùng hàm có sẵn

Nếu chưa biết cách nhập chuỗi các bạn có thể xem lại cách nhập chuỗi tại đây.

Đầu tiên các bạn phải đếm xem chuỗi có bao nhiêu kí tự. Với nhiệm vụ này thì mình sẽ viết riêng một hàm Length() trả về số lượng kí tự trong chuỗi. Lưu ý khi các bạn nhập chuỗi vào sử dụng hàm fgets() thì nó sẽ đọc cả kí tự “\n” (hay kí tự enter) vào cuối chuỗi. Nhiệm vụ của các bạn là không đếm kí tự này.

Sau khi có được số lượng kí tự trong chuỗi, việc tiếp theo sẽ là đảo ngược chuỗi. Các bạn sẽ dùng một con trỏ kiểu char để lưu lại chuỗi đảo ngược.

Cuối cùng hàm DaoNguoc sẽ trả về con trỏ mà chúng ta dùng để lưu kí tự.

Xem thêm: Code Tân Thủ Võ Lâm Chi Mộng, Giftcode Võ Lâm Chi Mộng Mobile

Nếu bạn chỉ cần xuất ra thì có thể dùng 1 vòng for theo hướng ngược lại như hàm InDaoNguoc.

Lời giải tham khảo:

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include
int Length(char s<>)
{
int i = 0;
while (s != NULL)
++i;
return i – 1;
}
char *DaoNguoc(char str<>)
{
int length = Length(str);
char *temp = new char;
for (int i = 0; i length; i++)
{
temp = str;
}
temp = NULL; //Kết thúc chuỗi
return temp;
}
void InDaoNguoc(char str<>){
int length = Length(str);
printf(“\nChuoi sau khi dao nguoc la: “);
for (int i = length – 1; i >= 0; i–)
{
printf(“%c”, str);
}
}
int main()
{
char s<100>;
printf(“\nNhap chuoi: “);
fgets(s, 100, stdin); // nên dùng hàm fgets
/*gets(s);*/
char *kq = DaoNguoc(s);
InDaoNguoc(s);
printf(“\nChuoi sau khi dao nguoc la: %s”, kq);
return 0;
}
0
1
2
3
4
5
6
7
8
PS G:\c_cources\day_58> g++ .\Reverse.cpp -o .\Reverse
PS G:\c_cources\day_58> .\Reverse.exe
Nhap chuoi: Nguyen Van Hieu
Chuoi sau khi dao nguoc la: ueiH naV neyugN
Chuoi sau khi dao nguoc la: ueiH naV neyugN

Đảo ngược chuỗi sử dụng hàm có sẵn

Với ngôn ngữ lập trình C

Ngôn ngữ C có thư viện string.h, trong đó có hàm strrev() giúp chúng ta có thể đảo ngược chuỗi một cách đơn giản:

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include
#include
int main()
{
char name<30> = “Nguyen Van Hieu”;
printf(“Truoc khi dao nguoc : %s\n”, name);
printf(“Sau khi dao nguoc : %s”, strrev(name));
return 0;
}

Kết quả:

0
1
2
3
4
5
PS G:\c_cources\day_57> g++ .\StringFuntion.cpp -o .\StringFuntion
PS G:\c_cources\day_57> .\StringFuntion.exe
Truoc khi dao nguoc : Nguyen Van Hieu
Sau khi dao nguoc : ueiH naV neyugN

Với ngôn ngữ C++

Với việc sử dụng thư viện string thì bạn không cần phải đếm số lượng kí tự nữa rồi! Rất tiện lợi phải không.

Đầu tiên thì bạn khởi tạo một temp(kiểu string) trống, sau đó ta lần lượt thêm từng kí tự vào cuối temp. Ta sẽ sử dụng hàm pusk_back để thêm kí tự vào cuối temp. Bây giờ nhiệm vụ của chúng ta là lấy từng kí tự của s theo chiều từ sau tới và thêm vào temp.

Cuối cùng hàm DaoNguoc sẽ trả về temp, chính là chuỗi đã đảo ngược.

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include
#include
using namespace std;
string DaoNguoc(string s) {
int length = s.length();
string temp;
for (int i = length-1; i >=0; i–) {
temp.push_back(s);
}
return temp;
}
int main()
{
string s;
cin.clear();
getline(std::cin, s);
cout “Chuoi sau khi dao nguoc la: “;
cout DaoNguoc(s);
return 0;
}
0
1
2
3
Hoc lap trinh
Chuoi sau khi dao nguoc la: hnirt pal coH

Hoặc đơn giản hơn rất nhiều nếu sử dụng hàm sau đây:

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include
#include
using namespace std;
int main()
{
string str = “Lap trinh khong kho”;
// Reverse str
reverse(str.begin(), str.end());
cout str;
return 0;
}

Kết quả:

0
1
2
ohk gnohk hnirt paL

Bài viết mình đến đây cũng xin kết thúc. Cám ơn các bạn đã theo dõi !

Theo dõi lập trình không khó tại:

TAGS
Facebook
Twitter
Pinterest
WhatsApp
**

Bài tập struct trong C/C++ có lời giải

*

Giới thiệu website Luyện Code Online

*

Giáo trình Kỹ thuật lập trình C – Phạm Văn Ất

*

Tổng hợp tài liệu lập trình C/C++ cho người mới

Sự khác nhau giữa C và C++ là gì?

Học lập trình online với mức giá ưu đãi

Theo dõi
Kết nối với
Thông báo của
bình luận theo dõi mới
Label
Name*
Email*
Website
Kết nối với
Label
Name*
Email*
Website
7 Bình luận
Phản hồi nội tuyến
Xem tất cả bình luận
Tải thêm bình luận
Khóa học miễn phí

Blog chia sẻ kiến thức lập trình của Hiếu, xây dựng cộng đồng những người học lập trình. Cho đi kiến thức mình có là cách học tập hiệu quả nhất

Báo lỗi / Liên hệ / Hợp tác / Quảng cáo
Blogger
Facebook
Linkedin
Discord
Youtube

BÀI VIẾT HAY

Bài 1. Giới thiệu khóa học “Học C Bá Đạo”

1000 bài tập lập trình C/C++ có lời giải của thầy Khang

Kiểm tra số nguyên tố sử dụng C/C++ và Java

CHUYÊN MỤC HAY

– BẠN BÈ & ĐỐI TÁC –

© 2018-2020. Bản quyền thuộc Lập Trình Không Khó. Privacy & Terms

7
0
Rất thích suy nghĩ của bạn, hãy bình luận.x
()
x
| Reply
Insert
NHIỀU BÀI VIẾT HƠN

Bài 57. Các hàm trong thư viện string.h

Viết chương trình liệt kê các dãy nhị phân có độ…

10111213141516171819202122232425262728293031323334353637383940414243#includeint Length(char s<>)int i = 0;while (s