Tải bản đầy đủ (.doc) (4 trang)

Thực hành tin học đại cương tuần 8

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (84.5 KB, 4 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
Đại học Công nghệ Thông tin
  
THỰC HÀNH MÔN TIN HỌC ĐẠI CƯƠNG
Bài số 8 : CHUỖI
I. Mục tiêu
1. Hiểu được cách khai báo và cách sử dụng chuỗi
2. Các hàm cơ bản trong chuỗi
II. Bài tập thực hành
1. Tìm chuỗi st2 trong chuỗi st1
2. Chèn chuỗi st2 vào bên phải chuỗi st1 tại vị trí k
III. Hướng dẫn thực hành
1. Tìm chuỗi st1 trong chuỗi st2
 Đề bài
Nhập vào chuỗi st1, st2. Hãy tìm số lần xuất hiện st2 trong st1
 Phân tích bài toán
Duyệt từng vị trí trong chuỗi và so sánh từng cặp kí tự trong st2 và
st1
TH1:
st1 = “ABCABD”
st2 = “ABD”
 xuất hiện 1 lần chuỗi “ABD”
TH2:
st1 = “AAAAA”
st2 = “AA”
 xuất hiện 4 lần chuỗi “AA”
 Chương trình minh họa
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()


{
char st1[80],st2[80];
int k;
printf("\n nhap chuoi st1 va st2: ");
fflush(stdin);
gets(st1);
fflush(stdin);
gets(st2);
int tong = 0;
for (int i = 0; i < strlen(st1) – strlen(st2); i++)
{
int j = 0;
while (j < strlen(st2) && st1[i+j] == st2[j])
j++;
if (j == strlen(st2))
tong++;
}
printf("\n so lan xuat hien : %d", tong);
getch();
}
Ghi chú : các bạn tự suy nghĩ cách cải tiến cho bài toán trên
2. Chèn chuỗi st2 vào bên phải chuỗi st1 tại vị trí k
 Đề bài
Nhập vào chuỗi st1, st2 và vị trí k. Hãy chèn chuỗi st2 vào bên phải
chuỗi st1 tại vị trí k
 Phân tích bài toán
Tìm vị trí k trong st1
Dời các vị trí k+1 trên chuỗi st1 qua bên phải strlen(st2) ký tự
st1 = “ABCABD”
st2 = “EF”

k = 3
 Bước 1 : lấy chuỗi con từ vị trí thứ 3 “ABD” nối vào “EF”
=> “EFABD”
 Bước 2 : lấy chuỗi “EFABD” nối vào “ABCABD” tại vị
trí thứ 3
 chuỗi “ABCEFABD”
 Chương trình minh họa
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{
char st1[80],st2[80];
int k;
printf("\n nhap chuoi st1 va st2: ");
fflush(stdin);
gets(st1);
fflush(stdin);
gets(st2);
printf("\n nhap vi tri k: ");
scanf("%d",&k);
if (k > 0)
{
if (k > strlen(st1))
k = strlen(st1)+1;
strcat(st2,st1+k-1);
strcpy(st1+k-1,st2);
puts(st1);
}
else

{
strcat(st2,st1);
puts(st1);
}
getch();
}

×