- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
为天地立心,为生民立命,为往圣继绝学,为万世开太平。——张载
c++语⾔万能源代码,《C++语⾔基础》实践参考——处理
C++源代码的程序
返回:贺⽼师课程教学链接项⽬要求
【项⽬4-处理C++源代码的程序】
在CodeBlocks等IDE中都提供了代码格式整理的功能。完成这种功能的程序,操作的数据是⽤C++写的源代码⽂件。C++源⽂件是⼀种⽂
本⽂件,可以通过程序进⾏操作。
集成开发环境(IDE)对对程序进⾏编译,操作的“数据”是源程序。编译中,要对源程序进⾏词法检查和语法检查,后续还要进⾏⽬标代码
⽣成、代码优化等⼯作。相关的技术将在《编译原理》课中学习。这些技术可以⽤在很多领域,当然也能够让我们对于编程语⾔有更深的了
解。
本项⽬将以C++源程序为操作对象,完成对源程序的⼀系列处理。各功能可以分别编制⼀个程序实现(建议⽤这种简单的⽅案),也可以将其
集成在⼀起(向着⾃⼰做出IDE努⼒)。
(1)读⼊⼀个C++程序,判断其中是否只有⼀个main()函数,输出“暂时没有发现问题”,或者“没有main()函数”,或者“不能定义多个
main()函数”;
提⽰1:简单处理,可以只⽐较判断”main()”,考虑实际上的各种可能,main后⾯的括号中有任意多个空格及void的都应该算在内。建议
按最简单的情形处理。
提⽰2:建议设计⼀个函数,将读到的代码与字符串”main()”进⾏⽐较。函数⽤于判断s1是否“包含”在读⼊的⼀⾏s2中,调⽤时,形
参s1处的实参⽤”main()”即可,这样写提升了“抽象”级别,更容易实现,对应更⾼的代码质量。
【参考解答】
#include
#include
#include
#include
usingnamespacestd;
intappear(char*s1,char*s2);
intmain()
{
charline[256];
charmain_fun[8]=main();
intmain_num=0;//初时,尚未发现
//将⽂件中的数据读⼊到字符数组中
ifstreamsourceFile(source.cpp,ios::in);//以输⼊的⽅式打开⽂件
if(!sourceFile)//测试是否成功打开
{
cerr
exit(1);
}
吾日三省乎吾身。为人谋而不忠乎?与朋友交而不信乎?传不习乎?——《论语》
while(!sourceFile.eof())
{
sourceFile.getline(line,255,\n);
main_num+=appear(line,main_fun);
if(main_num1)//多于1个,没有必要再去读取
break;
}
sourceFile.close();
//识别结论
if(main_num==0)
cout
elseif(main_num==1)
cout
else
cout
cout
return0;
}
//返回s2在s1中出现了⼏次
intappear(char*s1,char*s2)
{
intn=0,flag;
char*p,*q;
for(;*s1!=\0;s1++)
{
if(*s2==*s1)/*判断字符串中是否有和要判断的字串⾸字符相同的字符*/
{
flag=1;
p=s1;/*s1p为第⼀个相同字符的地址*/
q=s2;
for(;*q!=\0;)/*如果有则判断接下去的⼏个字符是否相同*/
{
if(*q++!=*p++)
{
天行健,君子以自强不息。地势坤,君子以厚德载物。——《周易》
flag=0;
break;
}
}
if(flag==1)n++;
}
}
return(n);
}
(2)读⼊⼀个C++程序,使程序中的所有左花括号“{”和右花括号“}”都单独占⼀⾏,新程序保存到另⼀个.cpp⽂件中,并在屏幕上显⽰
处理过的程序,显⽰时加上⾏号。
[参考解答]
#include
#include
//#include
#include
usingnamespacestd;
voidoutprogram(char*filename);
intmain()
{
charch1,ch2;
//将⽂件中的数据读⼊到字符数组中
ifstreamsourceFile(source.cpp,ios::in);//以输⼊
文档评论(0)