收藏 分销(赏)

源程序的输入和扫描演示教学.doc

上传人:天**** 文档编号:4049307 上传时间:2024-07-26 格式:DOC 页数:6 大小:156.50KB 下载积分:6 金币
下载 相关 举报
源程序的输入和扫描演示教学.doc_第1页
第1页 / 共6页
源程序的输入和扫描演示教学.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
湖南农业大学信息科学技术学院 学 生 实 验 报 告 姓名: 林*文 年级专业班级 **级计算机*班 日期 20** 年 ** 月 **日 成绩 课程名称 编译原理 实验名称 源程序的输入和扫描 实验类型 设计性 【实验目的、要求】 理解源程序被编译器读取的过程,掌握扫描程序的方法。 【实验内容】 1.编制一个源程序的输入过程,从键盘、文件或文本框输入若干行语句,依次存入输入缓冲区(字符型数据); 2.编制一个扫描子程序,该扫描程序能删除无用的空白字符、回车字符以及其他与输入介质相关的非实质性字符,用“#”分隔单词流。 3.删除注释信息。 【实验环境】 计算机、编程环境vc++6.0 【实验步骤、过程】 1 功能描述 ⑴ 编制一个源程序的输入过程,从键盘、文件或文本框输入若干行语句,依次存入输入缓冲区(字符型数据)。 ⑵ 编制一个扫描子程序,该扫描程序能删除无用的空白字符、回车字符以及其他与输入介质相关的非实质性字符,用“#”分隔单词流。 ⑶ 删除注释信息。 2 程序结构描述 ⑴ 用freopen读取文件,然后进行读取行数跟每行的字符串长度。接着在开始跟结束先用“#”分隔。 ⑵ 遇到空格先用“#”分隔,然后判断并删除后接的空格;遇到回车字符时,直接指针直到下一位;在Pascal语言中,如果遇到“{”此注释标记择指针下移直到遇到“}”完,结束。 ⑶ 遇到字母字符时将其输出,并判断下各个字符,如果是继续输出直到不是字母字符。判断数字字符其道理与字母字符处理一样。 ⑷ 遇到运算符时,将其前后加“#”输出;遇到分隔符与运算符一样处理; 3 流程图(或原理图) 4 关键代码 #include <stdio.h> #include <string.h> char a[100][100];//存放读取文件的字符 int count=0;//全局变量用于行数 void input()//获取文件行数 { while(gets(a[count++])); } void process()//实验工程 { printf("#");//开始的# for(int i=0;i<count;i++) { int l=strlen(a[i]); for(int j=0;j<l;j++) { if(a[i][j]==' ') { printf("#"); while(j<l&&a[i][j+1]==' ') j++; }//遇到空格打#,删除后面的空格 else if (a[i][j]=='{') { for(int k=0;k<l;k++) if(a[i][j]!='}') j++; }//删除{}注释 else if(a[i][j]==';') printf("#;#");//;为每句的结束即为回车将其转译成#;#分隔 else if(a[i][j]>='0'&&a[i][j]<='9'||a[i][j]>='a'&&a[i][j]<='z'||a[i][j]>='A'&&a[i][j]<='Z') printf("%c",a[i][j]);//将数字跟字符分隔 else if(a[i][j]=='+'||a[i][j]==','||a[i][j]=='*'||a[i][j]=='-'||a[i][j]=='/') printf("#%c#",a[i][j]);//将运算符和标示符号分隔 else if(a[i][j]=='(') printf("%c#",a[i][j]); else if (a[i][j]==')') printf("#%c",a[i][j]);//将()分隔出来 else if(a[i][j]==':'&&a[i][j+1]=='=') printf("#%c%c#",a[i][j],a[i][j+1]); else if(a[i][j]==':')//将特殊的 运算符如“:=”等分隔出来 printf("#%c#",a[i][j]); } } printf("#\n");//结束的# } int main() { freopen("D:\\colin1.txt","r",stdin);//读取实验文件 input(); process(); return 0; } 【实验结果和总结】(对实验结果进行相应分析,或总结实验的心得体会,并提出实验的改进意见) 1 实验结果记录 (截图) 实验文件:(截图) 实验结果:(截图) 2 实验总结 遇到的问题 所用的时间 所用方法和手段以及心得体会 这个程序存在很多的不足和漏洞,但是我想这只是我的初步程序,应该花更多的时间去考其他的可能性,尽力的完善它。 所用的时间:程序花费2小时。 遇到的问题; 1. 在处理字母字符和数字字符的时候将每个字符分开输出,比如:#P##R#,#2##3#。 2. 程序里的输入处理语句比较困难,不会用freopen条令。 所用的方法和手段: 1. 设置循环语句,进行判断然后输出。 2. 与同学交流,并上网查询。 心得体会: 经过这次的编译原理实验,不仅仅加深并且更熟识掌握的语言。而且在遇到问题无从下手的时候,跟同学交流,还有差资料,真的是不错的选择。而且经过这次的实验,我觉得我不应该是为了完成任务而去写这个程序,而是为了学得更多的知识而努力奋斗。 指导教师签名: 20 12年 11月 10 日 【备注】
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服