1. Đếm có bao nhiêu khoảng trắng trong chuỗi.
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. Nhập vào một chuỗi, hãy loại bỏ những khoảng trắng thừa trong chuỗi
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. 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
void noichuoi(char *s1,char *s2)
{
strcat(s1,s2);
puts(s1);
}
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).
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);
}
{
for(int i=0;i<strlen(a);i++)
if(a[i]>=65 && a[i]<=90)
a[i]=a[i]+32;
puts(a);
}
5. Đổi tất cả các kí tự trong chuỗi sang chữ in hoa (không dùng hàm
struppr).
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. Viết chương trình đổi những kí tự
đầu tiên của mỗi từ thành chữ in hoa.
void chuhoadau(char *s)
{
s[0]=toupper(s[0]);
while(strstr(s," ")!=NULL)
{
s=strstr(s," ")+1;
s[0]=toupper(s[0]);
}
}
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
void chuxenke(char *a)
{
int n=strlen(a);
for(int i=0;i<n;i++)
{
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. 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
void daochuoi(char *s)
{
puts(strrev(s));
}
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)
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. 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)
int diemtu(char *a,char *b)
{
int d=0;
while(strstr(a,b)!=NULL)
{
d++;
a=strstr(a,b)+1;
}
return d;
}
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.
int vitri(char *a,char *b)
{
int d=-1;
if(strstr(a,b)!=NULL)
d=strlen(a)-strlen(strstr(a,b));
return d;
}
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.
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. 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”
void daochuoi(char *s)
{
char t[50],r[50];
int i,l;
for(i=strlen(s)-1;i>=0;i--)
{
if(s[i]==' ')
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. Viết hàm cắt chuỗi họ tên thành chuỗi họ lót và chuỗi tên.
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”
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 . 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
void timtu(char *a,char *b)
{
char *t=strstr(a,b);//vi tri xuat
hien b dau tien trong chuoi a
puts(t);
}
16. Viết hàm kiểm tra xem chuỗi có đối xứng hay không
bool ktdoixung(char *s)
{
char c[255];
strcpy(c,s);
if(strcmpi(s,strrev(c))==0)
return true;
else
return false;
}
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.
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. 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.
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--;
n--;
}
cout<<a;
}
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
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. 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
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';
}
strcat(c,s);
puts(c);
}
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.
void xoa(char *s,int vt,int n)
{
strcpy(s+vt,s+vt+n);
puts(s);
}
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.
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. Cho một xâu, nhập vào một từ ,viết chương trình, xoá từ đó trong xâu đã cho.
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. 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.
if(s[t+d]==' '&& t==0)//truong hop xoa tu dau tien
strcpy(s,s+t+d+1);
}
puts(s);
}
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.
void kituxuathiennhieunhat(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;
}
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. Nhập 1 chuỗi bất kì, liệt kê xem mỗi ký tự xuất hiện mấy lần.
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.
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;
}
for(int i=0;i<(int)strlen(s);i++)
cout<<"ki tu
"<<s[i]<<" xuat hien "<<a[i]<<"
lan\n";
}
Không có nhận xét nào:
Đăng nhận xét