Nội dung chính
Bài tập C: Đảo ngược thứ tự từ của một chuỗi
Đề bài: Viết chương trình C để đảo ngược thứ tự từ của một chuỗi trong C.
Yêu cầu bài tập là đảo ngược thứ tự của các từ trong một chuỗi. Ví dụ, bạn đảo chuỗi ban đầu Toi Yeu Lap Trinh thành Trinh Lap Yeu Toi.
Lời giải
Dưới đây là chương trình C để giải bài tập đảo ngược thứ tự từ của một chuỗi trong C:
#include <stdio.h> #include <string.h> /** * ham tinh do dai cua chuoi */ int string_length(char s[]) { int i=0; while(s[i]!='\0') i++; return i; } /** * ham dao nguoc chuoi */ void string_reverse(char str[]) { int i, j, len; char ch; j = len = string_length(str) - 1; i = 0; while(i < j) { ch = str[j]; str[j] = str[i]; str[i] = ch; i++; j--; } } /** * ham main */ int main (void) { char s1[] = "Toi Yeu Lap Trinh"; char reverse[100] = ""; char temp[50]; int i, j, n; n = string_length(s1); for(i = n-1; i >= 0; --i) { for(j = 0; i >= 0 && s1[i] != ' '; --i,++j) temp[j] = s1[i]; temp[j] = '\0'; string_reverse(temp); strcat(reverse, temp); strcat(reverse, " "); } printf("Chuoi ban dau:\n %s", s1); printf("\nChuoi sau khi da duoc dao nguoc:\n %s",reverse); return 0; }
Chạy chương trình C trên cho kết quả như sau: