Một số bài tập về chuỗi kí tự trong C++

Một số bài tập về chuỗi kí tự trong C++  
CÁCH GIẢI MỘT SỐ BÀI TẬP VỀ  
KIỂU CHUỖI  
Nguồn: http://viettruong92.blogspot.com | Góc học tập  
Để dowload vui lòng chọn Tệp-->Tải xuống dưới dạng-->chọn định dạng tải  
1. Đếm có bao nhiêu khoảng trắng trong chuỗi.  
2. Nhập vào một chuỗi, hãy loại bỏ những khoảng trắng thừa trong chuỗi.  
3. Nhập vào hai chuỗi s1 và s2, nối chuỗi s2 vào s1. Xuất chuỗi s1 ra màn  
hình  
4. Đổi tất cả các kí tự có trong chuỗi thành chữ thường (không dùng hàm  
strlwr).  
5. Đổi tất cả các kí tự trong chuỗi sang chữ in hoa (không dùng hàm struppr).  
6. Viết chương trình đổi những kí tự đầu tiên của mỗi từ thành chữ in hoa.  
7. Viết chương trình đổi chữ xen kẻ 1 chữ hoa và 1 chữ thường.  
Ví dụ: nhập ABCDEfgh đổi thành AbCdEfGh  
8. Viết chương trình đảo ngược các kí tự trong chuỗi.  
Ví dụ: nhập ABCDE, xuất ra màn hình là:EDCBA  
9. Viết chương trình tìm kiếm 1 kí tự xem có trong chuỗi không, nếu có xuất  
ra vị trí của từ chứ kí tự đó. (Vd: xâu a là “ho chi minh”: nhập ‘m’=>kết  
quả là 3)  
10. Viết 1 chương trình đếm một kư tự xuất hiện bao nhiêu lần trong  
chuỗi.(vd:xâu a nhập là “ho chi minh”, nhập ‘i’ =>kq: 2)  
11. Nhập vào chuỗi s1 và s2, cho biết vị trí xuất hiện của chuỗi s2 trong s1.  
12. Viết chương trình tìm kiếm tên trong chuỗi họ tên. Nếu có thì xuất ra là tên  
này đă nhập  
đúng, ngược lại thông báo là đă nhập sai.  
13. Viết chương đảo vị trí của từ đầu và từ cuối.  
Ví dụ: nhập “bo an co” xuat ra “co an bo”  
14. Viết hàm cắt chuỗi họ tên thành chuỗi họ lót và chuỗi tên.  
Trương Văn Việt C10CT10  
Page 1  
Một số bài tập về chuỗi kí tự trong C++  
Ví dụ: chuỗi họ tên là:”Nguyễn Văn A” cắt ra 2 chuỗi là chuỗi họ  
lót:”NguyễnVăn”,chuỗi tên là:”A”  
15. Nhập một chuỗi bất kỳ, sau đó hỏi người dùng cần tách bắt đầu từ đâu  
trong chuỗi trở về sau.  
Ví dụ: Nhập chuỗi S1:”Trường Đại Học Tôn Đức Thắng”. Người nhập muốn  
tách bắt đầu từ chữ “Tôn” thì sẽ xuất ra chuỗi “Tôn Đức Thắng” ra màn hình  
16. Viết hàm kiểm tra xem chuỗi có đối xứng hay không?.  
17. Viết hàm tra xem trong chuỗi có kí tự số hay không nếu có tách ra thành  
một mảng số riêng.  
18. Nhập một chuỗi bất kì, yêu cầu nhập 1 kí tự muốn xóa. Thực hiện xóa tất  
cả những kí tự đó trong chuỗi.  
19. Đổi các từ ở đầu câu sang chữ hoa và những từ không phải đầu câu sang  
chữ thường.  
Ví dụ: nGuYen vAN a đổi thành: Nguyen Van A  
20. Viết chương trình đảo ngược thứ tự các từ có trong chuỗi  
Ví dụ: Nhập: lap trinh bang ngon ngu c  
Xuất ra màn hình là: c ngu ngon bang trinh lap  
21. Cho chuỗi str, nhập vào vị trí vt và số kí tự cần xóa n, hăy xóa n kí tự tính  
từ vị trí vt trong chuỗi str.  
22. Nhập vào chuỗi str, chuỗi cần chèn strInsert và vị trí cần chèn vt. Hăy chèn  
chuỗi strInser vào chuỗi str tại vị trí vt.  
23. Cho một xâu, nhập vào một từ ,viết chương trình, xoá từ đó trong xâu đã  
cho.  
24. Viết chương trình tìm kiếm xem ký tự nào xuất nhiện nhiều nhất trong  
chuỗi.  
25. Nhập 1 chuỗi bất kì, liệt kê xem mỗi ký tự xuất hiện mấy lần.  
1
Trương Văn Việt C10CT10  
Page 2  
Một số bài tập về chuỗi kí tự trong C++  
int demkhoangtrang(char *s)  
{
int d=0;  
while(strstr(s," ")!=NULL)  
{
d++;  
s=strstr(s," ")+1;  
}
return d;  
}
//lam theo ham de quy  
// s=strstr(s," ");  
//if(s==NULL)  
//return 0;  
//else return 1+demkhoangtrang(s+1);  
2
void xoakhoangtrang(char *s)  
{
char *c=strstr(s," ");  
while(c!=NULL)  
{
int t=strlen(s)-strlen(c);  
for(int i=t;i<strlen(s);i++)  
s[i]=s[i+1];  
c=strstr(s," ");  
}
if(s[0]==' ')  
s=s+1; //xoa khang trang dau chuoi  
int n=strlen(s);  
if(s[n-1]==' ')  
s[n-1]='\0';//xoa khoang trang cuoi chuoi  
cout<<s; //for(int i=0;i<n;i++)  
//cout<<s[i];  
}
3
void noichuoi(char *a,char *b)  
{
Trương Văn Việt C10CT10  
Page 3  
Một số bài tập về chuỗi kí tự trong C++  
strcat(a,b);  
puts(a);  
}
4
void chuthuong(char *a)  
{
for(int i=0;i<strlen(a);i++)  
if(a[i]>=65 && a[i]<=90)  
a[i]=a[i]+32;  
puts(a);  
}
5
void chuhoa(char *a)  
{
for(int i=0;i<strlen(a);i++)  
a[i]=toupper(a[i]); //if(a[i]>=97 && a[i]<=122)  
puts(a);  
//a[i]=a[i]-32;  
}
6
void chuhoadau(char *s)  
{
s[0]=toupper(s[0]);  
while(strstr(s," ")!=NULL)  
{
s=strstr(s," ")+1;  
s[0]=toupper(s[0]);  
}
}
7
void chuxenke(char *a)  
{
int n=strlen(a);  
for(int i=0;i<n;i++)  
{
Trương Văn Việt C10CT10  
Page 4  
Một số bài tập về chuỗi kí tự trong C++  
if(i%2==0)  
if((int)a[i]>=97 && (int)a[i]<=122)  
a[i]=char((int)a[i]-32);  
if(i%2==1)  
if((int)a[i]>=65 && (int)a[i]<=90)  
a[i]=char((int)a[i]+32);  
}
puts(a);  
}
8
9
void daochuoi(char *s)  
{
puts(strrev(s));  
}
int vitri(char *a,char *b)  
{
int kq,d=0;  
if(strstr(a,b)!=NULL)  
{
kq=strlen(a)-strlen(strstr(a,b));  
for(int i=kq;i>=0;i--)  
if(a[i]==' ')  
d++;  
return d+1;  
}
else return -1;  
}
10  
int diemtu(char *a,char *b)  
{
int d=0;  
while(strstr(a,b)!=NULL)  
{
d++;  
a=strstr(a,b)+1;  
Trương Văn Việt C10CT10  
Page 5  
Một số bài tập về chuỗi kí tự trong C++  
}
return d;  
}
11  
int vitri(char *a,char *b)  
{
int d=-1;  
if(strstr(a,b)!=NULL)  
d=strlen(a)-strlen(strstr(a,b));  
return d;  
}
12  
void timten(char *a,char *b)  
{
int n=strlen(a);  
char *s;  
for(int i=n-1;i>=0;i--)  
if(a[i]==' ')  
{
s=a+i+1;  
break;  
}
if(strcmpi(s,b)==0)// strcmp==stricmp  
cout<<s;  
else  
cout<<"ban nhap sai ten\n";  
}
13  
void daochuoi(char *s)  
{
char t[50],r[50];  
int i,l;  
for(i=strlen(s)-1;i>=0;i--)  
if(s[i]==' ')  
Trương Văn Việt C10CT10  
Page 6  
Một số bài tập về chuỗi kí tự trong C++  
break;  
strcpy(r,s+i+1);//tim dctu cuoi  
s[i+1]='\0';//xau s sau khi bo tu cuoi,co khoang trang o  
cuoi xau  
l=strlen(s)-strlen(strstr(s," ")); //tim vi tri khoang  
trang dau tien trong chuoi  
strcpy(t,s+l+1);//l la xau chau cac tu chinh giua  
s[l]='\0'; //hien tai la xau chua tu dautien  
strcat(strcat(strcat(r," "),t),s);//noi cac xau lai  
voi nhau*/  
puts(r);  
}
14  
void cathoten(char *s)  
{
char *t;  
int i;  
for(i=strlen(s)-1;i>=0;i--)  
if(s[i]==' '&&s[i+1]!=' ')  
break;  
t=s+i+1;  
s[i]='\0';  
cout<<"ho lot: ";  
puts(s);  
cout<<"ho ten: ";  
puts(t);  
}
15  
void timtu(char *a,char *b)  
{
char *t=strstr(a,b);//vi tri xuat hien b dau tien  
trong chuoi a  
puts(t);  
}
Trương Văn Việt C10CT10  
Page 7  
Một số bài tập về chuỗi kí tự trong C++  
16  
bool ktdoixung(char *s)  
{
char c[255];  
strcpy(c,s);  
if(strcmpi(s,strrev(c))==0)  
return true;  
else return false;  
}
17  
void tachso(char *s)  
{
int a[100],j=0;  
for(int i=0;i<strlen(s);i++)  
if(s[i]>='0' && s[i]<='9')  
{
a[j]=s[i];//ki tu kieu char chuyen thanh kieu  
int(vd:1=>49)  
j++;  
for(int t=i;t<strlen(s);t++)  
s[t]=s[t+1];  
i--;  
}
puts(s);  
for(int i=0;i<j;i++)  
cout<<char(a[i])<<" ";  
}
18  
void xoakitu(char *a,char b)  
{
int n=strlen(a);  
for(int i=0;i<n;i++)  
if(a[i]==b)  
{
for(int j=i;j<n;j++)  
a[j]=a[j+1];  
i--;  
Trương Văn Việt C10CT10  
Page 8  
Một số bài tập về chuỗi kí tự trong C++  
n--;  
}
cout<<a;  
}
19  
void chuhoa(char *s)  
{
s[0]=toupper(s[0]);  
for(int i=1;i<strlen(s);i++) //chua tim dc cach nao toi  
uu hon  
if(s[i]==' ')  
{
s[i+1]=toupper(s[i+1]);  
i++;  
}
else  
{
if(s[i]>='A' && s[i]<='Z')  
s[i]=s[i]+32;  
}
puts(s);  
}
20  
void daothutu(char *s)  
{
char c[255];  
c[0]='\0';//ham strcat noi chuoi tai vi tri NULL  
for(int i=strlen(s)-1;i>=0;i--)  
if(s[i]==' ')  
{
strcat(strcat(c,s+i+1)," ");  
s[i]='\0';  
}
Trương Văn Việt C10CT10  
Page 9  
Một số bài tập về chuỗi kí tự trong C++  
strcat(c,s);  
puts(c);  
}
21  
void xoa(char *s,int vt,int n)  
{
strcpy(s+vt,s+vt+n);  
puts(s);  
}
22  
void chen(char *s,char *d,int vt)  
{
char c[255];  
strcpy(c,s+vt);  
strcpy(s+vt,d);  
strcat(s,c);  
puts(s);  
}
23  
void xoatu(char *s,char *c)  
{
while(strstr(s,c)!=NULL)  
{
int t=strlen(s)-strlen(strstr(s,c)),d=strlen(c);  
if((s[t-1]==' '&& s[t+d]==' ')||(s[t-1]=='  
'&& t+d==strlen(s)))//truong hop tu giua va tu cuoi  
strcpy(s+t-1,s+t+d);// s+t-1 la khoang trang  
if(s[t+d]==' '&& t==0)//truong hop xoa tu dau tien  
strcpy(s,s+t+d+1);  
}
puts(s);  
}
24  
void kituxuathiennhieunhat(char *s)  
{
int a[100],n=0;  
for(int i=0;i<(int)strlen(s);i++)  
{
Trương Văn Việt C10CT10  
Page 10  
Một số bài tập về chuỗi kí tự trong C++  
int d=1;  
for(int j=i+1;j<(int)strlen(s);j++)  
if(s[i]==s[j])  
{
d++;  
for(int k=j;k<(int)strlen(s);k++)  
s[k]=s[k+1];  
j--;  
}
a[n++]=d;  
}
int max=a[0];  
for(int i=1;i<(int)strlen(s);i++)  
if(a[i]>max)  
max=a[i];  
for(int i=1;i<(int)strlen(s);i++)  
if(a[i]==max)  
cout<<"ki tu "<<s[i]<<" xuat hien nhieu nhat la  
"<<a[i]<<" lan\n";  
}
25  
void demkitu(char *s)  
{
int a[100],n=0;  
for(int i=0;i<(int)strlen(s);i++)  
{
int d=1;  
for(int j=i+1;j<(int)strlen(s);j++)  
if(s[i]==s[j])  
{
d++;  
for(int k=j;k<(int)strlen(s);k++)  
s[k]=s[k+1];  
j--;  
}
a[n++]=d;  
}
Trương Văn Việt C10CT10  
Page 11  
Một số bài tập về chuỗi kí tự trong C++  
for(int i=0;i<(int)strlen(s);i++)  
cout<<"ki tu "<<s[i]<<" xuat hien "<<a[i]<<" lan\n";  
}
Trương Văn Việt C10CT10  
Page 12  
pdf 12 trang Thùy Anh 23520 Free
Bạn đang xem tài liệu "Một số bài tập về chuỗi kí tự trong C++", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfmot_so_bai_tap_ve_chuoi_ki_tu_trong_c.pdf