杭州达内嵌入式培训火热招生中。。。|杭州达内c++培训火热招生中
您现在的位置: 杭州达内 >>C/C++>>C++源代码--有没有main函数
C++源代码--有没有main函数
杭州达内 - C/C++ 来源:杭州达内 发布时间:2014-02-07 14:26

(1)读入一个C++程序,判断其中是否只有一个main()函数,输出“暂时没有发现问题”,或者“没有main()函数”,或者“不能定义多个main()函数”;

提示1:简单处理,可以只比较判断”main()”,考虑实际上的各种可能,main后面的括号中有任意多个空格及void的都应该算在内。建议按较简单的情形处理。
提示2:不出意外,很多同学将试图直接将读到的代码与字符串”main()”直接比较,建议做成一个函数,判断s1是否在读入的一行s2中,调用时,形参s1处的实参用”main()”即可,这样写提升了“抽象”级别,更容易实现,对应更高的代码质量。

 

[cpp]
  1. #include <fstream>   
  2. #include<iostream>   
  3. #include<string>   
  4. #include<cstdlib>   
  5. using namespace std;  
  6. int appear(char*s1,char*s2);  
  7. int main( )  
  8. {  
  9.     char line[256];  
  10.     char main_fun[8]="main()";  
  11.     int main_num=0;//初时,尚未发现   
  12.   
  13.     //将文件中的数据读入到字符数组中   
  14.     ifstream sourceFile("source.cpp",ios::in);  //以输入的方式打开文件   
  15.     if(!sourceFile)       //测试是否成功打开   
  16.     {  
  17.         cerr<<"source code read error!"<<endl;  
  18.         exit(1);  
  19.     }  
  20.     while(!sourceFile.eof())  
  21.     {  
  22.         sourceFile.getline(line,255,'\n');  
  23.         main_num+=appear(line,main_fun);  
  24.         if (main_num>1)  //多于1个,没有必要再去读取   
  25.             break;  
  26.     }  
  27.     sourceFile.close();  
  28.   
  29.     //识别结论   
  30.     if(main_num==0)  
  31.         cout<<"error: no main().";  
  32.     else if (main_num==1)  
  33.         cout<<"right: a main() be exist.";  
  34.     else  
  35.         cout<<"error: more than one main().";  
  36.     cout<<endl;  
  37.     return 0;  
  38. }  
  39.   
  40. //返回s2在s1中出现了几次   
  41. int appear(char*s1,char*s2)  
  42. {  
  43.     int n=0,flag;  
  44.     char *p,*q;  
  45.     for(; *s1!='\0'; s1++)  
  46.     {  
  47.         if (*s2==*s1) /*判断字符串中是否有和要判断的字串首字符相同的字符*/  
  48.         {  
  49.             flag=1;  
  50.             p=s1 ; /*s1 p 为个相同字符的地址*/  
  51.             q=s2;  
  52.             for(; *q!='\0';) /*如果有则判断接下去的几个字符是否相同*/  
  53.             {  
  54.                 if (*q++!=*p++)  
  55.                 {  
  56.                     flag=0;  
  57.                     break;  
  58.                 }  
  59.             }  
  60.             if (flag==1) n++;  
  61.         }  
  62.   
  63.     }  
  64.     return(n);  
  65. }  

相关标签:达内 C++培训(14)
 达内简介 达内就业 达内课程 联系我们 网站导航
杭州达内为上软件有限公司 Copyright @ 2007-2012 版权所有 苏ICP备10118953号-1
分享到: