编写一个c/c++程序的过程大致如下:
1. 在文本编辑器中编辑(edit)代码,得到.c/.cpp的源文件
2. 将上步得到的文件通过编译器编译(compile)获得源代码,之后与所需的库代码链接(link)起来得到.exe的可执行文件
3. 运行(run)上步得到的可执行文件,查看运行结果
4. 如果运行过程中出现错误或未知中断,可能需要用调试器进行调试(debug),直到获得正确结果
那么现在我们来考虑在Windows或者Linunx环境下的情况,每一步我们可以选用不同的软件来完成任务。比较知名的文本编辑器有Vim(编辑器之神)、Emacs(神之编辑器)、sublime text 2/3(史上最优雅的编辑器)、Geany(我编不下去)等等,编译器和调试器可以选用MinGW中集成的gcc、g++和gdb。当然,也可以采用集成开发环境(IDE,Integrated Development Environment)进行编程,比如Code::Blocks、Visual Studio 2013/2015、Dev-Cpp等等。
看完上面资料之后,我们可以发现在ACM这种分秒必争的激烈比赛中,采用IDE是一种高速且有效的编程方式。所以,伟大的先知(也是编程鬼才)Zhourist曾经教导过我们“等他们配置好Vim,我早就用Code::Blocks抢到一血了!!!”
不幸地是,某些比赛中主办方可能不会提供IDE(众所周知大部分IDE属于商业软件)。我们也可以采用Vim(因为Vim是Linux中的标配)和MinGW来编写程序。讲了那么多,我们又发现在一个新的环境中,快速寻找到合适的编程软件是多么重要。接下来的问题是如何查看一台电脑的桌面中有没有Code::Blocks或Vim。并按Output中的描述输出结果
输入第一行为一个数字n,n代表测试数据组数(n<=50)。
之后每组测试数据第一行为一个数字m,m代表桌面中图标的行数(m<=10)。
接下来每一行为一串字符,代表桌面对应行图标,且长度小于1000。字符串中包含一些英文单词,每一个单词代表桌面中的一个软件名(不含扩展名),每一个单词中间用空格隔开,且长度小于50。
每一组测试数据代表一台电脑的桌面,你的任务是寻找这个桌面中有没有Code::Blocks或Vim(严格区分大小写,符号为半角符号),并按要求输出结果。
对于每组数据,按下面描述输出结果。
如果可以找到Code::Blocks和Vim,请输出“I can find Code::Blocks and Vim!!!”(不包含引号,下同)。
如果只能找到Code::Blocks,请输出“I can find Code::Blocks!!”。
如果只能找到Vim,请输出“I can find Vim!”。
否则,请输出“Are you kidding me?”
每两组数据中输出一个空行,没有多余空行。
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; char s[15][1010]; char ss[5000][100]; char a[]={"Code::Blocks"}; char b[]={"Vim"}; int main() { int t,n,i,j,k,kk; scanf("%d",&t); while(t--) { memset(ss,'\0',sizeof(ss)); memset(s,'\0',sizeof(s)); scanf("%d",&n); getchar(); k=0; for(i=0;i<n;i++) gets(s[i]); k=-1;kk=0; for(i=0;i<n;i++) { int l=strlen(s[i]); k++;kk=0; for(j=0;j<l;j++) { if(s[i][j]==' '&&s[i][j-1]!=' '&&s[i][j+1]!=' '&&s[i][0]!=' ') { k++; kk=0; } else { ss[k][kk++]=s[i][j]; } } } int aa=0,bb=0; for(i=0;i<=k;i++) { if(ss[i][0]=='C'||ss[i][0]=='V') { if(strcmp(a,ss[i])==0) aa=1; if(strcmp(b,ss[i])==0) bb=1; if(aa&&bb) break; } } if(aa&&bb) printf("I can find Code::Blocks and Vim! ! !\n"); else if(aa&&!bb) printf("I can find Code::Blocks ! !\n"); else if(!aa&&bb) printf("I can find Vim!\n"); else printf("Are you kidding me?\n"); printf("\n"); } return 0; }