Các bài tập lâp trình c với xâu kí tự

Trong bài viết này, Lập trình không khó sẽ tổng hợp các bài tập chuỗi trong C có lời giải để các bạn tham khảo và luyện tập. Các bạn lấy đề từ bài viết này, chủ động làm trước rồi sau đó so sánh với đáp án. Mình tin chắc bạn sẽ học được rất nhiều theo cách học như vậy đấy.

Nếu bạn cần thêm kiến thức bổ trợ về chuỗi trong c, vui lòng xem chi tiết tại bài học số 56.

Bài tập chuỗi trong C có đáp án

Bài 1. Tính độ dài của chuỗi không dùng hàm có sẵn

include <stdio.h>

int length(char str[]){

int i = 0;
for(; str[i]; i++); // for(int i = 0; str[i] != '\0'; i++){}  
// same as  
return i;  
} int main(){
char str[100];  
printf("\nNhap chuoi: ");  
gets(str);
printf("Length = %d", length(str));  
}

Bài 2. Bài tập chuỗi có lời giải – Nhập chuỗi s từ bàn phím. Kiểm tra tính đối xứng của chuỗi vừa nhập.

Ý tưởng: Giả sử chuỗi đối xứng, thực hiện giải thuật bác bỏ. Nếu có 1 cặp ký tự (i, n – i -1) khác nhau => chuỗi không đối xứng. Ở đây n là độ dài của chuỗi.

include <stdio.h>

include <string.h>

char doixung(char s1[100]) {

int i;  
for (i = 0; i < strlen(s1) / 2; i++)  
{  
    if (s1[i] != s1[strlen(s1) - 1 - i])  
    {  
        return 0;  
    }  
}  
return 1;  
} int main() {
char s1[100];  
printf("xin moi ban nhap chuoi\n");  
gets(s1);  
if (doixung(s1) == 0)  
{  
    printf("chuoi vua nhap khong phai chuoi doi xung\n");  
}  
if (doixung(s1) == 1)  
{  
    printf("chuoi vua nhap la chuoi doi xung\n");  
}  
}

Bài 3. Bài tập mảng ký tự có lời giải – Nhập vào 1 chuỗi và 1 ký tự, kiểm tra ký tự có trong chuỗi hay không, nếu có đưa ra số lần xuất hiện của ký tự đó trong chuỗi.

include <stdio.h>

include <string.h>

/dem ki tu xuat hien trong xau/ char kiemtra(char chuoi[100], char n) {

int i, dem = 0;  
for (i = 0; i < strlen(chuoi); i++)  
{  
    if (chuoi[i] == n)  
    {  
        dem++;  
    }  
}  
if (dem > 0)  
{  
    printf("\nki tu %c trong chuoi xuat hien %d lan ", n, dem);  
}  
if (dem == 0)  
{  
    return 1;  
}  
} int main() {
char chuoi[100], n;  
int dem = 0;  
printf("nhap chuoi: ");  
gets(chuoi);  
printf("chuoi vua nhap la : %s", chuoi);  
printf("\nxin moi ban nhap vao ki tu can dem\n");  
scanf("%c", &n);  
if (kiemtra(chuoi, n) == 1)  
{  
    printf("\nki tu %c khong co trong chuoi\n", n);  
}  
}

Bài 4. Chuyển chuỗi nhập từ bàn phím thành chữ viết hoa, viết thường và viết hoa mỗi chữ cái đầu mỗi từ.

include <stdio.h>

include <string.h>

void to_lower(char s[]) {

for (int i = 0; s[i] != '\0'; i++)  
{  
    if (s[i] >= 'A' && s[i] <= 'Z')  
    {  
        s[i] = s[i] + 32;  
    }  
}  
} void to_upper(char s[]) {
for (int i = 0; s[i] != '\0'; i++)  
{  
    if (s[i] >= 'a' && s[i] <= 'z')  
    {  
        s[i] = s[i] - 32;  
    }  
}  
} void to_title(char str[]) {
for (int i = 0; str[i] != '\0'; i++)  
{  
    if (str[i] >= 'A' && str[i] <= 'Z') str[i] += 32;  
    if (str[i - 1] == ' ' || i == 0)  
    {  
        if (str[i] >= 'a' && str[i] <= 'z')  
            str[i] = str[i] - 32;  
    }  
}  
} int main() {
char s[100];  
int i;
printf("\nEnter a string : ");  
gets(s);  
to_lower(s);  
printf("\nString in Lowercase = %s", s);  
to_upper(s);  
printf("\nString in Uppercase = %s", s);  
to_title(s);  
printf("\nString in Titlecase = %s", s);  
return 0;  
}

Kết quả chạy:

Enter a string : nGUYEN van HIEU String in Lowercase = nguyen van hieu String in Uppercase = NGUYEN VAN HIEU String in Titlecase = Nguyen Van Hieu

Bài 5. Nhập vào 1 danh sách sinh viên và hiển thị danh sách sinh viên ra màn hình.

Các bài tập lâp trình c với xâu kí tự
Bài tập chuỗi trong C – Minh họa mảng chuỗi 2 chiều

include <stdio.h>

include <string.h>

/

Nhập/ xuất danh sách n sinh viên  
/ int main(){
char arr[1000][50]; // mảng chứa tối đa 1000 sinh viên, mỗi tên sinh viên dài tối đa 50 ký tự  
int n;  
do{  
    printf("\nNhap so luong SV: ");  
    scanf("%d", &n);  
}while(n < 1);
// Nhập danh sách  
for(int i = 0; i < n; i++){  
    printf("Ten SV thu %d: ", i+1);  
    fflush(stdin);  
    gets(arr[i]);  
}
// Xuất danh sách  
for(int i = 0; i < n; i++){  
    printf("\nTen SV thu %d: %s", i+1, arr[i]);  
}  
}

Kết quả chạy:

Nhap so luong SV: 3 Ten SV thu 1: Nguyen Van Hieu Ten SV thu 2: Nguyen Thi Mai Ten SV thu 3: Tran Van Manh Ten SV thu 1: Nguyen Van Hieu Ten SV thu 2: Nguyen Thi Mai Ten SV thu 3: Tran Van Manh

Đây là 1 ví dụ bài tập chuỗi 2 chiều trong C. Nhìn chung thì nó tương đương mảng 2 chiều nên mình sẽ không có bài viết trình bày cụ thể nhé.