因为找工作,复习JAVA的同时不得不复习一下C/C++,数据结构什么的,得有个编译运行C/C++程序的IDE,早就知道CDT的大名,前几天寻找网上教程给安装了,呵呵,在熟悉的Eclipse界面下编译运行C/C++,感觉真是惬意呀。
废话少说,直奔主题吧。
一.必备软件
1. JDK
包含Eclipse安装的必备JRE。我的版本是j2sdk1.4.2_04.环境配置省略...
2. Eclipse
主题框架软件,软件界神来之物,官网
http://www.eclipse.org,下载地址
http://download.eclipse.org/eclipse/downloads/,下载eclipse sdk版本的,解压缩即可。我的版本是Eclipse SDK 3.1.1。
3.C/C++ Development Toolkit
CDT,Eclipse插件。官方下载
http://www.eclipse.org/cdt/,历史版本下载
http://www.eclipse.org/cdt/index_old.html,下载 org.eclipse.cdt-*.zip,解压缩到eclipse目录下即可。我的版本是 org.eclipse.cdt-3.0.2。
4.MinGW
C/C++的编译器,该工具是一组可免费获取、自由分发的特定于 Windows 的头文件和导入库,这些头文件和导入库与 GNU 工具集结合在一起。下载地址
http://prdownloads.sourceforge.net/mingw/,下载可执行文件安装即可。我的版本是MinGW-3.1.0-1。
二.环境变量配置
主要是MinGW的环境变量的配置,要告诉系统从哪里可以找到MAKE。假如MinGW安装在D:/MinGW目录下,新建一个CDTCon.bat的批处理文件,内容如下:
set path=%path%;D:/MinGW/bin
set LIBRARY_PATH=D:/MinGW/lib
set C_INCLUDE_PATH=D:/MinGW/include
set CPLUS_INCLUDE_PATH=D:/MinGW/include/c++/3.2.3;d:/MinGW/include/c++/3.2.3/mingw32;D:/MinGW/include/c++/3.2.3/backward;D:/MinGW/include
set LIBRARY_PATH=D:/MinGW/lib
set C_INCLUDE_PATH=D:/MinGW/include
set CPLUS_INCLUDE_PATH=D:/MinGW/include/c++/3.2.3;d:/MinGW/include/c++/3.2.3/mingw32;D:/MinGW/include/c++/3.2.3/backward;D:/MinGW/include
执行批处理文件,就可以加入到系统的环境变量中。
注意:找到你安装MinGW的目录,将MinGW/bin/mingw32-make.exe这个文件,改名为make.exe,否则编译程序的时候会提示错误。
三.在Eclipse中使用
打开Eclipse之后,就可以看到C/C++ Perspective了,New Project的栏目中也多了C和C++的选项了,这样就可以创建C/C++程序了。
编译运行C/C++的Bulid Command稍有不同,C对应的是gcc 文件名.c -g -o run,而C++对应的是g++ 文件名.c -g -o run.编译之后,会生成run.exe,双击就可以看到执行结果。当然,为了避免一闪而过,C程序可以在结尾部分加一个scanf语句,C++程序可以加一句,system("pause").
编译运行C/C++的Bulid Command稍有不同,C对应的是gcc 文件名.c -g -o run,而C++对应的是g++ 文件名.c -g -o run.编译之后,会生成run.exe,双击就可以看到执行结果。当然,为了避免一闪而过,C程序可以在结尾部分加一个scanf语句,C++程序可以加一句,system("pause").
注意:为了避免启动Eclipse后indexer一直占用CPU而且无法停止,可以将indexer功能关闭 windows-->perferences--> c/c++-->indexer 选择No Indexer.
四.做两个C/C++的题目测试一下吧。
1.求一个int型变量二进制表示中1出现的个数
//binaryOpe.c
int main() {
int para = 9999;
char s;
printf("NumOnesInBinary = %d/n", NumOnesInBinary(para));
scanf("%d",&s);
}
int para = 9999;
char s;
printf("NumOnesInBinary = %d/n", NumOnesInBinary(para));
scanf("%d",&s);
}
int NumOnesInBinary(int number)
{
int numOnes = 0;
while(number)
{
number = number & (number - 1);
++numOnes;
}
{
int numOnes = 0;
while(number)
{
number = number & (number - 1);
++numOnes;
}
return numOnes;
}
}
2.一个射击运动员打靶,靶一共有10环,连开10枪,打中90环的可能性有多少种?请用递归算法编程实现。
//gang1090.cpp
#include <iostream>
using namespace std;
int sum;
int store[10];
void Cumput(int score, int num)
{
if(score < 0 || score > (num+1)*10 ) //次数num为0~9
return;
if(num == 0)
{
store[num] = score;
++sum;
return;
}
for(int i = 0; i <= 10; ++i)
{
store[num] = i;
Cumput(score - i, num - 1);
}
}
int main(int argc, char* argv[])
{
Cumput(90, 9);
cout<<"总数:"<<sum<<endl;
system("pause");
return 0;
system("pause");
return 0;
}
另类简单实现:C(9,19) = 92378,10个罐子,9个隔栏,19个位置放9个隔栏。
另类简单实现:C(9,19) = 92378,10个罐子,9个隔栏,19个位置放9个隔栏。