字符串编程问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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同时指向数组的首地址*/