源程序的输入及预处理实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告一

一、实验题目:

源程序的输入及预处理

二、实验目的:

根据所学知识编写程序使其在预处理之后,将源程序中的注释与空格去掉,并将处理后的源程序输出。

三、实验内容:

(1)源代码

#include

#include

void pro_process(char *);

void main( ) //测试驱动程序

{

//定义扫描缓冲区

char buf[4048]={'\0'}; //缓冲区清0

//调用预处理程序

pro_process(buf);

//在屏幕上显示扫描缓冲区的内容

cout<

}

void pro_process(char *buf) //预处理程序

{

ifstream cinf("source.txt",ios::in);

int i=0; //计数器

char old_c='\0',cur_c; //前一个字符,当前字符。

bool in_comment=false; //false表示当前字符未处于注释中。

while(cinf.read(&cur_c,sizeof(char))){ //从文件读一个字符

switch(in_comment){

case false:

if((old_c=='/' && cur_c=='*')||(old_c=='/' && cur_c=='/')){ //进入注释

i--; //去除已存入扫描缓冲区的字符'/'

in_comment=true;

}

else {

if(old_c=='\\' && cur_c=='\n') //发现续行

i--; //去除已存入扫描缓冲区的字符'\' else {

if(cur_c>='A' && cur_c<='Z')//大写变小写

cur_c+=32;

if(cur_c =='\t' || cur_c =='\n') //空格取代TAB换行

cur_c=' ';

buf[i++]=cur_c ;

}

}

break;

case true:

if((old_c=='*' && cur_c=='/')||cur_c=='\n') //离开注释

in_comment=false;

}//end of switch

old_c= cur_c; //保留前一个字符}//end of while

buf[i++]='#'; //在源程序尾部添加字符'#'

}

(2)、运行源代码,将源程序写入source.txt文本中。

Begin/*S=2*3.14*R*R+2*3.14*R*H*/

Real r,h,s;

s=2*3.\

14*r*(r+h)//你好

End

四、实验心得:

通过此次实验,让我了解到如何设计、编制并调试预处理程序,以2.1.2源程序的预处理程序为基础,扩充预处理程序,使能其能够处理类似C语言以“//”开头的行注释。而我又加深了对c++的操作技巧。

相关文档
最新文档