求数据结构 文章编辑**的源程序(用C语言编写)
文章编辑**
功能:输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
参考答案:给你实现了要求得功能函数,由于对你问题得一页得概念不理解,用一字符指针代替文章来操作,约定以'\0'来结束,下面所有得函数都是接受1个字符指针来进行操作,参数传入传出参照微软格式.
----------------------------------
/*
统计文章*pt中英文字母得数量*pNum 空格数*pNumSpace,总字数*pNumAll
返回1成功,0失败
*/
int Statistic(char* pt,int *pNum,int *pNumSpace,int *pNumAll)
{
char* pcur=pt;
*pNum=*pNumSpace=*pNumAll=0;
while(*pcur!='\0')
{
if((*pcur>0x40&&*pcur<0x5B)||(*pcur>0x60&&*pcur<0x7B))*pNum++;
if(*pcur==0x20)*pNumSpace++;
pNumAll++;
pcur++;
}
return 1;
}
/*
统计某一字符串*p在文章*pt中出现得次数,
返回次数
*/
int GetTime(char* pt,char* p)
{
char *a=pt,*temp=a,*b=p;
int num,isok=0;
while(*a!='\0')
{
while(*b!='\0')
{
temp=a;
b=p;
if(*(temp++)==*(b++))
isok=1;
else
isok=0;
}
if(isok)num++;
a++;
}
return num;
}
/*
删除*pt中第一次出现的字串*p
成功返回1,否则0
*/
int DelString(*pt,*p)
{
char *a=pt,*temp=a,*b=p;
int num,isok=0;
while(*a!='\0')
{
temp=a;
b=p;
while(*b!='\0')
{
if(*(temp++)==*(b++))
isok=1;
else
isok=0;;
}
if(isok)
{
while(*temp!='\0'&&(*(a++)=*(temp++))
*a='\0';
return 1;
}
a++;
}
return 0;
}