资源描述:
《c语言开放实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、浙江工商大学信息学院开放实验报告课程:深入程序设计实践地点:信息楼机房日期:2014.12.22学号:姓名:班级:1.题目描述:题目描述输入两个字符行,从中找出在两个字符行中都出现的最长的英文单词。约定英文单词全由英文字母组成,其它字符被视作单词之间的分隔符。输入有多组数据,每组输入两个字符行。输出输出最长公共英文单词。若不存在,则输出”Nocommonword!”。样例输入Hi,SteveJobs.Howareyou?Fine.Therearelotsoforiginalideasaboutn
2、ewiphoneinmymind.样例输出are输入字符串用函数gets()。 2.问题分析:参见代码3.解题思路和步骤:参见代码4.实现代码:#include#includeintmain(){chara[100],b[100],*p1,*p2,*p3,*p4,*temp;//定义两个字符串数组intln_a,ln_b,s=0,count1=0,count2=0,i,j,max=0;gets(a);//输入这两个字符串gets(b);ln_a=strlen
3、(a);ln_b=strlen(b);//计算这两个字符串的长度p1=a;p3=b;for(i=0;i='A'&&a[i]<='Z')
4、
5、(a[i]>='a'&&a[i]<='z')){p1=p1+i;//用指针p1记下字符串a中单词的首字母的地址while((a[i]>='A'&&a[i]<='Z')
6、
7、(a[i]>='a'&&a[i]<='z'))//这个while循环用来找出单词,当字符不是字母时循环结束。{i++;//i++用来看下一个字符是否为字
8、母count1++;//记下测试了几个字符}p2=p1+count1-1;//用指针p2记下单词最后一个字母的地址,。for(j=0;j='A'&&b[j]<='Z')
9、
10、(b[j]>='a'&&b[j]<='z')){p3=p3+j;//用指针p3记下字符串b中单词的首字母的地址while((b[j]>='A'&&b[j]<='Z')
11、
12、(b[j]>='a'&&b[j]<='z'))//这个while循环用来找出单词,当字符不是字母时循环结束。{j++;
13、count2++;}p4=p3+count2-1;//用指针p4记下单词最后一个字母的地址,。if(count1==count2)//如果a中单词与b中单词长度相等,循环继续。{for(p1,p3;p1<=p2;p1++,p3++)//进行两个单词的字母比对。{if(*p1==*p3)//每当有一个单词相同,s就++s++;}if(s==count1&&s>max)//如果s==count1,就意味着两个单词完全相等,{max=s;//max是相同单词长度,如果s>max就进行替换temp=p1
14、;//同时记下单词首字母地址,以便输出。}j=ln_b+1;//一旦找到单词,就不必在b字符串中继续找下一个单词了。}}}s=j=count1=count2=0;//开始在a中找下一个单词,S,j,count1,count2都要归零。/*for(p1;p1<=p2;p1++)printf("%c",*p1);printf("");count1=0;*/}}printf("%d",max);if(max>0){for(i=0,temp;i15、p+i));printf("");}if(max==0)printf("Nocommonword!");return0;}5.运行结果:Hi,SteveJobs.Howareyou?Fine.Therearelotsoforiginalideasaboutnewiphoneinmymind.are6.小结:以上为实验报告的格式要求!作业上交要求:命名:班级(如:计科1401)+学号(全)+姓名.doc联系方式:cxliu@mail.zjgsu.edu.cn656010