苏州大学操作系统实验1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验一Linux系统实验目的:(1)熟悉Linux操作系统,并尝试在Linux环境下编程。(2)使用vi编辑器,了解用C语言编写文本处理程序的具体过程。实验要求:(1)根据报告册上的提示进行操作,创建自己的目录,以及输入编译和执行C程序。(2)使用C语言编写一个词频(限英文文章)统计程序,使之能够给出各个单词在输入文件中的出现次数。(3)使用C语言编写一个反向打印程序,使之能够按与输入文件中文本行相反的次序来打印(即后出现的文本行先打印)。问题分析:1.1实验没有具体要求英语文章是从文件中读出,还是直接由用户从屏幕上输入一篇,因此要根据自己的情况确定读取方式。1.2统计每个单词出现的次数及频率。1.3将结果输出到屏幕上,要解决如何不重复输出相同单词出现的频率。1.4如何把用户输入的文本行以相反的顺序输到屏幕上的算法。实验程序清单:#includestring.h#includestdio.hvoidmain(){charstr[500][26];//定义一个二维字符数组存放单词constcharstr1[4]=000;//定义一个const变量,用于停止输入constcharstr2='';//定义一个const变量,用于初始化二维数组intnum[500];//定义一个整型数组,用于单词出现频率的计数intmark[500];//定义一个整型数组,用来标记已出现过的单词inti,j,m,x;intlen;doubleq[500];//定义一个浮点型数组,用来存放出现频率的数值again:m=0;j=0;i=0;x=0;//对m,j,i,x进行初始化for(m=0;m500;m++)//对num,mark,q数组初始化{num[m]=0;mark[m]=0;q[m]=0;}for(m=0;m500;m++)//对二维数组str进行初始化{strcpy(str[m],&str2);}printf(请输入英文文章(单词数限制在500以内,每个单词不大于25个字符)\n);//对用户的引导语句printf(输入“000”代表文章输入终止!\n);//对用户的引导语句for(m=0;m500;m++)//使用for循环,将用户输入的单词依次放入二维数组{scanf(%s,str[m]);if(strcmp(str[m],str1)==0)//直到用户输入000,结束输入break;}for(i=0;im;i++)//使用两层for循环将用户输入的单词出现次数放入num数组{for(j=0;jm;j++){if(strcmp(str[i],str[j])==0){if(ji)//当j大于i时{mark[i]=1;//标记此时的mark}num[i]++;//当两个单词相同,num[i]加1}}q[i]=(double)num[i]/m;//获得单词出现的频率}for(i=0;im;i++)//在屏幕上输出结果{if(mark[i]==0)//当标记为0时{printf(%s出现%d次,str[i],num[i]);//打印结果printf(频率为%lf\n,q[i]);}}printf(重新输入按1,其它键退出程序);//用户输入1时,程序结束;其他任意键继续操作scanf(%d,&x);switch(x)//使用switch语句进行判断{case1://当检测到x=1时gotoagain;//运用goto语句返回again操作break;default://否则结束程序return;}}(2)includestdio.hintmain(){intch=0;//初始化为0,不然存储字符数据时可以出现问题charcharacter[1000];//定义一个字符数组inti=0;//用i来对字符计数printf(请输入需要转换的文本内容:\n);//提示语scanf(%c,&ch);while(i1000&&ch!='\n')//ch读取到换行符的话就表明这一行的结束{character[i++]=ch;//把用户输入的字符变量赋给数组characterscanf(%c,&ch);}i--;printf(转换后的文本:);//提示语while(i=0)//当i大于等于0时,字符以倒序输出到屏幕上printf(%c,character[i--]);printf(\n);return0;}运行结果词频统计结果如下:

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功