Bài 14: Viết Chương Trình Đảo Ngược Các Ký Tự Trong Chuỗi Trong C

Để rèn luyện kỹ năng và kiến thức về chuỗi trong C, thời điểm ngày hôm nay Lập trình không khó sẽ cùng những bạn đi làm bài tập đảo ngược chuỗi nhập từ bàn phím trong ngôn từ C / C + +. Chúng ta sẽ cùng nhau thực thi đả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 những thư viện của ngôn từ C / C + + .Bạn đang xem : Viết chương trình đảo ngược những ký tự trong chuỗiInput

Đả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 những bạn hoàn toàn có thể xem lại cách nhập chuỗi tại đây .Đầu tiên những bạn phải đếm xem chuỗi có bao nhiêu kí tự. Với trách nhiệm 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 những 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 những 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à tất cả chúng ta dùng để lưu kí tự .Xem thêm : Mang Thai 38 Tuần Đã Mổ Được Chưa Có Dấu Hiệu Chuyển Dạ : Những Điều Cần BiếtNếu bạn chỉ cần xuất ra thì hoàn toàn có thể dùng 1 vòng for theo hướng ngược lại như hàm InDaoNguoc .Lời giải tìm hiểu thêm :
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 CNgôn ngữ C có thư viện string. h, trong đó có hàm strrev ( ) giúp tất cả chúng ta hoàn toàn có thể đảo ngược chuỗi một cách đơn thuầ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 thuận tiện 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ờ trách nhiệm của tất cả 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 thuầ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 những bạn đã theo dõi !Theo dõi lập trình không khó tại :Các bài viết trong khóa họcBài trước: Bài 57. Các hàm trong thư viện string.hBài sau: Bài 59. Chuyển kiểu string sang int
TAGS
Facebook
Twitter
Pinterest
WhatsApp
**

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

Bảng băm – Hash tables

Subscribe
Connect with
Notify of
new follow-up comments
Label
Name*
Email*
Website
Connect with
Label
Name*
Email*
Website
7 Bình luận
Inline Feedbacks
View all comments
Load More Comments
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È và ĐỐI TÁC —-
© 2018 – 2020. Bản quyền thuộc Lập Trình Không Khó. Privacy và Terms
7
0
Would love your thoughts, please comment.x
()
x
| Reply
Insert
NHIỀU BÀI VIẾT HƠN

Bảng băm – Hash tables

Bài 19. Vòng lặp while và do while trong C

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