用do-while语句遍历链表,同时用for循环和if语句找出指定字符串在文章中出现的次数;
用printf语句输出指定字符串在文章中出现的总次数,调用子函数menu().
(9)删除字符串的函数:void DelString(LINE * &head)
先创建一个delstringword,其中包含两个字符串char *s和char *str,用*s
表示输入的字符串,*str表示要删除的字符。这个函数的功能是找到字符串s在字符串中出现的位置并删除该字符串。
定义字符串的删除函数DelString(),用do-while语句遍历链表,语句中再套
用if语句,并调用delstringword()进行删除. (10)主函数:void main()
用switch语句实现功能的调用。一个数字对应一个操作。 3.2 核心代码:
#include
char *data; struct line *next;
}LINE; //创建链表,向里面输入文本数据 //向屏幕输出文字 void OutPut(LINE * &head) {
LINE *p=head;
printf(\输入的文章为:\\n\); do {
printf(\,p->data); }
while((p=p->next)!=NULL); //遍历链表
printf(\); }
void menu() {
printf(\文章编辑**********************\\n\); printf(\); printf(\统计文章中全部英文字母数 \\n\); printf(\统计文章中空格个数 \\n\);
5
printf(\统计文章中数字个数 \\n\); printf(\统计文章总字数 \\n\); printf(\统计指定字符串在文中出现的次数 \\n\);
printf(\删除指定字符串 \\n\); printf(\);
}
void Create(LINE * &head) {
printf (\请输入一页文章,以Ctrl+E(^E)为结尾(每行最多输入80个字符):\\n\);
LINE *p=new LINE; //首先为链表建立一个附加表头结点 head=p; //将付给表头指针 char tmp[100]; while(1) {
gets(tmp); //输入字符串 if(strlen(tmp)>80) { printf(\每行最多输入80个字符!\);
break;
}
if(tmp[0]==5)break; //如果发现输入^E,则退出输入
p=p->next=new LINE;
p->data=new char[strlen(tmp)+1]; //为结点分配空间 strcpy(p->data,tmp); if(tmp[strlen(tmp)-1]==5) //除去最后一个控制符^E
{
p->data[strlen(tmp)-1]='\\0'; break; } }
p->next=NULL; //最后一个指针为空 head=head->next; OutPut(head); printf(\); menu(); }
//统计英文字母数
void CountLetter(LINE * &head) { LINE *p=head; int count=0;
do
{
int Len=strlen(p->data); //计算当前data里的数据元素个数
6
for(int i=0;i if((p->data[i]>='a'&&p->data[i]<='z')||(p->data[i]>='A'&&p->data[i]<='Z')) //计算字母数 count++; } while((p=p->next)!=NULL); //遍历链表 printf(\全部英文字母数%d \\n\, count);//返回文章里 printf(\); menu(); } void CountNumber(LINE * &head) { LINE *p=head; int count=0; do { int Len=strlen(p->data); for(int i=0;i if(p->data[i]>=48 && p->data[i]<=57)count++; } while((p=p->next)!=NULL); printf(\文章中数字个数: %d \\n\,count); printf(\); menu(); } void CountSpace(LINE * &head) { LINE *p=head; int count=0; do { int Len=strlen(p->data); for(int i=0;i while((p=p->next)!=NULL); printf(\空?格?个?数oy: %d \\n\, count); printf(\); menu(); } void CountAll(LINE * &head) { LINE *p=head; 7 int count=0; do { count+=strlen(p->data); } while((p=p->next)!=NULL); printf(\文章总字数: %d \\n\,count); printf(\); menu(); } void FindString(LINE * &head) { LINE *p=head; int count=0; int len1=0; int len2; int i,j,k; char str1[20]; printf(\); printf(\请输入要统计的字符串:\); scanf(\,str1); len2=strlen(str1); do { len1=strlen(p->data); for(i=0;i k=0; for(j=0;j if(p->data[i+j]==str1[j]) k++; if(k==len2) {count++;i=i+k-1;} } } } while((p=p->next)!=NULL);//遍历链表 printf(\该字符串在文中出现的次数: %d \\n\,count); printf(\); menu(); } //删除指定的字符串 void delstringword(char *s,char *str) 8 //*s为输入的字符串,*str为将要删除的字符 { char *p=strstr(s,str); //从字符串中寻找str第一次出现的位置 char tmp[80]; int len=strlen(s); int i=len-strlen(p); int j=i+strlen(str); int count=0; for(int m=0;m strcpy(s,tmp); } void DelString(LINE * &head) { LINE *p=head; char str[20]; printf(\请输入要删除的某一字符串:\); scanf(\,str); do { if(strstr(p->data,str)!=NULL)delstringword(p->data,str); } while((p=p->next)!=NULL); printf(\删除指定字符串后的文章为a: \\n\); OutPut(head); printf(\); menu(); } void main() { LINE *head; int i; Create(head); for(;;) { printf(\请输入到中任意一个数字:\\n\); scanf(\,&i); switch(i) { case 1:CountLetter(head);break; case 2:CountSpace(head);break; 9 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库文章编辑程序设计报告(2)在线全文阅读。
相关推荐: