编写一个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?”
每两组数据中输出一个空行,没有多余空行。
4
1
Code::Blocks Vim
2
Code::Blocks
vim QQ
1
Vim
1
QQ hearthstone
I can find Code::Blocks and Vim!!!
I can find Code::Blocks!!
I can find Vim!
Are you kidding me?