C语言程序课程设计实验报告用一个字符数组保存一个英文句子.docx
- 文档编号:29779946
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:24
- 大小:125.19KB
C语言程序课程设计实验报告用一个字符数组保存一个英文句子.docx
《C语言程序课程设计实验报告用一个字符数组保存一个英文句子.docx》由会员分享,可在线阅读,更多相关《C语言程序课程设计实验报告用一个字符数组保存一个英文句子.docx(24页珍藏版)》请在冰豆网上搜索。
C语言程序课程设计实验报告用一个字符数组保存一个英文句子
河南城建学院
《高级语言程序设计》课程设计报告
设计题目:
用一个字符数组保存一个英文句子
专业:
计算机科学与技术
班级:
设计人员:
指导教师:
计算机科学与工程学院
2015年06月25日
一、课程设计题目
13.用一个字符数组保存一个英文句子。
二、设计要求
1)删除该英文句子中的前导空格,后导空格,并删除句子中多余的空格(单词之间只留一个空格);
2)统计该句子中,单词出现的频率;
3)查找并替换某个单词。
三、程序介绍
1.去除字符组中间空格。
voidzhongjian(chara[])
{
inti,j,k;/*定义整形变量i,j,k。
i,j作为函数内循环的控制变量。
定义k用于字符组长度存放。
*/
k=strlen(a);/*将字符组a的长度存放于k中。
(字符组a即待处理的字符组)*/
for(i=0;i */ if(a[i]! ='' i++;/*条件控制,若当前字符不为空格,跳到下一位再进行循环。 */ elseif(a[i]=='') if(a[i+1]=='')/*当连续出现两个空格,需要去除一个空格*/ { k=k-1;/*字符串总长度减一。 */ for(j=i;j a[j]=a[j+1];/*从第一个空格开始,后续所有字符前提一位,即去除第一个空格。 */ a[k]='\0';/*去除空格后字符组长度减一,原字符组最后一位需要变为\0。 */ continue;/*去除空格后,继续从该位检测,直至不符合该循环条件。 */ } else i++;/*若不是连续两个空格,则跳到下个字符再进行循环。 */ printf("%s\n",a);/*输出处理后的字符组。 */ } 2.导入及导出函数 voiddaoru() { FILE*p;/*定义一个指针函数,用于指向需要打开的文件。 */ charb[30];/*定义一个字符型组,用于存放导入文件地址。 */ system("cls");/*清屏,使界面更美观。 */ printf("∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\n"); printf("∷∷\n"); printf("∷请输入要打开的文件名∷\n"); printf("∷∷\n"); printf("∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\n"); scanf("%s",b);/*得到导入文件名,存放在b里*/ p=fopen(b,"r");/*将导入文件以只读方式打开*/ if(p==NULL) { printf("∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\n"); printf("∷文件不存在! 请重新输入文件名! ∷\n"); printf("∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\n"); system("pause"); daoru();/*若文件打开出错,则提示打不开,然后重新运行导入函数*/ } else fgets(a,1000,p);/*在p所指向的文件(即导入文件)中读入一个最长为999字符的字符串,并在最后加一个’\0’字符,然后存放于字符组a中*/ } voiddaochu() { intb;/*定义整形变量b,用于选择操作*/ FILE*p2;/*定义一个指向文件的指针变量*/ charc[30];/*定义一个字符型组,用于存放导出文件地址*/ printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("※请输入要保存到哪个文件? ※\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); scanf("%s",c);/*得到导出文件名,存放在c里*/ p2=fopen(c,"w+");/*将导出文件以读写方式打开*/ fputs(a,p2);/*将a里的字符串存放在p2指向的地址里*/ fclose(p2);/*关闭文件,防止数据丢失*/ printf("导出成功! 文件保存在%s\n回到主界面 (1)? 退出程序 (2)? \n",buf); fflush(stdin);/*用于清除输入缓存防止下次用scanf输入时出现错误*/ scanf("%d",&b); if(b==1) zhujiemian(); elseif(b==2) tuichu();/*根据用户输入进行跳转*/ } 四、算法流程图 1.算法图 2.算法说明 此程序通过函数实现了对文章的处理,,每个环节都可以用函数进行实现,使用者可以用函数实现对文章的输入、导入以及去除空格,统计,保存等各种操作的实现。 五、程序设计过程中遇到的问题及解决过程 1.函数比较长,经常出现没有定义就使用一个变量,比较容易发现及修改。 2.问题解决不彻底,例如去空格,最开始能去除,可是去除不完全,最后有重新整理想法,编写程序。 3.写的快就会出现函数字符写错,例如printf写成prntf,也很容易发现。 4.系统库里的函数理解不清晰,使用起来系统报错。 最后熟悉了就没有这样的我问题了。 5.最开始考虑问题不全面,就会出现子函数单独运行没问题,放在一起就出问题,最后合在一起时一点点改动。 六、运行截图 1.欢迎界面 2.主界面 3.输入文章 4.导入文章 5.处理选择界面 6.统计界面 7.替换界面 8.导出文章 9.退出程序 七、参考文献 【1】谭浩强,《C语言程序设计》(第四版)[M],清华大学出版社,2008年 八、源程序 #include #include #include #include #include voidsan(); voider(); voidyi();/*欢迎界面子函数*/ voidzhujiemian();/*主界面函数*/ voidshuru();/*输入文章函数*/ voiddaoru();/*导入文章函数*/ voidqiandao(chara[]);/*去除前导空格函数*/ voidhoudao(chara[]);/*去除后导空格函数*/ voidzhongjian(chara[]);/*去除中间多余空格函数*/ voidtongji(chara[]);/*统计单词频率函数*/ voidtihuan(chara[]);/*替换单词函数*/ voiddaochu();/*导出函数*/ voidxuanze();/*选择及跳转函数*/ voidtuichu();/*退出界面函数*/ chara[999];/*用于文章存储字符组*/ charbuf[200];/*用于存储文章导出路径*/ intmain() { inth; getcwd(buf,sizeof(buf)); system("color0a"); for(h=4;h>0;h--) { system("cls"); if(h==4) { printf("\n\n\n\n"); printf("\t\t★★★★★★★★★★\n"); printf("\t\t★★★★★★\n"); printf("\t\t★★★★★★★\n"); printf("\t\t★欢迎★使用★\n"); printf("\t\t★★★\n"); printf("\t\t★★★★\n"); printf("\t\t★★★★\n"); printf("\t\t★★\n"); printf("\t\t加载中....\n"); Sleep(1000); } elseif(h==3) san(); elseif(h==2) er(); else yi(); Sleep(700); } zhujiemian(); return0; } voidsan() { system("cls"); printf("\n\n\n\n\n"); printf("\t\t\t\t\3\3\3\3\3\3\3\3\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\3\3\3\3\3\3\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\3\3\3\3\3\3\3\3\n"); } voider() { system("cls"); printf("\n\n\n\n\n"); printf("\t\t\t\t\3\3\3\3\3\3\3\3\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\3\3\3\3\3\3\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\3\3\3\3\3\3\3\3\n"); } voidyi() { system("cls"); printf("\n\n\n\n\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\n"); printf("\t\t\t\t\3\3\3\3\3\3\n"); } voidzhujiemian() { intb; system("cls"); printf("\3\3\3\3\3\3\3\3\3\3\3\3\n"); printf("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n"); printf("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n"); printf("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n"); printf("\3\3\3\3\3\3\3\3\3\3计科\3一班\3\3\3\3\3\3\3\3\3\3\n"); printf("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n"); printf("\3\3\3\3\3\3\3\3\3\3\3金\3航\3\3\3\3\3\3\3\3\3\3\n"); printf("\3\3\3\3\3\3\3张勇\3乐乐\3\3\3\3\3\3\n"); printf("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n"); printf("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n"); printf("\3\3\3\3\3\3\3\3\3\3\3\n"); printf("\3\3\3\3\3\3\3\n"); printf("\3\3\3\n"); printf("\3\n"); printf("◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n"); printf("◆1.输入文章◆\n"); printf("◆2.导入文章◆\n"); printf("◆3.退出程序◆\n"); printf("◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n"); scanf("%d",&b); switch(b) { case (1): shuru();qiandao(a);houdao(a);zhongjian(a);xuanze();break; case (2): daoru();qiandao(a);houdao(a);zhongjian(a);xuanze();break; case(3): tuichu(); } } voidshuru() { system("cls"); printf("⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙\n"); printf("⊙⊙\n"); printf("⊙请输入文章: ⊙\n"); printf("⊙⊙\n"); printf("⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙\n"); fflush(stdin); gets(a); } voidxuanze() { intx; system("cls"); printf("⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙\n"); printf("⊙处理后文章⊙\n"); printf("⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙\n"); printf("\n"); printf("%s\n",a); printf("\n"); printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n"); printf("〓1.返回主菜单〓\n"); printf("〓2.统计〓\n"); printf("〓3.替换〓\n"); printf("〓4.导出〓\n"); printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n"); printf("请输入您的选择: "); scanf("%d",&x); switch(x) { case (1): a[0]='\0';zhujiemian();break; case (2): tongji(a);break; case(3): tihuan(a);break; case(4): daochu(); } } voiddaoru() { FILE*p; charb[30]; system("cls"); printf("∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\n"); printf("∷∷\n"); printf("∷请输入要打开的文件名∷\n"); printf("∷∷\n"); printf("∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\n"); scanf("%s",b); p=fopen(b,"r"); if(p==NULL) { printf("∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\n"); printf("∷文件不存在! 请重新输入文件名! ∷\n"); printf("∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\n"); system("pause"); daoru(); } else fgets(a,1000,p); } voidqiandao(chara[]) { charc; inti,j,k=0,n; n=strlen(a); for(i=0;(c=a[i])! ='\0';i++) { if(c=='') k=k+1; else break; } n=n-k; for(j=0,i=k;j { a[j]=a[i]; } a[n]='\0'; } voidhoudao(chara[]) { intj,k=0,n; n=strlen(a); for(j=n-1;a[j]! ='\0';j--) { if(a[j]=='') k=k+1; else break; } n=n-k; a[n]='\0'; } voidzhongjian(chara[]) { inti,j,k; k=strlen(a); for(i=0;i if(a[i]! ='') i++; elseif(a[i]=='') if(a[i+1]=='') { k=k-1; for(j=i;j a[j]=a[j+1]; a[k]='\0'; continue; } else i++; printf("%s\n",a); } voidtongji(chara[]) { inti,j=0,k=0,x; charm; chary[30],z[30]; printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("※请输入需要统计的单词※\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); scanf("%s",y); for(i=0;i<(strlen(a)+1);i++) if(a[i]! =''&&a[i]! =','&&a[i]! ='.'&&a[i]! ='! '&&a[i]! ='? '&&a[i]! =';'&&a[i]! ='\0') {z[j]=a[i];z[j+1]='\0';j++;} else {j=0; if(strcmp(y,z)==0) { k=k+1; z[0]='\0'; } } printf("%s这个单词出现了%d次! \n",y,k); system("pause"); xuanze(); } voidtihuan(chara[]) { inti,j=0,k=0,d,b,c; intx; chary[30],z[30],m[30],x1[999]; printf("请输入需要被替换的单词\n"); scanf("%s",y); printf("\n"); printf("请输入需要替换成什么单词? \n"); scanf("%s",m); for(i=0;i<(strlen(a)+1);i++) if(a[i]! =''&&a[i]! =','&&a[i]! ='.'&&a[i]! ='! '&&a[i]! ='? '&&a[i]! =';'&&a[i]! ='\0') {z[j]=a[i];z[j+1]='\0';j++;} else {j=0; if(strcmp(y,z)==0) { strcpy(x1,a); d=strlen(m)-strlen(y); for(b=0;b<999-i;b++) a[i+d+b]=x1[i+b]; for(c=0;c a[i-strlen(y)+c]=m[c]; b=0;c=0;x1[0]='\0';z[0]='\0'; } } printf("替换后的文章为\n"); printf("%s\n",a); system("pause"); xuanze(); } voiddaochu() { intb; FILE*p2; charc[30]; printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("※请输入要保存到哪个文件? ※\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); scanf("%s",c); p2=fopen(c,"w+"); fputs(a,p2); fclose(p2); printf("导出成功! 文件保存在%s\n回到主界面 (1)? 退出程序 (2)? \n",buf); fflush(stdin); scanf("%d",&b); if(b==1) zhujiemian(); elseif(b==2) tuichu(); } voidtuichu() { system("cls"); printf("\n\n\n\n"); printf("\t\t \\\\\\\|///\n"); printf("\t\t \\\\ .-.- //\n"); printf("\t\t. ( .@.@ )\n"); printf("\t\t+-------oOOo-----(_)-----oOOo---------+\n"); printf("\t\t| |\n"); printf("\t\t| 谢谢使用 |\n"); printf("\t\t| |\n"); printf("\t\t+---------------------Oooo--------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 课程设计 实验 报告 一个 字符 数组 保存 英文 句子