Thứ Hai, 4 tháng 8, 2014

Một vài bài C

01. Đảo từ trong chuỗi:
/**/

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

char *dao(char *s)
{
int n=strlen(s);
for(int i=0;i<n/2;i++)
{
char t=s[i];
s[i]=s[n-i-1];
s[n-i-1]=t;
}
return s;
}

char *daotu(char *s)
{
int dau=0;
for(int i=0;i<=strlen(s);i++)
{
if(s[i]==' '||s[i]=='\0')
{
int n=i+dau;
for(int j=dau;j<n/2;j++)
{
char t=s[j];
s[j]=s[n-j-1];
s[n-j-1]=t;
}
dau=i+1;
}
}
return s;
}

int main()
{
char s[100];
printf(" Nhap chuoi: ");
gets(s);
printf(" Chuoi vua nhap la: '%s'",s);
printf("\n Chuoi sau khi dao tu la: '%s'",dao(daotu(s)));
getch();
}

/**/

02. Hàm trả về chuỗi sau khi in hoa các ký tự đầu từ, các ký tự còn lại được in thường.

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

char *chuanhoa(char *s)
{
for(int i=1;i<strlen(s);i++)
{
if(s[i-1]==' '&&s[i]>='a'&&s[i]<='z') // nếu nó là chữ thường và trước nó là kí tự trắng
s[i]=s[i]-32;
else if(s[i-1]!=' '&&s[i]>='A'&&s[i]<='Z') // nếu nó là chữ hoa và trước nó khác trắng.
s[i]=s[i]+32;
}
if(s[0]>='a'&&s[0]<='z') // riêng cho trường hợp s[0]
s[0]=s[0]-32;
return s;
}

void main()
{
char s[100];
printf(" Nhap chuoi: ");
gets(s);
printf(" Chuoi sau khi chuan hoa la: %s",chuanhoa(s));
getch();
}

03. Tìm 1 từ dài nhất trong chuỗi:

/* */

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

char *tim(char *s)
{
int cuoi, i=0, j=0, max=0, dem=0;
char *p=(char*)malloc(100);
for(; i<=strlen(s); i++)
{
if(s[i]!=' '&&s[i]!='\0') dem++;
else
{
if(dem>max)
{
max=dem;
cuoi=i-1;
}
dem=0;
}
}
for(i=cuoi-max+1; i<=cuoi; p[j++]=s[i++]);
p[j]='\0';
return p;
}

int main()
{
char s[100];
printf(" Nhap chuoi: ");
fflush(stdin);
gets(s);
printf(" Chuoi vua nhap la: '%s'",s);
printf("\n 1 tu co do dai lon nhat trong chuoi la: '%s'",tim(s));
getch();
}

/* */

04. Xóa chuỗi con từ vị trí k với n kí tự:

#include<stdio.h>
#include<string.h>
#include<conio.h>

char *xoa(char *s,int k,int n)
{
int d=0;
for(int i=k-1;i<=strlen(s);i++)
if(i<k-1+n&&s[i]!=NULL)
d++;
else
s[i-d]=s[i];
return s;
}

void main()
{
char s[100];
int n,k;
printf(" Nhap chuoi: ");
gets(s);
printf(" Nhap vi tri xoa: ");
scanf("%d",&k);
printf(" Nhap so ki tu can xoa: ");
scanf("%d",&n);
printf("Chuoi sau khi xoa la: %s",xoa(s,k,n));
getch();
}

05. Đếm số từ trong chuỗi:

#include<stdio.h>
#include<string.h>
#include<conio.h>

int sotu(char *s)
{
int d=0;
for(int i=0;i<=strlen(s);i++)
if(s[i]!=' '&&(s[i+1]==' '||s[i+1]==NULL))
d++;
return d;
}

void main()
{
char s[100];
printf(" Nhap chuoi: ");
gets(s);
printf(" So tu trong chuoi la: %d",sotu(s));
getch();
}




Không có nhận xét nào:

Đăng nhận xét