字符串编程问题

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、*号问题:

1、删除所有*号。

规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后字符串中的内容应当是:ABCDEFG。#include

void fun( char *a )

{int i,j=0;

for(i=0;a[i]!='\0';i++)

if(a[i]!='*') a[j++]=a[i]; /*若不是要删除的字符'*'则留下*/

a[j]='\0';

}

2、规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的*号之外,将串中其它*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。#include

void fun( char *a )

{

int i=0;

char *p=a;

while(*p&&*p=='*')

{ a[i]=*p;

i++;

p++;

}

while(*p)

{

if(*p!='*')

{a[i]=*p;i++;}

p++;

}

a[i]='\0';

}

3、删除尾部*

规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动。

#include

void fun( char *a )

{int i,j=0;

for(i=0;a[i];i++); /*求字符个数*/

for(j=i-1;j>=0;j--)

if(a[j]!=’*’) break; /*找最后一个字母*/

a[j+1]=0; /*在最后一个字母后插入结束标志*/

}

4、前导*平移到最后

规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串中的前导*号全部移到字符串的尾部。

例如,字符串中的内容为:*******A*BC*DEF*G****,移动后,字符串中的内容应当是:A*BC*DEF*G***********。在编写函数时,不得使用C语言提供的字符串函数。

#include

void fun( char *a )

{ int i=0,n=0;

char *p;

p=a;

while (*p=='*') /*判断*p是否是*号,并统计*号的个数*/

{

n++;p++;

}

while(*p) /*将前导*号后的字符传递给a*/

{

a[i]=*p;i++;p++;

}

while(n!=0)

{

a[i]='*';i++;n--;

}

a[i]='\0';

}

5、删除前后的*

规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:只删除字符前导和尾部的*号,串中字母间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中尾部*号的个数。在编写函数时,不得使用C语言提供的字符串函数。

#include

void fun( char *a, int n,int h,int e )

{

int i,j=0;

for(i=h;i

a[j++]=a[i];

a[j]='\0';

}

6、假定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了尾部的*号之外,将字符中的其它的*号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。

#include

void fun( char *a, char *p )

{

char *t=a;

for(;t<=p;t++)

if(*t!='*')

*(a++)=*t;

for(;*t!='\0';t++)

*(a++)=*t;

*a='\0';

}

7、删除中间的*

规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:除了字符串前导和尾部的*号外,将串中其它的*号全部删除。形参h已指向字符串中第一个字母,形参p指向字符串的中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。

例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****ABCDEFG********。在编写函数时,不得使用C语言提供的字符串函数。

#include

void fun( char *a, char *h,char *p )

{int i=0;

char *q;

for(q=a;q

{a[i]=*q; i++;}

for(q=h;q<=p;q++)

if(*q!='*')

{a[i]=*q;

i++;

}

for(q=p+1;*q;q++)

{a[i]=*q; i++; }

a[i]='\0';

}

8、n个*不删除

规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:使字符串的前导*号不得多于n个,若多于n个,则删除多余的*号;若少于或等n个,则不做处理,字符串中间和尾部的*号不删除。

例如,字符串中的内容为:*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为:*******A*BC*DEF*G****。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。

void fun( char *a, int n )

{int i=0;

int k=0;

char *p,*t;

p=t=a;/*开始时,p与t同时指向数组的首地址*/

相关文档
最新文档