




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编译原理课程实验报告实验地点实验时间实验名称:第一次使实验实验目的:重温C语言程序设计,重温程序设计从编辑、编译到连接的全过程,理解编译器的重要性。实验要求(详见实验讲义与实验指导书):1) 键盘输入任意字符串,统计其中数字、字母的个数并输出到终端。输入:字符串输出:(数字,SUMD);(字母,SUML)其中SUMD和SUML分别为统计出的数字和字母的个数。2) 查找给定文件中的C语言注释行,并输出其内容。输入:文本文件“test.txt”输出:文件中C语言注释行的内容(注:结果同时输出到文件)提示:注释行以“/* */”或“/ ”标示实验内容及关键步骤(算法描述(流程图或伪代码)、代码)1.
2、1、算法描述(1) 输入一个字符串(2) 使用for循环检测每个字符,判断是否为字母或数字,判断的条件: 字母:if(stri >= 'A'&&stri <= 'Z'| stri >= 'a'&&stri<='z')字母数量+; 数字:if(stri >='0'&&stri<='9')数字数量+;(3) 输出最后结果1.2、流程图描述开始输入字符串循环检测每个字符当前字符为字母字母数量+是否当前字符为数字数字数量+是
3、否i+i<字符串长度是否输出结果结束2.1、算法描述(1) 读取的模式打开一个txt的一个文件,逐行读入文件的内容(2) 检测每行中的每个字符,判断是否为/注释行或为/*/注释行(3) 判断条件/注释行:if (bufferi = '/'&&bufferi + 1 = '/'&&op =false)/当前的字符为/,下个字符为/直接输出注释行内容跳出当行的字符循环/*/注释行if (op = true)该字符是/*/内的字符, 将该字符保存到pstr的字符串中if (bufferi = '/'&&am
4、p;bufferi + 1 = '*')以下是/*/注释行的内容memcpy(pstr, p + i, 1);/拷贝当前字符op = true;/设置注释行的类型,当前为/*/的类型if (bufferi = '*'&&bufferi + 1 = '/'&&op = true) 检测到注释行的内容结束memcpy(pstr, p + i+1, 1);/拷贝当前字符continue;(4) 输出结果2.2、算法流程图统计数字和字母数量的结果截图:实验过程中遇到的问题解决办法与实验体会在这次的实验中基本没遇到什么问题,
5、只是c语言有点不熟练了*源代码*#include"iostream"#include"string"using namespace std;int main()while(1)char str100;cin>>str;int k = 0;int j = 0;for(int i = 0;i < strlen(str);i+)if(stri >= 'A'&&stri <= 'Z'| stri >= 'a'&&stri<='z
6、9;)j+;if(stri >='0'&&stri<='9')k+;cout<<"数字:"<<k<<endl;cout<<"字母:"<<j<<endl<<endl;return 0;#include"iostream"#include"string"#include"fstream"using namespace std;int main()char b
7、uffer256;bool op = false;/判断是否为/*/的注释char* pstr = NULL;/记录注释内容pstr = (char *)malloc(1024 * sizeof(char);char* ptempstr = NULL;/记录pstr的首地址ptempstr = (char *)malloc(1024 * sizeof(char);ptempstr = pstr;ifstream fileopen;fileopen.open("d:com.txt");cout << "文件内容如下:" << end
8、l;while (!fileopen.eof()fileopen.getline(buffer, 256, 'n');/读入一行到控制台char* p;/指向读取文件的buffer缓冲区的首地址p = buffer;for (int i = 0; i<strlen(buffer); i+)/遇到“/”的注释if (bufferi = '/'&&bufferi + 1 = '/'&&op =false)memset(pstr, 0, 1024);memcpy(pstr, p + i, strlen(buffer
9、) - i);cout << pstr << endl;break;/*/*/遇到“/*/”的注释if (op = true)memcpy(pstr, p + i, 1);/拷贝当前字符pstr += 1;if (bufferi = '/'&&bufferi + 1 = '*')memset(pstr, 0, 1024);ptempstr = pstr;memcpy(pstr, p + i, 1);/拷贝当前字符pstr += 1;op = true;if (bufferi = '*'&&bufferi + 1 = '/'&&op
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离职后工作交接协议
- 离职保险转移协议
- 家具设计需求调研协议
- 家族事业合伙协议章程范文
- 新闻稿撰写及发布合作协议
- 智能硬件产品开发与销售合作协议
- 建筑垃圾清运工程协议模板合同6篇
- 【正版授权】 IEC 62232:2025 EN-FR Determination of RF field strength,power density and SAR in the vicinity of base stations for the purpose of evaluating human exposure
- 2025年工程造价师考试试卷及答案
- 2025年环境科学研究生入学考试试题及答案
- 北京北大方正软件职业技术学院《实践中的马克思主义新闻观》2023-2024学年第二学期期末试卷
- 2025年陕西咸阳亨通电力(集团)有限公司招聘笔试参考题库附带答案详解
- 2025年江苏省南通市如东县实验中学中考一模英语试题(原卷版+解析版)
- 小学二年级有余数的除法口算题(共300题)
- 【水利水电】李想 案例专项班教案 04-案例专项班(四)
- 汉字文化解密学习通超星期末考试答案章节答案2024年
- 光影中国学习通超星期末考试答案章节答案2024年
- DLT 572-2021 电力变压器运行规程
- 胸痛单元建设课件
- 人教版小学英语四年级下册unit5 测试卷
- 餐饮投资入股协议书样板
评论
0/150
提交评论